Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }