/// <summary>
        ///     Find all connected devices
        /// </summary>
        /// <returns>A list of IMotorolaSnapiScanner</returns>
        public List <IMotorolaBarcodeScanner> GetDevices()
        {
            var retval = new List <IMotorolaBarcodeScanner>();

            if ((_scannerDriver == null) || !Open())
            {
                return(retval);
            }

            // Lets list down all the scanners connected to the host
            short numberOfScanners;                     // Number of scanners expect to be used
            var   connectedScannerIDList = new int[32]; // Random number - more than expected

            // List of scanner IDs to be returned
            string outXml; //Scanner details output
            int    status; // Extended API return code

            _scannerDriver.GetScanners(out numberOfScanners, connectedScannerIDList, out outXml, out status);
            var xdoc     = XDocument.Parse(outXml);
            var scanners = xdoc.Descendants("scanner").ToList();

            foreach (var s in scanners)
            {
                var scanner = new BarcodeScanner(_scannerDriver, s);
                retval.Add(scanner);
            }

            return(retval);
        }
Exemple #2
0
        public bool GetScanners(out short numberOfScanners, out List <ScannerInfo> scannerInfoList,
                                out string outXml,
                                out string status)
        {
            int scannerCount = 0, zStatus;

            int[]         connectedScannerIdArray;
            ScannerInfo[] scannerInfoArray;
            LogWrapper.log(MethodBase.GetCurrentMethod());

            numberOfScanners        = 0;
            outXml                  = string.Empty;
            scannerInfoList         = new List <ScannerInfo>();
            connectedScannerIdArray = new int[MAX_NUM_DEVICES];
            try {
                if (_IsOpen == false)
                {
                    status = "Scanner is closed";
                    return(false);
                }
                _CoreScanner.GetScanners(out numberOfScanners, connectedScannerIdArray, out outXml, out zStatus);
                if (STATUS_SUCCESS == zStatus)
                {
                    if (numberOfScanners < 1)
                    {
                        status = "No Scanners Were Found";
                        return(false);
                    }
                    scannerInfoArray = new ScannerInfo[MAX_NUM_DEVICES];
                    for (int i = 0; i < MAX_NUM_DEVICES; i++)
                    {
                        scannerInfoArray[i] = new ScannerInfo();
                    }

                    scannerInfoList = parseScannerXml <ScannerData>(outXml);
                    //_Xml.ReadXmlstring_GetScanners(outXml, scannerInfoArray, numberOfScanners, out scannerCount, out status);
                    for (int i = 0; i < scannerCount; i++)
                    {
                        scannerInfoList.Add(scannerInfoArray[i]);
                    }
                    status = "OK";
                    return(true);
                }
                else
                {
                    status = decodeStatusMessage(zStatus);
                    return(false);
                }
            } catch (Exception ex) {
                status = ex.Message;
                return(false);
            }
        }
Exemple #3
0
        /// <summary>
        /// Barcode scan event
        /// </summary>
        //private void OnBarcodeEvent(short eventType, ref string pscanData)
        //{
        //	Log("Barcode Event Fired on thread ");
        //	_DateTime = DateTime.Now;
        //	string dat = pscanData;

        //	if (dat != "")
        //	{
        //		//Decodes the xml and stores the value in _RawIN
        //		DecodeXml(dat);
        //		Debug.WriteLine($"Barcode => {_RawIN}");

        //		switch (opReady)
        //		{
        //			//Operator is scanned in
        //			case true:

        //				//Decode scan type
        //				switch (_RawIN[0])
        //				{

        //					//Operator sign in
        //					case '#':
        //						InvokeBeep(ExecCodes._3HighS);
        //						ChangeLed(ExecCodes._RedLEDOff);
        //						ChangeLed(ExecCodes._GreenLEDOn);

        //						//Post to UI thread
        //						uiSyncContext.Post((s) =>
        //						{
        //							Operator = _RawIN.Substring(1);
        //							opReady = true;
        //						}, null);
        //						break;


        //					//Part Scanned
        //					default:
        //						InvokeBeep(ExecCodes._1HighL);
        //						ChangeLed(ExecCodes._RedLEDOff);
        //						var bc = new Barcode(_RawIN, _DateTime, Operator, Fixture);

        //						//Check for duplicate serial scan from same operator
        //						foreach (var i in DataGrid)
        //						{
        //							//If not same operator then update DB/Datagrid
        //							if ((BarcodeTile)i.SerialNumber == _RawIN && i.OperatorName != Operator)
        //							{
        //								//Post to UI thread
        //								uiSyncContext.Post((s) =>
        //								{
        //									SQLite.UpdateBarcode(bc);
        //									DataGrid.RemoveAt(DataGrid.IndexOf(i));
        //									DataGrid.Insert(0, bc);

        //								}, null);
        //								return;
        //							}
        //							//Same operator scanned barcode twice
        //							else if (i.SerialNumber == _RawIN && i.OperatorName == Operator)
        //							{
        //								//Post to UI thread
        //								uiSyncContext.Post((s) =>
        //								{
        //									SQLite.DeleteBarcode(bc);
        //									DataGrid.RemoveAt(DataGrid.IndexOf(i));
        //								}, null);
        //								return;
        //							}
        //						}

        //						//Add new barcode to Datagrid
        //						uiSyncContext.Post((s) =>
        //						{
        //							if (SQLite.WriteBarcode(bc))
        //							{
        //								DataGrid.Insert(0, bc);
        //							}
        //						}, null);

        //						break;
        //				}
        //				break;


        //			//No operator is currently scanned in
        //			case false:
        //				InvokeBeep(ExecCodes._3LowL);
        //				ChangeLed(ExecCodes._RedLEDOn);
        //				break;
        //		}
        //	}
        //}

        /// <summary>
        /// Checks for active connection with barcode scanner in SNAPI mode
        /// </summary>
        private void CheckForConn()
        {
            short numberOfScanners;

            int[] connectedScannerIDList = new int[255];
            cCoreScannerClass.GetScanners(out numberOfScanners, connectedScannerIDList,
                                          out outXML, out status);

            if (outXML.ToString().Length < 100)
            {
                Thread.Sleep(500);
            }
            else
            {
                sConnected = true;
            }
        }
        /// <summary>
        /// Get connected scanners using CoreScanner
        /// </summary>
        /// <param name="args"></param>
        static void Main(string[] args)
        {
            // Initialize CoreScanner COM object
            CoreScanner.CCoreScanner coreScannerObject = new CCoreScanner();

            int         appHandle            = 0;
            const short NumberOfScannerTypes = 1;

            short[] scannerTypes = new short[NumberOfScannerTypes];
            scannerTypes[0] = (short)ScannerType.All; //  All scanner types
            int status = -1;

            try
            {
                // Open CoreScanner COM Object
                coreScannerObject.Open(appHandle,            // Application handle
                                       scannerTypes,         // Array of scanner types
                                       NumberOfScannerTypes, // Length of scanner types array
                                       out status);          // Command execution success/failure return status

                if (status == (int)Status.Success)
                {
                    Console.WriteLine("CoreScanner Open() - Success");
                    short  numOfScanners = 0;
                    string outXml        = "";
                    int[]  scannerIdList = new int[Constant.MaxNumDevices];

                    // Get connected scanners
                    coreScannerObject.GetScanners(out numOfScanners, // Returns number of scanners discovered
                                                  scannerIdList,     // Returns array of connected scanner ids
                                                  out outXml,        // Output xml containing discovered scanners information
                                                  out status);       // Command execution success/failure return status

                    if (status == (int)Status.Success)
                    {
                        Console.WriteLine("CoreScanner GetScanners()- Success");
                        Console.WriteLine(" Total Scanners : " + numOfScanners);
                        string scannerIds = "";
                        Array.Resize(ref scannerIdList, numOfScanners);
                        scannerIds = String.Join(", ", scannerIdList);
                        Console.WriteLine(" Scanner IDs :" + scannerIds);
                        Console.WriteLine(" Out xml : " + Environment.NewLine + outXml);
                    }
                    else
                    {
                        Console.WriteLine("CoreScanner GetScanner() - Failed. Error Code : " + status);
                    }
                }
                else
                {
                    Console.WriteLine("CoreScanner Open() - Failed. Error Code : " + status);
                }

                // Close CoreScanner COM Object
                coreScannerObject.Close(appHandle,   // Application handle
                                        out status); // Command execution success/failure return status

                if (status == (int)Status.Success)
                {
                    Console.WriteLine("CoreScanner Close() - Success");
                }
                else
                {
                    Console.WriteLine("CoreScanner Close() - Failed. Error Code : " + status);
                }
            }
            catch (Exception exception)
            {
                Console.WriteLine("Exception : " + exception.ToString());
            }

            Console.WriteLine("Press any key to exit.");
            Console.ReadKey();
        }
Exemple #5
0
        /// <summary>
        /// Trigger scanner beep/LED using CoreScanner
        /// </summary>
        /// <param name="args"></param>
        static void Main(string[] args)
        {
            // Initialize CoreScanner COM object
            CoreScanner.CCoreScanner coreScannerObject = new CCoreScanner();

            int         appHandle            = 0;
            const short NumberOfScannerTypes = 1;

            short[] scannerTypes = new short[NumberOfScannerTypes];
            scannerTypes[0] = (short)ScannerType.All;  //  All scanner types
            int status           = -1;
            int currentScannerId = 1;

            try
            {
                // Open CoreScanner COM Object
                coreScannerObject.Open(appHandle,            // Application handle
                                       scannerTypes,         // Array of scanner types
                                       NumberOfScannerTypes, // Length of scanner types array
                                       out status);          // Command execution success/failure return status

                if (status == (int)Status.Success)
                {
                    Console.WriteLine("CoreScanner Open() - Success");

                    short  numOfScanners = 0;
                    string outXml        = "";
                    int[]  scannerIdList = new int[Constant.MaxNumDevices];
                    // Get connected scanners
                    coreScannerObject.GetScanners(out numOfScanners, // Returns number of scanners discovered
                                                  scannerIdList,     // Returns array of connected scanner ids
                                                  out outXml,        // Output xml containing discovered scanners information
                                                  out status);       // Command execution success/failure return status

                    if (status == (int)Status.Success)
                    {
                        Console.WriteLine("CoreScanner GetScanners()- Success");
                        Console.WriteLine(" Total Scanners : " + numOfScanners);
                        string scannerIds = "";
                        Array.Resize(ref scannerIdList, numOfScanners);
                        scannerIds = String.Join(", ", scannerIdList);
                        Console.WriteLine(" Scanner IDs :" + scannerIds);
                        Console.WriteLine(" Out xml : " + Environment.NewLine + outXml);

                        if (numOfScanners > 0)
                        {
                            // Use first scanner
                            currentScannerId = scannerIdList[0];

                            // Trigger Scanner Beep
                            Console.WriteLine("Beep scanner (one short high) using setAction");
                            status = -1;
                            int opCode = (int)Opcode.SetAction;
                            // Beep: one short high - input xml
                            string inXml = "<inArgs>" +
                                           "<scannerID>" + currentScannerId.ToString() + "</scannerID>" +
                                           "<cmdArgs>" +
                                           "<arg-int>" + (int)BeepCode.OneShortHigh +   // Specify beeper code
                                           "</arg-int>" +
                                           "</cmdArgs>" +
                                           "</inArgs>";

                            coreScannerObject.ExecCommand(opCode,      // Opcode: for Scanner Beep (SET_ACTION)
                                                          ref inXml,   // Input XML
                                                          out outXml,  // Output XML
                                                          out status); // Command execution success/failure return status

                            if (status == (int)Status.Success)
                            {
                                Console.WriteLine("Scanner Beep() scanner ID:[" +
                                                  currentScannerId.ToString() + "] - Success");
                            }
                            else
                            {
                                Console.WriteLine("Scanner Beep() scanner ID:[" +
                                                  currentScannerId.ToString() + "] - Failed. Error Code : " + status);
                            }

                            Console.WriteLine();

                            Console.WriteLine("Trigger scanner LED3 (Red) on using setAction");
                            opCode = (int)Opcode.SetAction;
                            // Trigger scanner LED3(Red) on - input xml
                            inXml = "<inArgs>" +
                                    "<scannerID>" + currentScannerId.ToString() + "</scannerID>" +
                                    "<cmdArgs>" +
                                    "<arg-int>" + (int)LEDCode.Led3On +    // Specify LED code to switch on/off
                                    "</arg-int>" +
                                    "</cmdArgs>" +
                                    "</inArgs>";

                            // Trigger scanner LED on
                            coreScannerObject.ExecCommand(opCode,      // Opcode: for Scanner LED on (SET_ACTION)
                                                          ref inXml,   // Input XML
                                                          out outXml,  // Output XML
                                                          out status); // Command execution success/failure return status

                            if (status == (int)Status.Success)
                            {
                                Console.WriteLine("Scanner LED on, scanner ID:[" +
                                                  currentScannerId.ToString() + "] - Success");
                            }
                            else
                            {
                                Console.WriteLine("Scanner LED on, scanner ID:[" +
                                                  currentScannerId.ToString() + "] - Failed. Error Code : " + status);
                            }

                            Console.WriteLine("LED3 (red) switched on, press any key to continue.");
                            while (!Console.KeyAvailable)
                            {
                                Thread.Sleep(10);
                            }

                            Console.ReadKey();
                            Console.WriteLine();

                            Console.WriteLine("Trigger scanner LED3 (Red) off using setAction");
                            opCode = (int)Opcode.SetAction;
                            // Trigger scanner LED3 (Red) off - input xml
                            inXml = "<inArgs>" +
                                    "<scannerID>" + currentScannerId.ToString() + "</scannerID>" +
                                    "<cmdArgs>" +
                                    "<arg-int>" + (int)LEDCode.Led3Off +   // Specify LED code to switch on/off
                                    "</arg-int>" +
                                    "</cmdArgs>" +
                                    "</inArgs>";

                            // Trigger scanner LED off
                            coreScannerObject.ExecCommand(opCode,      // Opcode: for Scanner LED on (SET_ACTION)
                                                          ref inXml,   // Input XML
                                                          out outXml,  // Output XML
                                                          out status); // Command execution success/failure return status

                            if (status == (int)Status.Success)
                            {
                                Console.WriteLine("Scanner LED off, scanner ID:[" +
                                                  currentScannerId.ToString() + "] - Success");
                            }
                            else
                            {
                                Console.WriteLine("Scanner LED off, scanner ID:[" +
                                                  currentScannerId.ToString() + "] - Failed. Error Code : " + status);
                            }

                            Console.WriteLine("LED3 (red) switched off, press any key to continue.");
                        }
                        else
                        {
                            Console.WriteLine("CoreScanner GetScanner() - No scanners found");
                        }
                    }
                    else
                    {
                        Console.WriteLine("CoreScanner GetScanner() - Failed. Error Code : " + status);
                    }
                }
                else
                {
                    Console.WriteLine("CoreScanner Open() - Failed. Error Code : " + status);
                }

                // Close CoreScanner COM Object
                coreScannerObject.Close(appHandle,   // Application handle
                                        out status); // Command execution success/failure return status

                if (status == (int)Status.Success)
                {
                    Console.WriteLine("CoreScanner Close() - Success");
                }
                else
                {
                    Console.WriteLine("CoreScanner Close() - Failed. Error Code : " + status);
                }
            }
            catch (Exception exception)
            {
                Console.WriteLine("Exception : " + exception.ToString());
            }

            Console.WriteLine("Press any key to exit.");
            Console.ReadKey();
        }
        /// <summary>
        /// Enable/Disable scanner using CoreScanner
        /// </summary>
        /// <param name="args"></param>
        static void Main(string[] args)
        {
            // Initialize CoreScanner COM object
            CoreScanner.CCoreScanner coreScannerObject = new CCoreScanner();

            int         appHandle            = 0;
            const short NumberOfScannerTypes = 1;

            short[] scannerTypes = new short[NumberOfScannerTypes];
            scannerTypes[0] = (short)ScannerType.All; //  All scanner types
            int status = -1;

            try
            {
                // Open CoreScanner COM Object
                coreScannerObject.Open(appHandle,            // Application handle
                                       scannerTypes,         // Array of scanner types
                                       NumberOfScannerTypes, // Length of scanner types array
                                       out status);          // Command execution success/failure return status

                if (status == (int)Status.Success)
                {
                    Console.WriteLine("CoreScanner Open() - Success");

                    short  numOfScanners = 0;
                    string outXml        = "";
                    int[]  scannerIdList = new int[Constant.MaxNumDevices];
                    // Get connected scanners
                    coreScannerObject.GetScanners(out numOfScanners, // Returns number of scanners discovered
                                                  scannerIdList,     // Returns array of connected scanner ids
                                                  out outXml,        // Output xml containing discovered scanners information
                                                  out status);       // Command execution success/failure return status

                    if (status == (int)Status.Success)
                    {
                        Console.WriteLine("CoreScanner GetScanners()- Success");
                        Console.WriteLine(" Total Scanners : " + numOfScanners);
                        string scannerIds = "";
                        Array.Resize(ref scannerIdList, numOfScanners);
                        scannerIds = String.Join(", ", scannerIdList);
                        Console.WriteLine(" Scanner IDs :" + scannerIds);
                        Console.WriteLine(" Out xml : " + Environment.NewLine + outXml);

                        Console.WriteLine("Disabling all scanners");
                        foreach (int scannerId in scannerIdList)
                        {
                            status = -1;
                            int    opCode = (int)Opcode.DeviceScanDisable;
                            string inXml  = "<inArgs>" +
                                            "<scannerID>" + scannerId.ToString() + "</scannerID>" +
                                            "</inArgs>";

                            // Disable Scanner
                            coreScannerObject.ExecCommand(opCode,      // Opcode: Scanner Disable
                                                          ref inXml,   // Input XML
                                                          out outXml,  // Output XML
                                                          out status); // Command execution success/failure return status

                            if (status == (int)Status.Success)
                            {
                                Console.WriteLine("CoreScanner ScannerDisable() scanner ID:[" + scannerId.ToString() + "] - Success");
                            }
                            else
                            {
                                Console.WriteLine("CoreScanner ScannerDisable() scanner ID:[" + scannerId.ToString() + "] - Failed. Error Code : " + status);
                            }
                        }
                        Console.WriteLine("All scanners disabled, press any key to continue.");
                        while (!Console.KeyAvailable)
                        {
                            Thread.Sleep(10);
                        }
                        Console.ReadKey();


                        Console.WriteLine("Enabling all scanners");
                        foreach (int scannerId in scannerIdList)
                        {
                            status = -1;
                            int    opCode = (int)Opcode.DeviceScanEnable;
                            string inXml  = "<inArgs>" +
                                            "<scannerID>" + scannerId.ToString() + "</scannerID>" +
                                            "</inArgs>";

                            // Enable Scanner
                            coreScannerObject.ExecCommand(opCode,      // Opcode: Scanner Enable
                                                          ref inXml,   // Input XML
                                                          out outXml,  // Output XML
                                                          out status); // Command execution success/failure return status

                            if (status == (int)Status.Success)
                            {
                                Console.WriteLine("CoreScanner ScannerEnable() scanner ID:[" + scannerId.ToString() + "] - Success");
                            }
                            else
                            {
                                Console.WriteLine("CoreScanner ScannerEnable() scanner ID:[" + scannerId.ToString() + "] - Failed. Error Code : " + status);
                            }
                        }
                        Console.WriteLine("All scanners enabled, press any key to continue.");
                        while (!Console.KeyAvailable)
                        {
                            Thread.Sleep(10);
                        }
                        Console.ReadKey();
                    }
                    else
                    {
                        Console.WriteLine("CoreScanner GetScanner() - Failed. Error Code : " + status);
                    }
                }
                else
                {
                    Console.WriteLine("CoreScanner Open() - Failed. Error Code : " + status);
                }

                // Close CoreScanner COM Object
                coreScannerObject.Close(appHandle,   // Application handle
                                        out status); // Command execution success/failure return status

                if (status == (int)Status.Success)
                {
                    Console.WriteLine("CoreScanner Close() - Success");
                }
                else
                {
                    Console.WriteLine("CoreScanner Close() - Failed. Error Code : " + status);
                }
            }
            catch (Exception exception)
            {
                Console.WriteLine("Exception : " + exception.ToString());
            }
            Console.WriteLine("Press any key to exit.");
            Console.ReadKey();
        }