private void RefreshPortPairs()
        {
            ObservableCollection <Com0comPortPair> newpairs = Com0comSetup.GetPortPairs();

            //first we need to delete any ports that don't appear in the new list
            foreach (var expair in PortPairs.ToList())
            {
                var newpair = (from p in newpairs where p.PairNumber == expair.PairNumber select p).FirstOrDefault();
                if (newpair == null)
                {
                    expair.StopComms();
                    PortPairs.Remove(expair);
                }
            }

            //next we need to add any new pairs
            foreach (var newpair in newpairs)
            {
                var expair = (from p in PortPairs where p.PairNumber == newpair.PairNumber select p).FirstOrDefault();
                if (expair == null)
                {
                    PortPairs.Add(newpair);
                }
            }
        }
 public MainWindow()
 {
     try
     {
         PortPairs = Com0comSetup.GetPortPairs();
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.ToString());
     }
     InitializeComponent();
     cboCommsMode.ItemsSource = Enum.GetValues(typeof(CommsMode));
 }
        private void mnuAddPair_Click(object sender, RoutedEventArgs e)
        {
            PortConfigWindow w = new PortConfigWindow();

            if (w.ShowDialog() ?? false)
            {
                if (Com0comSetup.CreatePortPair(w.Result.PortA))
                {
                    RefreshPortPairs();
                }
                else
                {
                    MessageBox.Show("Failed to create pair - do you have admin?");
                }
            }
        }
        private void mnuRemovePair_Click(object sender, RoutedEventArgs e)
        {
            Com0comPortPair p;

            if ((p = listPorts.SelectedValue as Com0comPortPair) != null)
            {
                if (p.CommsStatus != CommsStatus.Idle)
                {
                    MessageBox.Show("Please stop the comms on this port first");
                    return;
                }
                if (Com0comSetup.DeletePortPair(p.PairNumber))
                {
                    RefreshPortPairs();
                }
                else
                {
                    MessageBox.Show("Failed to remove pair - do you have admin?");
                }
            }
        }
 public MainWindow()
 {
     try
     {
         PortPairs = Com0comSetup.GetPortPairs();
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.ToString());
     }
     InitializeComponent();
     cboCommsMode.ItemsSource = Enum.GetValues(typeof(CommsMode));
     cb_BaudRate.Items.Add("110");
     cb_BaudRate.Items.Add("150");
     cb_BaudRate.Items.Add("300");
     cb_BaudRate.Items.Add("1200");
     cb_BaudRate.Items.Add("2400");
     cb_BaudRate.Items.Add("4800");
     cb_BaudRate.Items.Add("9600");
     cb_BaudRate.Items.Add("19200");
     cb_BaudRate.Items.Add("38400");
     cb_BaudRate.Items.Add("57600");
     cb_BaudRate.Items.Add("115200");
 }
 private void mnuLaunchSetupg_Click(object sender, RoutedEventArgs e)
 {
     Com0comSetup.LaunchSetupg();
 }