About Scanner SDK for Windows

Overview

The Zebra Scanner Software Developer Kit (SDK) defines an architectural framework providing a single programming interface across multiple programming languages (such as MS .NET, C++, Java) and across multiple system environments (such as Windows and Linux) for all scanners communication variants (such as IBMHID, SNAPI, HIDKB, Nixdorf Mode B, etc.).

The Zebra Scanner SDK includes a suite of components that provides a unified software development framework with a wide range of functions for interfacing Zebra scanners to user applications and solutions.

With this SDK you can read bar codes, manage scanner configurations, capture images/videos and selectively choose a list of scanners on which to work. While one application is in one programming language using a scanner or a set of scanners, another application in a different language can be used differently within the same system environment.

Figure 1 Software Developer Framework

The SDK can build an application with complete control of its scanner's capabilities.

  • Data, Barcode

    • Simulation HID Keyboard output
    • OPOS/JPOS output
    • SNAPI output
  • Command and Control

    • LED and Beeper Control
    • Aim Control
  • Imaging

    • Capture / Transfer of images
    • Capture / Transfer of Video
  • Remote Scanner Management

    • Asset Tracking
    • Device Configuration (Get, Set and Store scanner attributes)
    • Firmware Upgrade
    • Scanner Communication Protocol Switching
    • Service to Automate Configuration / Firmware Upgrade Process

NOTE For a list of a scanner's supported attribute (parameter) numbers and definitions, refer to the Product Reference Guide for that model scanner, available from the Zebra Support website at http://www.zebra.com/support. Attributes include configuration parameters, monitored data, and asset tracking information.


Scanner SDK Architecture

Figure 2 SDK Architecture

You can configure Zebra scanner devices to be operated in different host communication modes such as USB SNAPI, USB OPOS, USB HID Keyboard, USB IBM Table-top, SSI, and RS232 Nixdorf Mode B. Device feature support varies depending on communication mode but all modes support bar code scanning. Refer to the Product Reference Guide of a specific scanner for the bar codes to set its supported host communication modes.

Using the Zebra Scanner SDK, you can switch between supported host communication modes by calling the host variant switching command programmatically. This is useful when the device is in a less feature supportive mode and some advanced functionality is required but not supported by the current communication mode. The scanner can be switched to a feature rich mode and commands executed before switching the scanner back to the previous mode.

For example, you want to disable the UPC-A symbology but the device is in USB HID Keyboard mode. If the mode is supported by the scanner, you may switch to USB SNAPI or USB OPOS, set UPC- A to be disabled permanently and then switch the scanner back to USB HID Keyboard mode. See Table 1 below for more information.

Table 1 illustrates scanner capabilities supported by each communication mode. Refer to the specifications of a device for its ability to support of each communication mode.

Table 1 Scanner Device Communication Modes Vs. Capabilities

Capabilities USB SNAPI USB OPOS USB HID Keyboard USB IBM Table-top RS232 Nixdorf B SSI
Data Supported Supported Supported Supported Supported Supported
Host Variant Switching Supported Supported Supported Supported Not Available Not Available
Management Supported Supported Not Available Supported Not Available Supported
Image & Video Supported Not Available Not Available Not Available Not Available Supported (Image Only)
Simulated HID Keyboard Output* Supported Supported Not Available Supported Supported* Supported
*Advanced Data Formatting (ADF) is not supported when using Simulated HID Keyboard Output.

Simulated HID Keyboard Output is a feature enabling scanners in USB SNAPI, USB IBM Table-top, USB OPOS, or SSI mode to emulate HID Keyboard keystrokes to a host system for scanned data labels. It sends the content of the scanned data label as HID Keyboard keystrokes thus emulating USB HID Keyboard scanner mode.


Multiple Scanner Device Identification Methodology For Applications

The Zebra Scanner SDK supports multiple scanner devices to any application that runs on top of CoreScanner APIs. Each scanner device is shown to the user application by a unique scanner identification number. The scanner ID is a numeric value assigned to each connected device so there cannot be multiple scanner devices holding the same scanner ID.

Asset tracking information like model number, serial number, current firmware version and date of manufacture are available if the scanner and its current host mode support the management feature.

For example, in some modes like USB HID Keyboard, you do not see asset tracking information but the same scanner device shows you such information when it is in USB OPOS or USB SNAPI mode.

The format of device asset tracking information can follow different naming conventions for device model, serial number or current firmware version. For example, the length of a serial number for DS6707 and DS9808 scanners can be different.


How Multiple Applications Access Multiple Scanners From Scanner SDK

The Zebra Scanner SDK supports multiple applications accessing multiple scanner devices connected to the host at the same time.

As described previously, a scanner ID uniquely identifies a connected scanner device to all applications. A scanner ID is consistent among all applications for one SDK instance. If the CoreScanner service or the host machine is restarted, a device may be assigned a different scanner ID but it is unique and referenced by all applications.

Three Applications Connected To One Scanner

Figure 3 Three Applications Connected To One Scanner

Implementation Details

  • Three applications are connected to one scanner.
  • App 1 & App 2 support bi-directional (two way) communication with the scanner.
  • Legacy App 3 supported by driver converting SNAPI data into HID format.

Three Applications Connected To Two Scanners

Figure 4 Three Applications Connected To Two Scanners

Implementation Details

  • Three applications are connected to two scanners.
  • App 1 and App 2 support bi-directional (two way) communication with the DS6878.
  • Legacy App 3 receives HID keyboard emulation data from the LS2208.

Many-to-Many Application Device Usage

Figure 5 Many-to-Many Application Device Usage

Implementation Details

  • App 1 performs image capture with the DS6878.
  • App 2 can remotely manage both the DS6878 and LS4208.
  • App 3 receives OPOS data from both the DS6878 and LS4208.

One Application Connected to Two Scanners

Figure 6 One Application Connected to Two Scanners

Implementation Details

  • One application can manage multiple scanners in multiple communication interfaces.
  • The application can capture data, image and video, send management commands and receive responses from multiple scanners.
  • All responses from the scanners consist of the scanner device details (ScannerID, serial number, model number, etc.) identifying the device that sent the response.

For example, a bar code event for a scanned label is shown below. The scanned data label arrives with a unique ScannerID and the scanner's model number and the serial number.



<outArgs>
    <scannerID>1</scannerID>
    <arg-xml>
        <scandata>
            <modelnumber>DS6707-SR20001ZZR</modelnumber>
            <serialnumber>7114000503308</serialnumber>
            <GUID>9008A01BB72BA34BB519806B63701AAA</GUID>
            <datatype>11</datatype>
            <datalabel>0x39 0x37 0x38 0x30 0x32 0x30 0x31 0x34</datalabel>
            <rawdata>0x39 0x37 0x38 0x30 0x32 0x30 0x31 0x34</rawdata>
        </scandata>
    </arg-xml>
</outArgs>        


Supported Devices

  • CS6080
  • DS2208
  • DS2278
  • DS3408
  • DS3608-DP DS3678-DP
  • DS3608-ER DS3678-ER
  • DS3608-HD DS3678-HD
  • DS3608-HP DS3678-HP
  • DS3608-SR DS3678-SR
  • DS4308
  • DS4308-HC
  • DS4308P
  • DS457 Series
  • DS4800 Series
  • DS6707
  • DS6707-DP
  • DS6707-HD
  • DS6708
  • DS6878-DL
  • DS6878-HC
  • DS6878-SR
  • DS7708
  • DS9208
  • DS9308
  • DS9808
  • DS9908-HD
  • DS9908-SR
  • LI2208
  • LI3608-ER
  • LI3608-SR
  • LI3678-ER
  • LI3678-SR
  • LI4278
  • LS2208
  • LS3008
  • LS3408
  • LS3408-ER
  • LS3408-FZ
  • LS3578-ER
  • LS4208
  • LS4278
  • LS7708
  • LS9203i
  • LS9208i
  • MP6000
  • MP7000
  • RFD8500
  • RS5100

Version History

Version 3.06.0013 – 10/2021

  1. Enhanced JPOS Driver

    1. Added support to execute DirectIO commands without claiming the device.
    2. JPOS sample application enhancement to display the "Live Weight" and the logs on live weight status update events.
    3. Enhanced logging in JPOS driver including access to barcode data, power state, scale weight, and what API calls have been made.
  2. Enhanced Logging Agent capabilities

    1. Added support for logging of operating system environment variables like "host PC name". The environmental variable check is performed real time on each logging occurrence.
    2. Added support for real time logging via a JSON call to cloud-based consoles like Splunk.

Version 3.06.0010 – 08/2021

  1. Enhanced options associated with the OPOS driver’s "ScanData" property. Option now exists to only display scanned data (without displaying the communication protocol specific details).
  2. Enhanced logging in JPOS driver including access to barcode data, scale weight, and what API calls have been made.
  3. Fixed statistics and health parameters reporting from the parent scanner device in a cascaded device setup.

Version 3.06.0006 – 04/2021

  1. Enhanced JPOS driver

    1. Add support for “extended error codes” for NCRDIO_SCALE_LIVE_WEIGHT DirectIO command in JPOS.
    2. Add support for JPOS Scale status responses.
  2. Fixed JPOS Scale Open command to enable the “DeviceEnabled” property to execute.
  3. Fixed JPOS DirectIO RESET command.
  4. Fixed JPOS Scanner Not of File Direct IO Command.
  5. Fixed JPOS Sample application, which now shows the scale weight value when DirectIO NCR_LIVE_WEIGHT command executes.
  6. Fixed Scale OPOS crash issue when retrieving Check Health Text after executing Check Health command.

Version 3.06.0003 – 01/2021

  1. OPOS and JPOS enhancements

    1. Added support for Scanner DirectIO RESET command.
    2. Added support for custom MP7000 scale result codes for ErrorOverWeight, ErrorUnderZero and ErrorSameWeight.
  2. Enhanced Logging Agent capabilities

    1. Log agent can now retrieve Host/PC name and IP address.
    2. "Scan Avoidance" functionality renamed to "Non-Decode Event".
    3. The reporting interval can be customized. Set unique programming interval by attribute. Note a small interval (less than 30 seconds) may impact POS system performance.

Version 3.06.0002 – 10/2020

  1. Updated Visual C++ redistributable package from 2017 to 2019. Note redistributable package for 2017 is no longer included with the SDK.
  2. Add support for the scanner page motor action to the sample applications (C++ and C#).
  3. JPOS driver update. Removed Apache Xerces XML parser dependency from the Zebra JPOS Service Object (SO).

Version 3.05.0005 - 07/2020

  1. Logging Agent bundled with Windows SDK

    1. The Logging Agent allows a 3rd party management console, like Microsoft’s SCCM, to track scanner information including the scanner’s health by parsing a Logging Agent generated log file.
    2. The Logging Agent will output a log file, one file per scanner/host.
    3. The Logging Agent is configurable and can document one or all of the following information:

      1. Asset information
      2. Statistics for example battery charge level or UPCs scanned
      3. Firmware failures and or firmware success
      4. Parameter value(s) changed. Achieved by tracking parameter 616 (config file name changed to “Modified”)
      5. Scanned barcode data (all scanned items)
      6. Scan avoidance for MP7000
    4. The logging agent can have its output stored locally on its host PC or output to a network shared folder.
  2. Added support for Data Parsing (supports UDI, GS1 Label Parsing and Blood Bag) symbology to sample applications (C++ and C#).
  3. Added support for CDC switching on SDK sample applications (C++ and C#).
  4. OPOS Scanner/Scale CCO update from version 1.14 to version 1.14.1.

Version 3.05.0003 - 04/2020

  1. For NCR based retail POS customers- Added support for NCR Direct I/O command in OPOS and JPOS drivers (Scanner and Scale).
  2. Faster wireless firmware update for select scanners over the Bluetooth Classic communication protocol. See 123Scan’s release notes per scanner for product support details.
  3. OPOS driver updated to comply with all Symbologies specified in the OPOS 1.14 specification.
  4. JPOS driver update. JPOS driver now uses a common code base with the more mature Linux JPOS driver.
  5. JPOS driver operation now also validated on OpenJDK 11, in addition to existing validation on the Oracle JDK.
  6. Updated the version of Visual C++ redistributable package from 2012 to 2017. Note redistributable package for 2012 is no longer included with the SMS.
  7. Removed Windows XP support.

Version 3.05.0001 - 01/2020

  1. Enhanced the OPOS driver to comply with the OPOS 1.14 specification on supported Symbologies.
  2. JPOS Driver

    1. Enhanced the JPOS driver to meet fully JPOS 1.14 specification compliance.
    2. Enhanced JPOS demo app to display barcode data in HEX format.
    3. Enhanced JPOS driver to support scanner configuration through a jpos.xml file.

Version 3.04.0011 - 10/2019

  1. Fixed WMI agent enabling filtering of scanner(s) when the configuration name contained unreadable characters.
  2. Fixed Windows 10 issue preventing scanner from returning barcode data in HIDKB mode after host PC logoff/logon or sleep mode event.
  3. Fixed a conflict when CoreScanner installed and pairing Bluetooth devices by searching the host PC.

Version 3.04.0007 - 07/2019

  1. Add support within OPOS driver for the following Symbologies: GS1 Data Matrix, QS1 QR and Grid Matrix.
  2. Enhanced the C# demo application: Added a RFID tab with Scan Scan Write functionality.

Version 3.04.0002 - 04/2019

  1. Added customizable logging module to CoreScanner. A user can now format the log file output to include parameters and layout from predefined options.
  2. Simulated HID Keyboard output, now handles German by setting “Keyboard emulation/locale” to “Default”. Other languages supported include English and French.

Version 3.03.0016 - 02/2019

  1. Fixed some bugs and improved stability in TWAIN driver.
  2. Fixed an issue in Scanner WMI provider regarding firmware download events.
  3. Fixed an issue with OPOS binary conversion.

Version 3.03.0013 - 11/2018

  1. Fixed firmware update failure (low occurrence problem).
  2. Updated SNAPI driver. It now includes a Microsoft signature.
  3. Implemented Scale OPOS driver beep on good read weight. This is a custom feature implemented to address a customer issue which can be enable through Windows registry configurations.
  4. Added support for NCR Direct IO command (DIO_NCR_SCAN_TONE).
  5. Introduced support for barcodes encoded with Windows’ code pages like Russian and Korean.
  6. Introduced registry entries

    1. to control the value of the OPOS Power State property.
    2. to configure scale behavior.
    3. to configure Windows’ code pages.
  7. Introduced support for the NCR direct I/O command to get the “Scale live weight” data.
  8. Fixed a security vulnerability – Exe execution can no longer introduce a shell command injection via filename.
  9. Fixed firmware update progress event missing issue with Scanner WMI provider.
  10. Minor bug fixes.

Version 3.02.0000 - 08/2017

  1. Updated JPOS sample application to demonstrate Direct I/O functionality.

Version 3.01.0000 - 09/2016

  1. Bluetooth support for cordless scanners without a cradle on Windows 7, 8 and 10 using Microsoft’s Bluetooth stack.
  2. OPOS support for “Not On File Beep” NCR capability.
  3. Source codes of Sample Applications updated to support Microsoft Visual Studio 2010 and above.

Version 3.00.0000 - 11/2015

  1. Rebranded Scanner SDK from Motorola to Zebra.
  2. Supports Windows 10 (32 and 64 bit).

Version 2.06.0000 - 11/2015

  1. Support for RFD8500 firmware update.

Version 2.05.0000 - 07/2015

  1. Support for new MP6000 firmware features.
  2. Stability enhancements.

Version 2.04.0000 - 08/2014

  1. OPOS Direct IO support.
  2. JPOS supports both 64bit and 32bit JVMs on 64bit platforms.
  3. Added support for 32bit OPOS drivers on 64bit platforms.
  4. Bug fixes.
  5. Security enhancements to address potential security vulnerabilities.

Version 2.03.0000 - 05/2014

  1. Driver ADF support.
  2. MP6000 Scale Live Weight Event support.
  3. Microsoft® Visual Studio Project Template provided for Zebra Scanner SDK.
  4. Bug fixes.

Version 2.02.0000 - 12/2013

  1. Supports Windows 8/8.1 (32 and 64 bit).
  2. Bug fixes.

Version 2.01.0000 - 08/2013

  1. Inter key delay feature in HID Keyboard emulation.
  2. Bug fixes.

Version 2.00.0000 - 06/2013

  1. Optimized log file operation.
  2. IBM Table Top host interface support.
  3. MP6000 scale commands added.
  4. MP6000 scale support for OPOS and JPOS.
  5. DWORD attribute support.
  6. Unsolicited scanner events (Topology changes and Decode data) support (Scanner firmware support required).
  7. Statistics support (Scanner firmware support required).

Version 1.02.0000 - 08/2012

  1. Codeless scanner plug-n-play events added (Require Firmware update, check scanner PRGs for firmware support availability).
  2. Simple Data Formatting feature added for emulated keyboard data.
  3. TWAIN Custom capabilities added.
  4. SNAPI scanner support added to Scanner WMI Provider.
  5. Enhanced InstallShield with more custom installation options.
  6. OPOS driver modified to support Multi-threaded apartment (in-proc/out-proc) POS applications (clients).
  7. Host variant switching support added for scanners with NULL synapse buffer.

Version 1.01.0000 - 03/2012

  1. 64-bit Windows 7 support added.
  2. TWAIN imaging interface supported.
  3. USB-CDC Serial Emulation mode supported. Com protocol switching partially supported – able to programmatically switch into USB-CDC host mode but not exist.

Version 1.00.0000 - 07/2011

  1. Supports Windows XP SP3 (32-bit) and Windows 7 (32-bit).
  2. RSM 2.0 Scanner Support.
  3. SNAPI faster firmware download support.
  4. Programmatic Host Variant Switching support.
  5. HID Keyboard Emulation support for English and French language keyboards.