static void Main(string[] args) { using (var ports = new ComPortList()) { WriteLine(Join("\n", ports)); ports.Subscribe(WriteLine); ReadLine(); } }
public void SettingsRestore(object settings) { //Debug.WriteLine("Apply ->" + parentWindow.ConnectionTabHelper.CurrentTabData.TabItem.Title); Settings Settings = (Settings)settings; if (Array.IndexOf(SerialOptions.DefaultBaudRate, Settings.Baudrate) == -1) { customBaudrate.value = Settings.Baudrate; ComboBox_BaudRate_Refresh(); this.ComboBox_Baudrate.SelectedIndex = SerialOptions.BaudRateList.Count - 1; } else { this.ComboBox_Baudrate.SelectedItem = Settings.Baudrate; } this.CheckBox_RTS.IsChecked = Settings.RTSEnable; this.CheckBox_DTR.IsChecked = Settings.DTREnable; this.Combo_DataBits.SelectedItem = Settings.DataBits; this.Combo_StopBits.SelectedItem = Settings.StopBits; this.Combo_Parity.SelectedItem = Settings.Parity; this.Combo_Handshake.SelectedItem = Settings.Handshake; Task.Factory.StartNew(() => { ProcessPortList.WaitOne(); ComPortItem nextSelect = null; Debug.WriteLine(Settings.ComPort, "RESTORE ADV"); if (Settings.ComPort != -1) { bool find = false; //尋找Port是否被移除 foreach (ComPortItem k in ComboBox_ComPort.Items) { if (k.ComID == Settings.ComPort) { nextSelect = k; find = true; break; } } //Port had been removed if (!find) { ComPortItem old = new ComPortItem(Settings.ComPort, null); old.Removed = true; ComPortList.Add(old); mainWindow.Dispatcher.Invoke(() => { ComboBox_ComPort_Refresh(); }); nextSelect = old; } } mainWindow.Dispatcher.Invoke(() => { ComboBox_ComPort.SelectedItem = nextSelect; }); }, cancellationToken: CancellationToken.None, TaskCreationOptions.DenyChildAttach, TaskScheduler.Default); }
public void UsedPortAliveCheck() { foreach (ConnectionTabData data in ComPortUsedTabList) { SerialHelper serial = ((SerialHelper)data.ConnectionObject); if (serial.Connected) { ComPortItem result = ComPortList.Find(item => (ComIdToString(item.ComID) == serial.SerialPort.PortName) & item.Removed); if (result != null) { serial.Close(); } } } }