public static string[] GetPortNames(UsbStick usbStick) { var results = new List <string>(); using (var searcher = new ManagementObjectSearcher(@"SELECT * FROM WIN32_SerialPort")) { var managementObjects = searcher.Get().Cast <ManagementBaseObject>().ToArray(); foreach (var managementObject in managementObjects) { var properties = managementObject.Properties.Cast <PropertyData>(); var pnpDeviceID = properties.SingleOrDefault(element => element.Name == "PNPDeviceID"); if (pnpDeviceID == null) { continue; } var deviceID = properties.SingleOrDefault(element => element.Name == "DeviceID"); if (deviceID == null) { continue; } if (pnpDeviceID.Value.ToString().Contains($"VID_{usbStick.VendorID:X4}&PID_{usbStick.ProductID:X4}")) { results.Add(deviceID.Value.ToString()); } } } return(results.ToArray()); }
public SerialPort(UsbStick stick) { if (stick == null) { throw new ArgumentNullException(nameof(stick)); } var portName = GetPortNames(stick).FirstOrDefault(); if (portName == null) { throw new ArgumentOutOfRangeException(nameof(stick), stick, "Usb stick not found."); } _port = new System.IO.Ports.SerialPort(portName, 115200, System.IO.Ports.Parity.None, 8, System.IO.Ports.StopBits.One); }