private void loadComPorts() { using (var searcher = new ManagementObjectSearcher ("SELECT * FROM WIN32_SerialPort")) { var ports = searcher.Get().Cast <ManagementBaseObject>().ToList(); var tList = (from n in portnames join p in ports on n equals p["DeviceID"].ToString() select n + " - " + p["Caption"]).ToList(); for (int i = 0; i < portnames.Length; i++) { if (i < tList.Count) { checkedListBox1.Items.Add(tList[i].ToString()); } else { checkedListBox1.Items.Add(portnames[i].ToString()); } EnhancedSerialPort _serialPort = new EnhancedSerialPort(portnames[i].ToString()); DetectedSerialPorts.Add(new KeyValuePair <string, EnhancedSerialPort>(portnames[i], _serialPort)); } } }
private void DateTimeUserControl1_SendMessageToSerialPort(object sender, SendComMessageEventArgs e) { Console.WriteLine(e.Message); KeyValuePair <string, EnhancedSerialPort> _p = ListenSerialPorts.SingleOrDefault(kvp => kvp.Key == e.SerialPort); EnhancedSerialPort _port = _p.Value; _port.NewLine = "\n"; _port.WriteLine(e.Message); rtxtComConsole.Text = string.Concat(rtxtComConsole.Text, "->", e.SerialPort, " : ", e.Message, "\r\n"); }
private void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e) { var portslist = (CheckedListBox)sender; if (e.NewValue == CheckState.Checked) { KeyValuePair <string, EnhancedSerialPort> x = DetectedSerialPorts.SingleOrDefault(kvp => kvp.Key == portnames[e.Index]); EnhancedSerialPort _port = x.Value; _port.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler); try { _port.Open(); ListenSerialPorts.Add(new KeyValuePair <string, EnhancedSerialPort>(portnames[e.Index], _port)); foreach (UserControl control in flowLayoutPanel1.Controls.OfType <ICommuniquant>()) { (control as DateTimeUserControl).AddPort(portnames[e.Index]); } } catch (Exception ex) { e.NewValue = CheckState.Unchecked; MessageBox.Show(ex.Message); } } else { KeyValuePair <string, EnhancedSerialPort> _port = ListenSerialPorts.SingleOrDefault(kvp => kvp.Key == portnames[e.Index]); (_port.Value as EnhancedSerialPort).Close(); ListenSerialPorts.Remove(ListenSerialPorts.SingleOrDefault(kvp => kvp.Key == portnames[e.Index])); foreach (UserControl control in flowLayoutPanel1.Controls.OfType <ICommuniquant>()) { (control as DateTimeUserControl).RemovePort(portnames[e.Index]); } } }