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)); }
protected virtual void Open() { this.Driver = new SerialDriver(this.PortName, this.BaudRate); }