About Scanner SDK for Windows


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 XP, Vista, 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.

            <datalabel>0x39 0x37 0x38 0x30 0x32 0x30 0x31 0x34</datalabel>
            <rawdata>0x39 0x37 0x38 0x30 0x32 0x30 0x31 0x34</rawdata>