/// <summary> /// Manually beep barcode scanner /// </summary> /// <param name="value"></param> /// <param name="id">Scanner id if multi scanner app</param> private void InvokeBeep(ExecCodes value, int id = 1) { string inXML = "<inArgs>" + $"<scannerID>{id.ToString()}</scannerID>" + //Scanner ID "<cmdArgs>" + $"<arg-int>{(int)value}</arg-int>" + "</cmdArgs>" + "</inArgs>"; cCoreScannerClass.ExecCommand((int)ExecCodes.SET_ACTION, ref inXML, out outXML, out status); }
//Print Barcode Scan Data public void readScan() { int opCode = 1001; string outXML; int status; string inXML = "<inArgs>" + "<cmdArgs>" + "<arg-int>1</arg-int>" + // Number of events you want to subscribe "<arg-int>1</arg-int>" + // Comma separated event IDs "</cmdArgs>" + "</inArgs>"; coreScanner.ExecCommand(opCode, ref inXML, out outXML, out status); }
private void CreateNewBarcodeEvent() { //Barcode scan event cCoreScannerClass.BarcodeEvent += new _ICoreScannerEvents_BarcodeEventEventHandler(OnBarcodeEvent); // Method for Subscribe events string inXML = "<inArgs>" + "<cmdArgs>" + "<arg-int>1</arg-int>" + // Number of events you want to subscribe "<arg-int>1</arg-int>" + // Comma separated event IDs "</cmdArgs>" + "</inArgs>"; cCoreScannerClass.ExecCommand(1001, ref inXML, out outXML, out status); Thread.Sleep(200); }
/// <summary> /// Claim this device. /// </summary> public void Claim() { const string setCommandXml = @"<inArgs><scannerID>{0}</scannerID></inArgs>"; var inXml = string.Format(setCommandXml, _scannerId); string outXml; int status; _scannerDriver.ExecCommand((int)ScannerCommand.ClaimDevice, ref inXml, out outXml, out status); var s = (StatusCode)status; if (s != StatusCode.Success) { throw new ScannerException(s); } }
/// <summary> /// Change the USB host mode of the scanner. /// </summary> /// <param name="mode">Host mode code</param> /// <param name="permanent">Keep in this mode after power cycle.</param> /// <param name="silent">Change modes silently (No beep)</param> public void SetHostMode(string mode, bool permanent = false, bool silent = true) { const string setCommandXml = @"<inArgs><scannerID>{0}</scannerID><cmdArgs><arg-string>{1}</arg-string><arg-bool>{2}</arg-bool><arg-bool>{3}</arg-bool></cmdArgs></inArgs>"; var inXml = string.Format(setCommandXml, Info.ScannerId, mode, silent ? "TRUE" : "FALSE", permanent ? "TRUE" : "FALSE"); string outXml; int status; _scannerDriver.ExecCommand((int)ScannerCommand.DeviceSwitchHostMode, ref inXml, out outXml, out status); var s = (StatusCode)status; if (s != StatusCode.Success) { throw new ScannerException(s); } }
/// <summary> /// Sound the beeper with the specified pattern. /// </summary> /// <param name="pattern">Beep pattern.</param> public void SoundBeeper(BeepPattern pattern) { const string setCommandXml = @"<inArgs><scannerID>{0}</scannerID><cmdArgs><arg-int>{1}</arg-int></cmdArgs></inArgs>"; var inXml = string.Format(setCommandXml, _scannerId, (int)pattern); string outXml; int status; _scannerDriver.ExecCommand((int)ScannerCommand.SetAction, ref inXml, out outXml, out status); var s = (StatusCode)status; if (s != StatusCode.Success) { throw new ScannerException(s); } }
bool ExecCmd(int opCode, ref string inXml, out string outXml, out string status) { int zStatus; outXml = ""; if (_IsOpen) { try { _CoreScanner.ExecCommand(opCode, ref inXml, out outXml, out zStatus); if (STATUS_SUCCESS == zStatus) { status = "OK"; return(true); } else { status = decodeStatusMessage(zStatus); return(false); } } catch (Exception ex) { status = ex.Message; return(false); } } else { status = "Scanner is closed"; return(false); } }
private void init_scanner() { try { //Instantiate CoreScanner Class cCoreScannerClass = new CCoreScanner(); //Call Open API short[] scannerTypes = new short[1]; //Scanner Types you are interested in scannerTypes[0] = 1; // 1 for all scanner types short numberOfScannerTypes = 1; // Size of the scannerTypes array int status; // Extended API return code cCoreScannerClass.Open(0, scannerTypes, numberOfScannerTypes, out status); // Subscribe for barcode events in cCoreScannerClass cCoreScannerClass.BarcodeEvent += new _ICoreScannerEvents_BarcodeEventEventHandler(OnBarcodeEvent); // Let's subscribe for events int opcode = 1001; // Method for Subscribe events string outXML; // XML Output string inXML = "<inArgs>" + "<cmdArgs>" + "<arg-int>1</arg-int>" + // Number of events you want to subscribe "<arg-int>1</arg-int>" + // Comma separated event IDs "</cmdArgs>" + "</inArgs>"; cCoreScannerClass.ExecCommand(opcode, ref inXML, out outXML, out status); //Console.WriteLine(outXML); } catch (Exception exp) { Console.WriteLine("Something wrong please check... " + exp.Message); } }
/// <summary> /// Get an attribute from the scanner given it's ID. /// </summary> /// <param name="id">Attribute ID</param> /// <returns>ScannerAttribute object holding identification info and the value of the attribute.</returns> protected ScannerAttribute GetAttribute(ushort id) { var xml = string.Format(_getAttributesXml, id); string outXml; int status; _scannerDriver.ExecCommand((int)ScannerCommand.AttrGet, ref xml, out outXml, out status); var s = (StatusCode)status; if (s != StatusCode.Success) { throw new ScannerException(s); } if (outXml == null) { return(null); } var doc = XDocument.Parse(outXml); var xmlAttribute = doc.Descendants("attribute").Single(); var name = xmlAttribute.Descendants("name").Single().Value; var dataType = (DataType)xmlAttribute.Descendants("datatype").Single().Value[0]; var permission = xmlAttribute.Descendants("permission").Single().Value[0]; var stringValue = xmlAttribute.Descendants("value").Single().Value; var value = ValueConverters.StringToActualType(dataType, stringValue); var retval = new ScannerAttribute { Id = id, Name = name, DataType = dataType, Permission = permission, Value = value }; return(retval); }
public void Init() { scanner = new CCoreScanner(); short[] scannerTypes = new short[1]; scannerTypes[0] = 1; short numberOfScannerTypes = 1; int status; int opcode = 1001; string outXML; string inXML = this.XMLIn; scanner.Open(0, scannerTypes, numberOfScannerTypes, out status); scanner.ExecCommand(opcode, ref inXML, out outXML, out status); scanner.BarcodeEvent += Scanner_BarcodeEvent; this.Status = ItemState.Initiated; }
/// <summary> /// Registers the API for the given event types. /// </summary> /// <param name="events">Events to register for.</param> public void RegisterForEvents(params EventType[] events) { if (_scannerDriver == null) { return; } if (_registeredEvents == null) { _registeredEvents = new List <EventType>(); } var template = @"<inArgs><cmdArgs><arg-int>{0}</arg-int><arg-int>{1}</arg-int></cmdArgs></inArgs>"; var count = 0; var arg = ""; foreach (var eventType in events) { if (_registeredEvents.Contains(eventType)) { continue; } _registeredEvents.Add(eventType); arg += (int)eventType; arg += ","; count++; switch (eventType) { case EventType.Barcode: { _scannerDriver.BarcodeEvent += OnBarcodeEvent; break; } case EventType.Image: { _scannerDriver.ImageEvent += OnImageEvent; break; } case EventType.Other: { _scannerDriver.IOEvent += OnIOEvent; _scannerDriver.CommandResponseEvent += OnCommandResponceEvent; _scannerDriver.ScannerNotificationEvent += OnScannerNotificationEvent; break; } case EventType.Pnp: { _scannerDriver.PNPEvent += OnPnpEvent; break; } case EventType.Rmd: { _scannerDriver.ScanRMDEvent += OnScanRmdEvent; break; } case EventType.Video: { _scannerDriver.VideoEvent += OnVideoEvent; break; } } } if (arg.Equals("")) { return; } arg = arg.Substring(0, arg.Length - 1); var inXml = string.Format(template, count, arg); string outXml; int status; _scannerDriver.ExecCommand((int)ScannerCommand.RegisterForEvents, ref inXml, out outXml, out status); }
/// <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> /// Register/Unregister for events 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"); int eventIdCount = 1; // Number of events to register (only barcode events) int[] eventIdList = new int[eventIdCount]; // Register for barcode events only eventIdList[0] = (int)EventType.Barcode; string eventIds = String.Join(",", eventIdList); string inXml = "<inArgs>" + "<cmdArgs>" + "<arg-int>" + eventIdCount + "</arg-int>" + // Number of events to register "<arg-int>" + eventIds + "</arg-int>" + // Event id list of events to register for "</cmdArgs>" + "</inArgs>"; int opCode = (int)Opcode.RegisterForEvents; string outXml = ""; status = -1; // Call register for events coreScannerObject.ExecCommand(opCode, // Opcode: Register for events ref inXml, // Input XML out outXml, // Output XML out status); // Command execution success/failure return status if (status == (int)Status.Success) { Console.WriteLine("CoreScanner RegisterForEvents() - Success"); } else { Console.WriteLine("CoreScanner RegisterForEvents() - Failed. Error Code : " + status); } // Add barcode data event handler coreScannerObject.BarcodeEvent += CoreScannerObject_BarcodeEvent; Console.WriteLine("Scan a barcode now, press " + "any key to exit."); while (!Console.KeyAvailable) { Thread.Sleep(10); } status = -1; opCode = (int)Opcode.UnregisterForEvents; // Call unregister for events coreScannerObject.ExecCommand(opCode, // Opcode: Unregister for events ref inXml, // Input XML out outXml, // Output XML out status); // Command execution success/failure return status if (status == (int)Status.Success) { Console.WriteLine("CoreScanner UnregisterForEvents() - Success"); } else { Console.WriteLine("CoreScanner UnregisterForEvents() - 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(); }
// Inicializa el Scanner private void initializeScanner() { try { //Instantiate CoreScanner Class cCoreScannerClass = new CCoreScanner(); //Call Open API short[] scannerTypes = new short[1];//Scanner Types you are interested in scannerTypes[0] = 1; // 1 for all scanner types short numberOfScannerTypes = 1; // Size of the scannerTypes array int status; // Extended API return code cCoreScannerClass.Open(0, scannerTypes, numberOfScannerTypes, out status); // Subscribe for barcode events in cCoreScannerClass cCoreScannerClass.BarcodeEvent += new _ICoreScannerEvents_BarcodeEventEventHandler(OnBarcodeEvent); // Let's subscribe for events int opcode = 1001; // Method for Subscribe events string outXML; // XML Output string inXML = "<inArgs>" + "<cmdArgs>" + "<arg-int>1</arg-int>" + // Number of events you want to subscribe "<arg-int>1</arg-int>" + // Comma separated event IDs "</cmdArgs>" + "</inArgs>"; cCoreScannerClass.ExecCommand(opcode, ref inXML, out outXML, out status); } catch (Exception exp) { MessageBox.Show("Error de conexión con el Scanner... " + exp.Message); } }