public List <BarcodeScanner> FindBarcodeScanner(BarcodeScannerConfig scannerConfig) { List <BarcodeScanner> barcodeScannerList = new List <BarcodeScanner>(); BarcodeScanner barcodeScanner = null; try { //SELECT * FROM Win32_PnPEntity - can get the scanner but cant Find the XYZ Printers. //SELECT * FROM WIN32_SerialPort - can find serialPort devices but not devices that are connected using the USB CDC/ACM driver for windows. using (var searcher = new ManagementObjectSearcher(scannerConfig.QueryString)) { var availableSerialPortsList = SerialPort.GetPortNames().ToList(); var connectedDeviceList = searcher.Get().Cast <ManagementBaseObject>().ToList(); var connectedSerialDeviceList = connectedDeviceList.Where(x => x[scannerConfig.Key1].ToString().Contains(scannerConfig.Value1)).ToList(); //var detectedDevice = connectedSerialDeviceList.FirstOrDefault(); foreach (var detectedDevice in connectedSerialDeviceList) { barcodeScanner = CreateBarcodeScannerObject(scannerConfig, barcodeScanner, detectedDevice); barcodeScannerList.Add(barcodeScanner); } } } catch (Exception e) { e.WriteLog().SaveToDataBase().Display(); } return(barcodeScannerList); }
private static BarcodeScanner CreateBarcodeScannerObject(BarcodeScannerConfig scannerConfig, BarcodeScanner barcodeScanner, ManagementBaseObject detectedDevice) { Dictionary <string, string> scannerProperties = new Dictionary <string, string>(); foreach (var propertyName in scannerConfig.PropertyNames) { if (detectedDevice[propertyName] != null) { var name = detectedDevice[propertyName]; scannerProperties.Add(propertyName, detectedDevice[propertyName].ToString()); } } string re1 = ".*?"; // Non-greedy match on filler string re2 = "((?:[a-z][a-z]*[0-9]+[a-z0-9]*))"; // Alphanum 1 Regex r = new Regex(re1 + re2, RegexOptions.IgnoreCase | RegexOptions.Singleline); Match m = null; foreach (var propValPair in scannerProperties) { m = r.Match(propValPair.Value); if (m.Success) { break; } } if (m != null && m.Success) { barcodeScanner = new BarcodeScanner(); barcodeScanner.COMPortName = m.Groups[1].ToString(); barcodeScanner.Description = scannerProperties[scannerConfig.Key2]; barcodeScanner.PNPDeviceID = scannerProperties[scannerConfig.Key1]; barcodeScanner.Properties = scannerProperties; } else { var cantFindBarcodeScanner = new Exception("Could Not find " + scannerConfig.Value2 + " " + scannerConfig.Key1 + " with Value: " + scannerConfig.Value1 + "\n Please Check the configurations!"); cantFindBarcodeScanner.WriteLog().SaveToDataBase().Display(); } return(barcodeScanner); }
public List <BarcodeScannerConfig> GetBarcodeScannerConfigs() { List <BarcodeScannerConfig> barcodeScannerConfigs = new List <BarcodeScannerConfig>(); BarcodeScannerConfig barcodeScannerConfig = new BarcodeScannerConfig(); barcodeScannerConfig.QueryString = "SELECT * FROM Win32_PnPEntity"; barcodeScannerConfig.Value1 = @"USBCDCACM\VID_0C2E&PID_092A"; barcodeScannerConfig.Key1 = "PNPDeviceID"; barcodeScannerConfig.Value2 = "Xenon 1902 Wireless Area-Imaging Scanner (COM34)"; barcodeScannerConfig.Key2 = "Caption"; List <string> propertyNames = new List <string> { "Caption", "ClassGuid", "CompatibleID", "ConfigManagerErrorCode", "ConfigManagerUserConfig", "CreationClassName", "Description", "DeviceID", "ErrorCleared", "ErrorDescription", "HardwareID", "PNPDeviceID", "InstallDate", "LastErrorCode", "Name", "PowerManagementCapabilities", "Service", "Status", "StatusInfo", "SystemCreationClassName", "SystemName", }; barcodeScannerConfig.PropertyNames = propertyNames; barcodeScannerConfigs.Add(barcodeScannerConfig); BarcodeScannerConfig barcodeScannerConfig2 = new BarcodeScannerConfig(); barcodeScannerConfig2.QueryString = "SELECT * FROM Win32_SerialPort"; barcodeScannerConfig2.Value1 = @"USB\VID_0483&PID_5740\DEMO_1.000"; barcodeScannerConfig2.Key1 = "PNPDeviceID"; barcodeScannerConfig2.Value2 = "MD USB Virtual COM Port (COM35)"; barcodeScannerConfig2.Key2 = "Caption"; propertyNames = new List <string> { "Availability", "Binary", "Capabilities", "CapabilityDescriptions", "Caption", "ConfigManagerErrorCode", "ConfigManagerUserConfig", "CreationClassName", "Description", "DeviceID", "ErrorCleared", "ErrorDescription", "InstallDate", "LastErrorCode", "MaxBaudRate", "MaximumInputBufferSize", "MaximumOutputBufferSize", "MaxNumberControlled", "Name", "OSAutoDiscovered", "PNPDeviceID", "PowerManagementCapabilities", "PowerManagementSupported", "ProtocolSupported", "ProviderType", "SettableBaudRate", "SettableDataBits", "SettableFlowControl", "SettableParity", "SettableParityCheck", "SettableRLSD", "SettableStopBits", "Status", "StatusInfo", "Supports16BitMode", "SupportsDTRDSR", "SupportsElapsedTimeouts", "SupportsIntTimeouts", "SupportsParityCheck", "SupportsRLSD", "SupportsRTSCTS", "SupportsSpecialCharacters", "SupportsXOnXOff", "SupportsXOnXOffSet", "SystemCreationClassName", "SystemName", "TimeOfLastReset" }; barcodeScannerConfig2.PropertyNames = propertyNames; barcodeScannerConfigs.Add(barcodeScannerConfig2); return(barcodeScannerConfigs); }