示例#1
0
        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());
        }
示例#2
0
        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);
        }