/// <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); }
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); } }
/// <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(); }
/// <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(); }