示例#1
0
        private static string GetPortName(string vendor, string product)
        {
            var path = string.Format("VID_{0}&PID_{1}&MI_00", vendor, product);

            using (ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM WIN32_SerialPort"))
            {
                var managementObjects = searcher.Get()
                                        .Cast <ManagementBaseObject>()
                                        .Where(managementObject => managementObject["PNPDeviceID"].ToString().Contains(path))
                                        .ToArray();
                foreach (var portName in SerialDriver.GetPortNames())
                {
                    foreach (var managementObject in managementObjects)
                    {
                        if (managementObject["DeviceID"].ToString().Equals(portName))
                        {
                            return(portName);
                        }
                    }
                }
            }
            throw new InvalidOperationException(string.Format("Device not found: \"{0}\":\"{1}\".", vendor, product));
        }
示例#2
0
 protected virtual void Open()
 {
     this.Driver = new SerialDriver(this.PortName, this.BaudRate);
 }