Scanner SDK API

Overview

The Zebra Scanner SDK provides an easy to use yet powerful and extendible set of API commands to interface with scanner devices. The API commands include:

  • Open
  • GetScanners
  • ExecCommand
  • ExecCommandAsync
  • Close

Once the SDKs Open and GetScanners commands are invoked and the list of connected scanners is retrieved, all other methods execute through the ExecCommand and ExecCommandAsync commands. This is a user friendly approach, and easy to code in terms of day-to-day programming.

With the evolution of the SDK's capabilities, it is easier to increase the number of methods rather than increase the number of API commands. The benefit to the user is that, once you have the system up and running, a new method is just an additional operation to the existing code.

In addition to the commands above, the Zebra Scanner SDK supports seven types of events:

  • ImageEvent
  • VideoEvent
  • BarcodeEvent
  • PNPEvent
  • ScanRMDEvent
  • CommandResponseEvent
  • IOEvent
  • BinaryDataEvent

See Write Simple Application USing the Scanner SDK API for a starter example of an application illustrating the Zebra Scanner SDK API.

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.

References


Scanner ID

In the SDK context, scanner ID uniquely identifies a scanner device connected to the CoreScanner driver, and is required to communicate programmatically with the device. Developers need to call the GetScanners method of the CoreScanner API in order to retrieve the scanner IDs of connected devices. For example, to switch on a scanner's red LED, the scanner ID of that particular scanner must be obtained to provide that value in the <scannerID> element of inXML of the ExecCommand method call.

During each CoreScanner driver instance, scanner IDs are sequentially assigned to each connected device. When the CoreScanner driver is restarted, the array of connected scanners is reinitialized and previous scanner IDs may no longer be valid. In this case, the GetScanners method must be executed to obtain the new scanner IDs.

During a single CoreScanner driver instance, an RSM (Remote Scanner Management) supported scanner that is unplugged, and reconnected retaina its unique scanner ID. However, a non-RSM device is assigned a different scanner ID each time it is reconnected.


API Commands

Open

Opens an application instance from the user application or user library. This must be the first API command called before invoking any other API command from the user level application.

Syntax

C# C++

void Open(
    int reserved,
    System.Array sfTypes,
    short lengthOfTypes,
    out int status);


HRESULT STDMETHODCALLTYPE Open(
    /* [in] */ LONG reserved,
    /* [in] */ SAFEARRAY * sfTypes,
    /* [in] */ SHORT lengthOfTypes,
    /* [out] */ LONG *status) = 0;


Parameters

reserved - Reserved argument. Set to 0.

sfTypes - Selects the types of scanners requested for use with the API.

Table 1: Values for sfTypes

Code Value Scanner Category
SCANNER_TYPES_ALL 1 All Scanners
SCANNER_TYPES_SNAPI 2 SNAPI Scanners
SCANNER_TYPES_SSI 3 SSI Scanners (RS232)
SCANNER_TYPES_IBMHID 6 IBM Hand Held Scanners (USB OPOS)
SCANNER_TYPES_NIXMODB 7 Nixdorf Mode B scanners (RS232)
SCANNER_TYPES_HIDKB 8 USB HID Keyboard emulation scanners
SCANNER_TYPES_IBMTT 9 IBM Table Top Scanners

lengthOfTypes - Number of elements or the size of sfTypes array

status - Return value for the command

Return Values

0 - Success.

Any other value - See Error and Status Codes on Appendix.

GetScanners

Gets a list of scanners of the requested types that are connected at any time. This command should be invoked after the Open command.

Syntax

C# C++

void GetScanners(
    out short numberOfScanners, System.Array sfScannerIDList, out string outXML,
    out int status);


HRESULT STDMETHODCALLTYPE GetScanners(
    /* [out] */ SHORT *numberOfScanners,
    /* [out][in] */ SAFEARRAY * sfScannerIDList,
    /* [out] */ BSTR *outXML,
    /* [out] */ LONG *status) = 0;        


Parameters

numberOfScanners - Number of connected scanners of requested type(s).

sfScannerIDList - Array of scannerIDs of the requested type(s). The size of the array is 255 (MAX_NUM_DEVICES).

outXML - XML string-scanner meta information.

status - Return value for the command.

Return Values

0 - Success.

Any other value - See Error and Status Codes on Appendix.

ExecCommand

Provides synchronous execution of a method via an opcode.

Syntax

C# C++

void ExecCommand(
    int opcode,
    ref string inXML,
    out string outXML,
    out int status);        


HRESULT STDMETHODCALLTYPE ExecCommand(
    /* [in] */ LONG opcode,
    /* [in] */ BSTR *inXML,
    /* [out] */ BSTR *outXML,
    /* [out] */ LONG *status) = 0;              


Parameters

opcode - Method to be executed. See Appendix for opcodes.

inXML - Relevant argument list for the opcode, structured into an XML string.

outXML - XML string, scanner meta information.

status - Return value for the command.

Return Values

0 - Success.

Any other value - See Error and Status Codes on Appendix.

ExecCommandAsync

Provides asynchronous execution of a method via an opcode. Any response data is retrieved as CommandResponseEvents.


HRESULT STDMETHODCALLTYPE ExecCommandAsync(
    /* [in] */ LONG opcode,
    /* [in] */ BSTR *inXML,
    /* [out] */ LONG *status) = 0;

Syntax

C# C++

void ExecCommandAsync(
    int opcode,
    ref string inXML,
    out int status);


HRESULT STDMETHODCALLTYPE ExecCommandAsync(
    /* [in] */ LONG opcode,
    /* [in] */ BSTR *inXML,
    /* [out] */ LONG *status) = 0;                    


Parameters

opcode - Method to be executed. See Appendix for opcodes.

inXML - Relevant argument list for the opcode, structured into an XML string.

outXML - XML string, scanner meta information.

status - Return value for the command.

Return Values

0 - Success.

Any other value - See Error and Status Codes on Appendix.

Close

Closes the application instance through the CoreScanner service.

Syntax

C# C++

void Close(
    int reserved,
    out int status);


HRESULT STDMETHODCALLTYPE ExecCommandAsync(
    /* [in] */ LONG opcode,
    /* [in] */ BSTR *inXML,
    /* [out] */ LONG *status) = 0;                    


Parameters

reserved - Reserved argument. Set to 0.

status - Return value for the command.

Return Values

0 - Success.

Any other value - See Error and Status Codes on Appendix.


API Events

The user application must register for each event category separately to receive events for that category. Use the methods REGISTER_FOR_EVENTS and UNREGISTER_FOR_EVENTS for this purpose (see Table 2 on Appendix).

ImageEvent

Triggered when an imaging scanner captures images in image mode. To receive ImageEvents, an application needs to execute the REGISTER_FOR_EVENTS method with the SUBSCRIBE_IMAGE event type.

Syntax

C# C++

void OnImageEvent(
    short eventType
    int size
    short imageFormat,
    ref object sfimageData,
    ref string pScannerData)


void OnImageEvent(
    SHORT eventType,
    LONG size,
    SHORT imageFormat,
    VARIANT *sfImageData,
    BSTR* pScannerData)


Parameters

eventType - Type of image event received (see Table 2).

Table 2: Image Event Types

Event Type Value Description
IMAGE_COMPLETE 1 Triggered when complete image captured
IMAGE_TRAN_STATUS 2 Triggered when image error or status

size - Size of image data buffer.

imageFormat - Format of image. (see Table 3)

Table 3: Image Formats

Event Type Value
JPEG_FILE_SELECTION 1
BMP_FILE_SELECTION 3
TIFF_FILE_SELECTION 4

sfimageData - Image data buffer.

pScannerData - Information in XML format about the scanner (ID, Model Number, Serial Number and GUID) that triggered the image event.


<?xml version="1.0" encoding="UTF-8"?>
<outArgs>
    <scannerID>1</scannerID>
    <arg-xml>
        <modelnumber>DS6707-SR20001ZZR</modelnumber>
        <serialnumber>7114000503322</serialnumber>
        <GUID>33C01F39EB23D949B5F3DBF643304FC4</GUID>
    </arg-xml>
</outArgs>

VideoEvent

Triggered when an imaging scanner captures video in video mode. To receive VideoEvents, an application needs to execute the REGISTER_FOR_EVENTS method with the SUBSCRIBE_VIDEO event type.

Syntax

C# C++

void OnVideoEvent(
    short eventType,
    int size,
    ref object sfvideoData,
    ref string pScannerData)


void OnVideoEvent(
    SHORT eventType,
    LONG size,
    VARIANT *sfvideoData,
    BSTR* pScannerData)


Parameters

eventType - Type of video event received (see Table 4).

Table 4: Video Event Types

Event Type Value Description
VIDEO_FRAME_COMPLETE 1 Triggered when complete video frame is captured.

size - Size of video data buffer.

sfvideoData - Video data buffer.

pScannerData - Reserved parameter: always returns an empty string.

BarcodeEvent

Triggered when a scanner captures barcodes. To receive BarcodeEvents, an application needs to execute the REGISTER_FOR_EVENTS method with the SUBSCRIBE_BARCODE event type.

Syntax

C# C++

void OnBarcodeEvent(
    short eventType,
    ref string pscanData)


void OnBarcodeEvent(
    SHORT eventType,
    BSTR pscanData )


Parameters

eventType - Type of video event received (see Table 5).

Table 5: Barcode Event Types

Event Type Value Description
SCANNER_DECODE_GOOD 1 Triggered when a decode is successful.

pscanData - Barcode string that contains information about the scanner that triggered the barcode event including data type, data label and raw data of the scanned barcode.


<?xml version="1.0" encoding="UTF-8"?>
<outArgs>
    <scannerID>1</scannerID>
    <arg-xml>
        <scandata>
            <modelnumber>DS6707-SR20001ZZR</modelnumber>
            <serialnumber>7114000503322</serialnumber>
            <GUID>33C01F39EB23D949B5F3DBF643304FC4</GUID>
            <datatype>8</datatype>
            <datalabel>0x30 0x32 0x31 0x38 0x39 0x38 0x36 0x32</datalabel>
            <rawdata>0x30 0x32 0x31 0x38 0x39 0x38 0x36 0x32</rawdata>
        </scandata>
    </arg-xml>
</outArgs>

The value of the <datatype> in the XML above indicates the barcode type of the scanned barcode.

Table 6 lists the values received in IBM Hand-Held USB, SNAPI and Wincor-Nixdorf RS-232 Mode B communication protocols for each supported barcode type.

Table 6: Barcode Data Types

Barcode Data Types Communication Protocol
SNAPI IBM Hand-Held NIXDORF Mode B
Code 39 1 1 1
Codabar 2 2 2
Code 128 3 3 3
Discrete (Standard) 2 of 5 4 4 4
IATA 5 N/A 4
Interleaved 2 of 5 6 6 6
Code 93 7 7 7
UPC-A 8 8 8
UPC-E0 9 9 9
EAN-8 10 10 10
EAN-13 11 11 8
Code 11 12 N/A N/A
Code 49 13 13 N/A
MSI 14 N/A 14
EAN-128 15 15 15
UPC-E1 16 N/A N/A
PDF-417 17 17 17
Code 16K 18 N/A N/A
Code 39 Full ASCII 19 N/A N/A
UPC-D 20 N/A N/A
Code 39 Trioptic 21 N/A N/A
Bookland 22 N/A 8
Coupon Code 23 N/A N/A
NW-7 24 N/A N/A
ISBT-128 25 N/A N/A
Micro PDF 26 N/A 26
DataMatrix 27 27 27
QR Code 28 28 28
Micro PDF CCA 29 N/A N/A
PostNet US 30 N/A N/A
Planet Code 31 N/A N/A
Code 32 32 N/A N/A
ISBT-128 Con 33 N/A N/A
Japan Postal 34 N/A N/A
Australian Postal 35 N/A N/A
Dutch Postal 36 N/A N/A
MaxiCode 37 37 37
Canadian Postal 38 N/A N/A
UK Postal 39 N/A N/A
Macro PDF N/A N/A
Micro QR code 44 44 28
Aztec 45 45 45
GS1 Databar (RSS-14) 48 48 48
RSS Limited 49 49 49
GS1 Databar Expanded (RSS Expanded) 50 50 50
Scanlet 55 N/A N/A
UPC-A + 2 Supplemental 72 72 N/A
UPC-E0 + 2 Supplemental 73 73 N/A
EAN-8 + 2 Supplemental 74 74 N/A
EAN-13 + 2 Supplemental 75 75 N/A
UPC-E1 + 2 Supplemental 80 N/A N/A
CCA EAN-128 81 N/A N/A
CCA EAN-13 82 N/A N/A
CCA EAN-8 83 N/A N/A
CCA RSS Expanded 84 N/A N/A
CCA RSS Limited 85 N/A N/A
CCA RSS-14 86 N/A N/A
CCA UPC-A 87 N/A N/A
CCA UPC-E 88 N/A N/A
CCC EAN-128 89 N/A N/A
TLC-39 90 N/A N/A
CCB EAN-128 97 N/A N/A
CCB EAN-13 98 N/A N/A
CCB EAN-8 99 N/A N/A
CCB RSS Expanded 100 N/A N/A
CCB RSS Limited 101 N/A N/A
CCB RSS-14 102 N/A N/A
CCB UPC-A 103 N/A N/A
CCB UPC-E 104 N/A N/A
Signature Capture 105 N/A N/A
Matrix 2 of 5 113 N/A N/A
Chinese 2 of 5 114 N/A N/A
UPC-A + 5 Supplemental 136 136 N/A
UPC-E0 + 5 Supplemental 137 137 N/A
EAN-8 + 5 Supplemental 138 138 N/A
EAN-13 + 5 Supplemental 139 139 N/A
UPC-E1 + 5 Supplemental 144 N/A N/A

NOTE A barcode data type marked as N/A is unsupported by that communication protocol. The SDK typically returns a value of 0 for these barcode data types. However, in some cases the SDK may identify these symbologies as a related data type. For example, UPC-A + 2 Supplemental is not a supported symbology in Nixdorf Mode B but the SDK identifies it as UPC-A.

PNPEvent

Triggered when a scanner of a requested type attaches to the system or detaches from the system. The pairing of a Bluetooth scanner to a cradle does not trigger a PnP event. To receive information about a newly paired device, the GetScanners command must be called again. To receive PnPEvents, an application needs to execute the REGISTER_FOR_EVENTS method with the SUBSCRIBE_PNP event type.

Syntax

C# C++

void OnPNPEvent(
    short eventType,
    ref string ppnpData)


void OnPNPEvent(
    SHORT eventType, 
    BSTR ppnpData)


Parameters

eventType - Type of PnP event received (see Table 7).

Table 7: PNP Event Types

Event Type Value Description
SCANNER_ATTACHED 0 Triggered when a Zebra Scanner is attached.
SCANNER_DETACHED 1 Triggered when a Zebra Scanner is detached.

ppnpData - PnP information string containing the asset tracking information of the attached or detached device.

Samples

Sample ppnpData XML for attachment of a direct scanner.


<?xml version="1.0" encoding="UTF-8"?>
<outArgs>
    <arg-xml>
        <scanners>
            <scanner type="SNAPI">
                <scannerID>1</scannerID>
                <modelnumber>DS9808-SR00007C1WR</modelnumber>
                <serialnumber>1026300507698  </serialnumber>
                <GUID>77E48FC31C75444B90BE318FECFAE867</GUID>
            </scanner>
        </scanners>
        <status>1</status>
    </arg-xml>
</outArgs>

Sample ppnpData XML for attachment of a cascaded scanner. This XML can be received as a PnP event after a GetScanners command, if there are devices newly paired to a Bluetooth cradle.


<?xml version="1.0" encoding="UTF-8"?>
<outArgs>
    <arg-xml> 
        <scanners>
            <scanner type="USBIBMHID">
                <scannerID>1</scannerID> <!-- Information about Bluetooth Cradle -->
                <modelnumber>CR0078-SC10007WR </modelnumber>
                <serialnumber>1020800512980  </serialnumber>
                <GUID>3665579766A9514DAAF523D35E051674</GUID> 
                <pnp>0</pnp>
                <scanner type="USBIBMHID">
                    <scannerID>2</scannerID> <!-- Information about Bluetooth Scanner -->
                    <modelnumber>DS6878-SR20007WR </modelnumber>
                    <serialnumber>M1M87R38Y      </serialnumber>
                    <GUID></GUID>
                    <pnp>1</pnp>
                </scanner>
            </scanner>
        </scanners>
        <status>1</status>
    </arg-xml>
</outArgs>

ScanRMDEvent

Receives RMD Events when updating firmware of the scanner. To receive RMD Events, an application needs to execute the REGISTER_FOR_EVENTS method with the SUBSCRIBE_RMD event type.

Syntax

C# C++

void OnScanRMDEvent(
    short eventType,
    ref string prmdData)


void OnScanRMDEvent(
    SHORT eventType,
    BSTR prmdData)


Parameters

eventType - Type of the RMD event received (see Table 8).

prmdData - ScanRMD information string containing the data of event. (See Firmware Upgrade Scenarios for more details on this string.)

Table 8: RMD Event Types

Event Type Value Description
SCANNER_UF_SESS_START 11 Triggered when flash download session starts.
SCANNER_UF_DL_START 12 Triggered when component download starts.
SCANNER_UF_DL_PROGRESS 13 Triggered when block(s) of flash completed.
SCANNER_UF_DL_END 14 Triggered when component download ends.
SCANNER_UF_SESS_END 15 Triggered when flash download session ends.
SCANNER_UF_STATUS 16 Triggered when update error or status.

CommandResponseEvent

Received after an asynchronous command execution (ExecCommandAsync). To receive CommandResponseEvents, an application needs to execute the REGISTER_FOR_EVENTS method with the SUBSCRIBE_OTHER event type.

Syntax

C# C++

void OnCommandResponseEvent(
    short status,
    ref string prspData)


void OnScanRMDEvent(
    SHORT status,
    BSTR prspData)


Parameters

status - Status of the executed command. (See Error and Status Codes on Appendix.)

prspData - CommandResponse information string that contains the outXML of the executed command.

IOEvent

Received when an exclusively claimed device is accessed by another client application. To receive IOEvents, an application needs to execute the REGISTER_FOR_EVENTS method with the SUBSCRIBE_OTHER event type. Standard practice is that an application handles these IO Events once it has claimed a scanner. While that application has the scanner claimed, other applications get STATUS_LOCKED when they try to execute commands directed toward the claimed scanner.

Syntax

C# C++

void OnIOEvent(
    short type,
    byte data)


void OnIOEvent(
    short type,
    BYTE data)


Parameters

type - Reserved parameter.

data - Reserved parameter.

ScannerNotificationEvent

Received when a SNAPI scanner changes its operational mode. To receive ScannerNotificationEvents, an application needs to execute the REGISTER_FOR_EVENTS method with the SUBSCRIBE_OTHER event type.

Syntax

C# C++

void OnScannerNotification(
    short notificationType,
    ref string pScannerData)


void OnScannerNotification(
    short notificationType,
    BSTR pScannerData)


Parameters

notificationType - Type of the notification event received (see Table 9).

pScannerData - Information about the scanner (ID, Model Number, Serial Number and GUID) that triggered the notification event.

Table 9: Notification Event Types

Event Type Value Description
DECODE_MODE 1 Triggered when a scanner changes its operation mode to decode.
SNAPSHOT_MODE 2 Triggered when a scanner changes its operation mode to image mode.
VIDEO_MODE 3 Triggered when a scanner changes its operation mode to video mode.

BinaryDataEvent

Triggered when an IDC-supported imaging scanner captures an image in Intelligent Document Capture (IDC) or Signature Capture mode. To receive a BinaryDataEvent, an application needs to execute the REGISTER_FOR_EVENT method with the SUBSCRIBE_IMAGE event type.

Syntax

C# C++

void On_BinaryDataEvent(
    short eventType,
    int size,
    short dataFormat,
    ref object sfBinaryData, ref string pScannerData)


void OnBinaryDataEvent(
    SHORT eventType,
    LONG size,
    SHORT dataFormat,
    VARIANT * sfBinaryData, BSTR* pScannerData)


Parameters

eventType - Reserved.

size - Size of the BinaryData data buffer.

dataFormat - The format of the Binary DataEvent (see Table 10).

Table 10 Binary Data Event Types (Data Format)

Date Format Description
0xB5 IDC Format
0x69 Signature Capture Format

sfBinaryData - IDC/Signature Capture data buffer.

pScannerData - Information in XML format about the scanner (ID, Model Number, Serial Number, and GUID) that triggered the BinaryDataEvent.


<?xml version="1.0" encoding="UTF-8"?>
<outArgs>
    <scannerID>1</scannerID>
    <arg-xml>
        <modelnumber>DS6707-DC20007ZZR </modelnumber>
        <serialnumber>1222800502597  </serialnumber>
        <GUID>28B8BF91FB7F3A459CFF63BAEFDC767B</GUID>
        <channel>usb_BULK</channel>
    </arg-xml>
</outArgs>                                                            

NOTED The <channel> tag in the XML above refers to the USB channel which the scanner uses to send the Binary data. This can be usb_BULK or usb_HID.

Both Intelligent Document Capture (IDC) and Signature Capture data are presented with the BinaryDataEvent. This event is fired by the CoreScanner service when this binary capture data is available. A client application has to register for image events using the RegisterForEvents opcode in order to receive BinaryDataEvents from the CoreScanner driver. The image data payload of a BinaryDataEvent is passed through the VARIANT type argument sfBinaryData. The event type captured, IDC or Signature, is specified with the dataFormat parameter of the event handler function. Document Capture data is formatted according to the ISO15434 Specification (see Description of Intelligent Document Capture Format for details). Signature Capture data is formatted with the Zebra standard image format (refer to Signature Capture in the Appendix of Product Reference Guide for the image scanner in use).


Using the Methods (Examples)

NOTE The inXML segments that follow are only examples. The inXML strings must be customized by the programmer based on each user's requirements.
GET_VERSION (Value 1000)
Description Gets the version of CoreScanner Driver
Asynchronous supported No
Supported Scanner Communication Protocols N/A
InXml

<inArgs></inArgs>

OutXml

Version of the CoreScanner.


<?xml version="1.0" encoding="UTF-8"?>
<outArgs>
    <arg-xml>
        <arg-string>01.00.00</arg-string>
    </arg-xml>
</outArgs> 

REGISTER_FOR_EVENTS (Value 1001)
Description Register for API events described API Events above.
Asynchronous supported No
Supported Scanner Communication Protocols N/A
InXml

<inArgs>
    <cmdArgs>
        <arg-int>6</arg-int> <!-- Number of Events -->
        <arg-int>1,2,4,8,16,32</arg-int> <!-- Event ID(s) -->
    </cmdArgs>
</inArgs>

Table 11 lists the Event IDs for the inXML code above.

Table 11 Event IDs

Event Name Event ID
SUBSCRIBE_BARCODE 1
SUBSCRIBE_IMAGE 2
SUBSCRIBE_VIDEO 4
SUBSCRIBE_RMD 8
SUBSCRIBE_PNP 16
SUBSCRIBE_OTHER 32
OutXml

null

UNREGISTER_FOR_EVENTS (Value 1002)
Description Register for API events described API Events above.
Asynchronous supported No
Supported Scanner Communication Protocols N/A
InXml

<inArgs>
    <cmdArgs>
        <arg-int>6</arg-int> <!-- Number of Events --> 
        <arg-int>1,2,4,8,16,32</arg-int> <!-- Event ID(s) -->
    </cmdArgs>
</inArgs>

OutXml

null

CLAIM_DEVICE (Value 1500)
Description Claim a specified device.
Asynchronous supported No
Supported Scanner Communication Protocols N/A
InXml

<inArgs>
    <scannerID>1</scannerID> <!-- Specified Scanner ID  -->
</inArgs>

OutXml

null

RELEASE_DEVICE (Value 1501)
Description Release a specified device.
Asynchronous supported No
Supported Scanner Communication Protocols N/A
InXml

<inArgs>
    <scannerID>1</scannerID> <!-- Specified Scanner ID  -->
</inArgs>

OutXml

null

ABORT_MACROPDF (Value 2000)
Description Abort MacroPDF of a specified scanner.
Asynchronous supported No
Supported Scanner Communication Protocols SNAPI

<inArgs>
    <scannerID>1</scannerID> <!-- Specified Scanner ID  -->
</inArgs>

OutXml

null

ABORT_UPDATE_FIRMWARE (Value 2001)
Description Abort Firmware updates process of a specified scanner while it is progressing.
Asynchronous supported No
Supported Scanner Communication Protocols IBM Hand-held, IBM Table-top, SNAPI, SSI
InXml

<inArgs>
    <scannerID>1</scannerID> <!-- Specified Scanner ID  -->
</inArgs>

OutXml

null

WARNING! If the scanners firmware is not backup protected, issuing this command during a firmware update may cause a corruption leaving the scanner inoperable. For models that are backup protected refer to the Scanner SDK for Windows website at: www.zebra.com/scannersdkforwindows.
AIM_OFF (Value 2002)
Description Turn off the aiming of a specified scanner.
Asynchronous supported No
Supported Scanner Communication Protocols SNAPI

<inArgs>
    <scannerID>1</scannerID> <!-- Specified Scanner ID  -->
</inArgs>

OutXml

null

AIM_ON (Value 2003)
Description Turn on the aiming of a specified scanner.
Asynchronous supported No
Supported Scanner Communication Protocols SNAPI

<inArgs>
    <scannerID>1</scannerID> <!-- Specified Scanner ID  -->
</inArgs>

OutXml

null

FLUSH_MACROPDF (Value 2005)
Description Flush MacroPDF of a specified scanner.
Asynchronous supported No
Supported Scanner Communication Protocols SNAPI
InXml

<inArgs>
    <scannerID>1</scannerID> <!-- Specified Scanner ID  -->
</inArgs>

OutXml

null

DEVICE_PULL_TRIGGER (Value 2011)
Description Pull the trigger of a specified scanner.
Asynchronous supported N/A
Supported Scanner Communication Protocols SNAPI, IBM Hand-held*, IBM Table-top*, SSI*

* Supported auxiliary scanners if the firmware supports.

InXml

<inArgs>
    <scannerID>1</scannerID> <!-- Specified Scanner ID  -->
</inArgs>

OutXml

null

DEVICE_RELEASE_TRIGGER (Value 2012)
Description Release the pulled trigger of a specified scanner.
Asynchronous supported N/A
Supported Scanner Communication Protocols SNAPI, IBM Hand-held*, IBM Table-top*, SSI*

* Supported auxiliary scanners if the firmware supports.

InXml

<inArgs>
    <scannerID>1</scannerID> <!-- Specified Scanner ID  -->
</inArgs>

OutXml

null

SCAN_DISABLE (Value 2013)
Description Disable scanning on a specified scanner
Asynchronous supported N/A
Supported Scanner Communication Protocols SNAPI, IBM Hand-held, IBM Table-top, Nixdorf Mode B, SSI
InXml

<inArgs>
    <scannerID>1</scannerID> <!-- Specified Scanner ID  -->
</inArgs>

OutXml

null

SCAN_ENABLE (Value 2014)
Description Enable scanning on a specified scanner
Asynchronous supported N/A
Supported Scanner Communication Protocols SNAPI, IBM Hand-held, IBM Table-top, Nixdorf Mode B, SSI
InXml

<inArgs>
    <scannerID>1</scannerID> <!-- Specified Scanner ID  -->
</inArgs>

OutXml

null

SET_PARAMETER_DEFAULTS (Value 2015)
Description Set parameters to default values of a specified scanner.
Asynchronous supported No
Supported Scanner Communication Protocols SNAPI
InXml

<inArgs>
    <scannerID>1</scannerID> <!-- Specified Scanner ID  -->
</inArgs>

OutXml

null

DEVICE_SET_PARAMETERS (Value 2016)
Description Set parameter(s) of a specified scanner temporarily. Parameters set using this command are lost after the next power down.
Asynchronous supported No
Supported Scanner Communication Protocols SNAPI
InXml

<inArgs>
    <scannerID>1</scannerID> <!-- Specified Scanner ID -->
    <cmdArgs>
        <arg-xml>
            <attrib_list>
                <attribute>
                    <id>145</id> <!-- Attribute Number -->
                    <datatype>B</datatype> <!-- Attribute Type -->
                    <value>0</value> <!-- Attribute Value -->
                </attribute>
            </attrib_list>
        </arg-xml>
    </cmdArgs>
</inArgs>

OutXml

null

NOTE Refer to the pertinent scanner's Product Reference Guide for supported attribute numbers, types, and possible values.
SET_PARAMETER_PERSISTANCE (Value 2017)
Description Set parameter(s) of a specified scanner persistently. Parameters set using this command are persistent over power down and power up cycles.
Asynchronous supported No
Supported Scanner Communication Protocols SNAPI
InXml

<inArgs>
    <scannerID>1</scannerID> <!-- Specified Scanner ID -->
    <cmdArgs>
        <arg-xml>
            <attrib_list>
                <attribute>
                    <id>145</id> <!-- Attribute Number -->
                    <datatype>B</datatype> <!-- Attribute Type -->
                    <value>0</value> <!-- Attribute Value -->
                </attribute>
            </attrib_list>
        </arg-xml>
    </cmdArgs>
</inArgs>

OutXml

null

REBOOT_SCANNER (Value 2019)
Description Reboot a specified scanner. Direct execution of this command on a Bluetooth scanner does not result in a reboot. This command needs to be sent to the scanner's associated cradle to reboot the Bluetooth scanner.
Asynchronous supported N/A
Supported Scanner Communication Protocols IBM Hand-held, IBM Table-top, SNAPI, SSI
InXml

<inArgs>
    <scannerID>1</scannerID> <!-- Specified Scanner ID  -->
</inArgs>

OutXml

null

DEVICE_CAPTURE_IMAGE (Value 3000)
Description Change a specified scanner to snapshot mode. While in this mode, an imaging scanner blinks the green LED at one second intervals to indicate it is not in standard operating (decode) mode. The scanner comes to its standard operating mode after a trigger pull or the snapshot time out is exceeded. After a trigger pull, the CoreScanner driver triggers an ImageEvent containing the captured image.
Asynchronous supported N/A
Supported Scanner Communication Protocols SNAPI
InXml

<inArgs>
    <scannerID>1</scannerID> <!-- Specified Scanner ID  -->
</inArgs>

OutXml

null

DEVICE_CAPTURE_BARCODE (Value 3500)
Description Change a specified scanner to decode mode.
Asynchronous supported N/A
Supported Scanner Communication Protocols SNAPI
InXml

<inArgs>
    <scannerID>1</scannerID> <!-- Specified Scanner ID  -->
</inArgs>

OutXml

null

DEVICE_CAPTURE_VIDEO (Value 4000)
Description Change a specified scanner to video mode. In this mode, the imaging scanner behaves as a video camera as long as the trigger is pulled. When the trigger is released, the scanner returns to Decode Mode. As long as the trigger is pulled, the CoreScanner driver triggers VideoEvents that contain the video data.
Asynchronous supported N/A
Supported Scanner Communication Protocols SNAPI
InXml

<inArgs>
    <scannerID>1</scannerID> <!-- Specified Scanner ID  -->
</inArgs>

OutXml

null

ATTR_GETALL (Value 5000)
Description Get all the attributes of a specified scanner. A synchronous call of this method returns an outXML like the example below. An asynchronous call of this event triggers a CommandResponseEvent.
Asynchronous supported Yes
Supported Scanner Communication Protocols IBM Hand-held, IBM Table-top, SNAPI, SSI
InXml

<inArgs>
    <scannerID>1</scannerID> <!-- Specified Scanner ID  -->
</inArgs>

OutXml

<?xml version="1.0" encoding="UTF-8" ?>
<outArgs>
    <scannerID>1</scannerID> <!-- Scanner ID of Data Receiving -->
    <arg-xml>
        <modelnumber>DS6700-SR20001ZZR</modelnumber>
        <serialnumber>7116000501003</serialnumber>
        <GUID>A2E647DED2163545B18BCEBD0A2A133D</GUID> <!-- Asset Tracking Information of the Scanner -->
        <response>
            <opcode>5000</opcode> <!-- Method Response Received -->
            <attrib_list>
                <attribute name="">0</attribute> <!-- Attribute Numbers -->
                <attribute name="">1</attribute>
                <attribute name="">2</attribute>
                <attribute name="">3</attribute>
                <attribute name="">4</attribute>
                <attribute name="">5</attribute>
                <attribute name="">6</attribute>
                <attribute name="">7</attribute>
                <attribute name="">8</attribute>
                <attribute name="">9</attribute>
                <attribute name="">10</attribute>
                <attribute name="">11</attribute>
                <attribute name="">12</attribute>
                <attribute name="">13</attribute>
                <attribute name="">14</attribute>
                <attribute name="">15</attribute>
                <attribute name="">16</attribute>
                <attribute name="">17</attribute>
                <attribute name="">18</attribute>
                <attribute name="">19</attribute>
                <attribute name="">20</attribute>
                <attribute name="">21</attribute>
                <attribute name="">22</attribute>
                <attribute name="">23</attribute>
                <attribute name="">24</attribute>
                <attribute name="">25</attribute>
                <attribute name="">26</attribute>
                <attribute name="">27</attribute>
                <attribute name="">28</attribute>
                <attribute name="">29</attribute>
                <attribute name="">30</attribute>
                <attribute name="">31</attribute>
                <attribute name="">34</attribute>
                <attribute name="">35</attribute>
                <attribute name="">36</attribute>
                <attribute name="">37</attribute>
                <attribute name="">38</attribute>
                <attribute name="">39</attribute>
                <attribute name="">655</attribute>
                <attribute name="">656</attribute>
                <attribute name="">657</attribute>
                <attribute name="">658</attribute>
                <attribute name="">659</attribute>
                <attribute name="">665</attribute>
                <attribute name="">670</attribute>
                <attribute name="">672</attribute>
                <attribute name="">673</attribute>
                <attribute name="">705</attribute>
                <attribute name="">716</attribute>
                <attribute name="">718</attribute>
                <attribute name="">721</attribute>
                <attribute name="">724</attribute>
                <attribute name="">726</attribute>
                <attribute name="">727</attribute>
                <attribute name="">728</attribute>
                <attribute name="">730</attribute>
                <attribute name="">731</attribute>
                <attribute name="">734</attribute>
                <attribute name="">735</attribute>
                <attribute name="">745</attribute>
                <attribute name="">6000</attribute>
                <attribute name="">6001</attribute>
                <attribute name="">6002</attribute>
                <attribute name="">6003</attribute>
                <attribute name="">6004</attribute>
                <attribute name="">20004</attribute>
                <attribute name="">20006</attribute>
                <attribute name="">20007</attribute>
                <attribute name="">20008</attribute>
                <attribute name="">20009</attribute>
                <attribute name="">20010</attribute>
                <attribute name="">20011</attribute>
                <attribute name="">20013</attribute>
            </attrib_list>
        </response>
    </arg-xml>
</outArgs>

NOTE Refer to the pertinent scanner's Product Reference Guide for supported attribute numbers, types, and possible values.
ATTR_GET (Value 5001)
Description Query the values of attribute(s) of a specified scanner. An synchronous call of this method returns outXML like the example below. An asynchronous call of this event triggers a CommandResponseEvent.
Asynchronous supported Yes
Supported Scanner Communication Protocols IBM Hand-held, IBM Table-top, SNAPI, SSI
InXml

<inArgs>
    <scannerID>1</scannerID> <!-- Specified Scanner ID -->
    <cmdArgs>
        <arg-xml>
            <attrib_list>535,20004,1,140,392</attrib_list> <!-- Required Attribute Numbers -->
        </arg-xml>
    </cmdArgs>
</inArgs>        

OutXml

<?xml version="1.0" encoding="UTF-8" ?>
<outArgs>
    <scannerID>1</scannerID> <!-- Scanner ID of Data Receiving -->
    <arg-xml>
        <modelnumber>DS670-SR20001ZZR</modelnumber>
        <serialnumber>7116000501003</serialnumber>
        <GUID>A2E647DED2163545B18BCEBD0A2A133D</GUID> <!-- Asset Tracking Information of the Scanner -->
        <response>
            <opcode>5001</opcode> <!-- Method Response Received  -->
            <attrib_list>
                <attribute>
                    <id>535</id> <!-- Attribute Number -->
                    <name></name> <!-- Attribute Name -->
                    <datatype>S</datatype> <!-- Attribute Data Type -->
                    <permission>R</permission> <!-- Permissions of the Attribute -->
                    <value>27APR07</value> <!-- Attribute Value -->
                </attribute>
                <attribute>
                    <id>20004</id>
                    <name></name>
                    <datatype>S</datatype>
                    <permission>R</permission>
                    <value>DS6707X4</value>
                </attribute>
                <attribute>
                    <id>1</id>
                    <name></name>
                    <datatype>F</datatype>
                    <permission>RWP</permission>
                    <value>True</value>
                </attribute>
                <attribute>
                    <id>140</id>
                    <name></name>
                    <datatype>B</datatype>
                    <permission>RWP</permission>
                    <value>0</value>
                </attribute>
                <attribute>
                    <id>392</id>
                    <name></name>
                    <datatype>A</datatype>
                    <permission>RWP</permission>
                    <value>0x01 0x00 0x58 0x55 0x41 0x00 0x0b 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00</value>
                </attribute>
            </attrib_list>
        </response>
    </arg-xml>
</outArgs>

ATTR_GETNEXT (Value 5002)
Description Query the value of the next attribute to a given attribute of a specified scanner. A synchronous call of this method returns an outXML like the example below. An asynchronous call of this event triggers a CommandResponseEvent.
Asynchronous supported Yes
Supported Scanner Communication Protocols IBM Hand-held, IBM Table-top, SNAPI, SSI
InXml

<inArgs>
    <scannerID>1</scannerID> <!-- Specified Scanner ID -->
    <cmdArgs>
        <arg-xml>
            <attrib_list>14</attrib_list> <!-- Attribute Numbers -->
        </arg-xml>
    </cmdArgs>
</inArgs>        

OutXml

<?xml version="1.0" encoding="UTF-8"?>
<outArgs>
    <scannerID>1</scannerID> <!-- Scanner ID of Data Receiving  -->
    <arg-xml>
        <modelnumber>DS670-SR20001ZZR</modelnumber>
        <serialnumber>7116000501003</serialnumber>
        <GUID>A2E647DED2163545B18BCEBD0A2A133D</GUID> <!-- Asset Tracking Information of the Scanner -->
        <response>
            <opcode>5002</opcode> <!-- Method Response Received -->
            <attrib_list>
                <attribute> 
                    <id>15</id>
                    <name></name>
                    <datatype>F</datatype>
                    <permission>RWP</permission>
                    <value>True</value>
                </attribute>
            </attrib_list>
        </response>
    </arg-xml>
</outArgs>

NOTE If the next available attribute is not readable (for example, an Action attribute), this command returns the next available readable attribute value.
ATTR_SET (Value 5004)
Description Set the values of attribute(s) of a specified scanner. Attribute(s) set using this command are lost after the next power down.
Asynchronous supported Yes
Supported Scanner Communication Protocols IBM Hand-held, IBM Table-top, SNAPI, SSI
InXml

<inArgs>
    <scannerID>1</scannerID> <!-- Specified Scanner ID -->
    <cmdArgs>
        <arg-xml>
            <attrib_list>
                <attribute>
                    <id>1</id> <!-- Attribute Number -->
                    <datatype>F</datatype> <!-- Attribute Data Type -->
                    <value>False</value> <!-- Attribute Value -->
                </attribute>
            </attrib_list>
        </arg-xml>
    </cmdArgs>
</inArgs>

OutXml

null

ATTR_STORE (Value 5005)
Description Store the values of attribute(s) of a specified scanner. Attribute(s) store using this command are persistent over power down and power up cycles.
Asynchronous supported Yes
Supported Scanner Communication Protocols IBM Hand-held, IBM Table-top, SNAPI, SSI
InXml

<inArgs>
    <scannerID>1</scannerID> <!-- Specified Scanner ID -->
    <cmdArgs>
        <arg-xml>
            <attrib_list>
                <attribute>
                    <id>1</id> <!-- Attribute Number -->
                    <datatype>F</datatype> <!-- Attribute Data Type -->
                    <value>False</value> <!-- Attribute Value -->
                </attribute>
            </attrib_list>
        </arg-xml>
    </cmdArgs>
</inArgs>

OutXml

null

GET_DEVICE_TOPOLOGY (Value 5006)
Description Get the topology of devices that are connected to the calling system.
Asynchronous supported No
Supported Scanner Communication Protocols IBM Hand-held, IBM Table-top, SNAPI, SSI
InXml

<inArgs></inArgs>

OutXml

<?xml version="1.0" encoding="UTF-8"?>
<outArgs>
    <arg-xml>
        <scanners>
            <scanner type="SNAPI"> <!-- Scanner Type -->
                <scannerID>1</scannerID>
                <modelnumber>DS670-SR20001ZZR</modelnumber>
                <serialnumber>7116000501003</serialnumber>
                <GUID>A2E647DED2163545B18BCEBD0A2A133D</GUID>
                <VID>1504</VID>
                <PID>6400</PID>
                <DoM>24MAR10</DoM>
                <firmware>NBRPUAAM</firmware>
            </scanner>
            <scanner type="USBIBMHID">
                <scannerID>2</scannerID>
                <modelnumber>CR0078-SC10007WR</modelnumber> <!-- Asset Tracking Information of the Scanner -->
                <serialnumber>MXA4WD88</serialnumber>
                <GUID>993DF345C3B00E408E8160116AE9A319</GUID>
                <VID>1504</VID>
                <PID>2080</PID>
                <DoM>24MAR10</DoM>
                <firmware>NBCACAK7</firmware>
                <scanner type="USBIBMHID">
                    <scannerID>3</scannerID> <!-- Cascaded Scanner -->
                    <serialnumber>M1M87R39H</serialnumber>
                    <modelnumber>DS6878-SR20007WR</modelnumber>
                    <DoM>08OCT10</DoM>
                    <firmware>PAAAJS00-002-N25</firmware>
                </scanner>
            </scanner>
        </scanners>
    </arg-xml>
</outArgs>

START_NEW_FIRMWARE (Value 5014)
Description Start the updated firmware. This causes a reboot of the specified scanner.
Asynchronous supported N/A
Supported Scanner Communication Protocols IBM Hand-held, IBM Table-top, SNAPI, SSI
InXml

<inArgs>
    <scannerID>1</scannerID> <!-- Specified Scanner ID -->
</inArgs>        

OutXml

null

UPDATE_FIRMWARE (Value 5016)
Description Update the firmware of the specified scanner. A user can specify the bulk firmware update option for faster firmware download in SNAPI mode. If an application registered for ScanRMDEvents.
Asynchronous supported N/A
Supported Scanner Communication Protocols IBM Hand-held, IBM Table-top, SNAPI, SSI
InXml

<inArgs>
    <scannerID>1</scannerID> <!-- Specified Scanner ID -->
    <cmdArgs>
        <arg-string>D:\ScannerFW\DS6707\NBRPUCAM.DAT</arg-string> <!-- Path to the DAT File -->
        <arg-int>2</arg-int>
    </cmdArgs>
</inArgs>

OutXml

null

UPDATE_FIRMWARE_FROM_PLUGIN (Value 5017)
Description Update the firmware of the specified scanner using a scanner plug-in. A user can specify the bulk firmware update option for faster firmware download in SNAPI mode. If an application registered for ScanRMDEvents, it receives ScanRMDEvents.
Asynchronous supported N/A
Supported Scanner Communication Protocols IBM Hand-held, IBM Table-top, SNAPI, SSI
InXml

<inArgs>
    <scannerID>1</scannerID> <!-- Specified Scanner ID -->
    <cmdArgs>
        <arg-string>D:\ScannerFW\DS9808\DS9808-COMMON SR MODELS-S-018.SCNPLG</arg-string> <!-- Path to the Plug-in File -->
        <arg-int>2</arg-int> <!-- Bulk Update Option-->
    </cmdArgs> 
</inArgs> 

NOTE The UPDATE_FIRMWARE_FROM_PLUGIN command does not verify the supported scanner models of the plug-in. It attempts the firmware update with the DAT file extracted from the specified plug-in file regardless of model.
OutXml

null

UPDATE_DECODE_TONE (Value 5050)
Description Update good scan tone of the scanner with the specified WAV file.
Asynchronous supported N/A
Supported Scanner Communication Protocols IBM Hand-held, IBM Table-top, SNAPI, SSI
InXml

<inArgs>
    <scannerID>1</scannerID> <!-- Specified Scanner ID -->
    <cmdArgs>
        <arg-string> C:\WavFiles\tone16Khz16bit.wav</arg-string> <!-- Path to WAV File -->
    </cmdArgs> 
</inArgs>

OutXml

null

ERASE_DECODE_TONE (Value 5051)
Description Erase the good scan tone of the scanner.
Asynchronous supported N/A
Supported Scanner Communication Protocols IBM Hand-held, IBM Table-top, SNAPI, SSI
InXml

<inArgs>
    <scannerID>1</scannerID> <!-- Specified Scanner ID  -->
</inArgs>

OutXml

null

SET_ACTION (Value 6000)
Description Perform an action involving the scanner's beeper or LEDs. Values for the SET_ACTION method are available in Action Attributes and Values
Asynchronous supported N/A
Supported Scanner Communication Protocols IBM Hand-held, IBM Table-top, SNAPI, SSI
InXml

<inArgs>
    <scannerID>1</scannerID> <!-- Specified Scanner ID -->
    <cmdArgs>
        <arg-int>0</arg-int> <!-- Scanner Action Commands -->
    </cmdArgs>
</inArgs>

OutXml

null

DEVICE_SET_SERIAL_PORT_SETTINGS (Value 6101)
Description Set the serial port settings of a NIXDORF Mode B Scanner.
Asynchronous supported N/A
Supported Scanner Communication Protocols N/A
InXml

<inArgs>
    <scannerID>1</scannerID> <!-- Specified Scanner ID -->
    <cmdArgs>
        <arg-int>5</arg-int> <!-- Number of Parameters -->
        <arg-int>9600,8,0,0,1</arg-int> <!-- Serial Port Settings -->
    </cmdArgs>
</inArgs>

OutXml

null

DEVICE_SWITCH_HOST_MODE (Value 6200)
Description Switch the USB host mode of a specified scanner. This operation causes a reboot of the device as a result of the host mode switch. When the specified scanner is in HID Keyboard mode, the only supported target host variants are IBM Hand-held, IBM Table-top, SNAPI, and SSI. A user can configure the switching host mode as a silent switch (suppressing the typical device reboot beeps) and keep the targeted host mode as the permanent host mode of the device by setting those parameters in the inXML string. Direct execution of this command on a Bluetooth scanner does not result in a host mode switch. This command needs to be sent to the scanner's associated cradle to switch the host mode of the Bluetooth scanner.
Asynchronous supported N/A
Supported Scanner Communication Protocols IBM Hand-held, IBM Table-top, SNAPI, HID Keyboard.
InXml

<inArgs>
    <scannerID>1</scannerID> <!-- Specified Scanner ID -->
    <cmdArgs>
        <arg-string>XUA-45001-1</arg-string> <!-- String Code for Target Host Variant -->
        <arg-bool>TRUE</arg-bool> <!-- Silent Switch Option -->
        <arg-bool>FALSE</arg-bool> <!-- Permanent Change Option -->
    </cmdArgs>
</inArgs>

Table 12 lists the string codes for USB host variants.

Table 12: USB Host Variants

Host Variant String Code
USB-IBMHID XUA-45001-1
USB-IBMTT XUA-45001-2
USB-HIDKB XUA-45001-3
USB-OPOS XUA-45001-8
USB-SNAPI with Imaging XUA-45001-9
USB-SNAPI without Imaging XUA-45001-10
USB-CDC Serial Emulation (see note below) XUA-45001-11
USB-SSI Over CDC XUA-45001-14

NOTE USB-CDC (Communications Device Class) host mode enables Zebra barcode scanners to communicate with applications requiring legacy serial COM port emulation using a USB port. Using the Scanner SDK, you can switch the scanner into USB-CDC mode, but you cannot switch back into other modes. Please scan the Set All Defaults barcode from your scanner's Quick Start Guide to make the scanner visible to the SDK. Go to: http://www.zebra.com/support for more information about USB CDC host mode.
OutXml

null

KEYBOARD_EMULATOR_ENABLE (Value 6300)
Description This setting enables/disables the keyboard emulation mode of the connected scanners which are in IBM Hand-held, IBM Table-top, NIXDORF Mode B, SNAPI, and SSI host modes.
Asynchronous supported No
Supported Scanner Communication Protocols N/A
InXml

<inArgs>
    <cmdArgs>
        <arg-bool>TRUE</arg-bool> <!-- Keyboard Emulator State -->
    </cmdArgs>
</inArgs>

OutXml

null

NOTE Any HIDKB Emulator-related settings that are changed using the API are temporary. These settings revert to the values in the config.xml file after a restart of the CoreScanner service or a system reboot.
KEYBOARD_EMULATOR_SET_LOCALE (Value 6301)
Description Change the locale of the emulated keyboard.
Asynchronous supported No
Supported Scanner Communication Protocols N/A
InXml

<inArgs>
    <cmdArgs>
        <arg-int>1</arg-int> <!-- Keyboard Emulator Language Locale ID -->
    </cmdArgs>
</inArgs>        

Table 13 lists the Language Locale ID for the XML code above.

Table 13: Language Locale IDs

Local Value
Deafult 0 (generic keyboard, not language specific)
French 1
English 2
Italian 2

OutXml

null

KEYBOARD_EMULATOR_GET_CONFIG (Value 6302)
Description Gets the current configuration of the HID Keyboard Emulator from the config.xml file.
Asynchronous supported No
Supported Scanner Communication Protocols N/A
InXml

<inArgs></inArgs> 

OutXml

<outArgs>
    <arg-xml>
        <KeyEnumState>1</KeyEnumState> <!-- Keyboard Emulator State -->
        <KeyEnumLocale>0</KeyEnumLocale> <!-- Keyboard Emulator Language Locale ID -->
    </arg-xml>
</outArgs>        

SCALE_READ_WEIGHT (Value 7000)
Description Measure the weight on the scanner's platter and get the value.
Asynchronous supported No
Supported Scanner Communication Protocols SNAPI, IBM HID, IBM Table-top, SSI
InXml

<inArgs>
    <scannerID>1</scannerID>
</inArgs>        

OutXml

<?xml version="1.0" encoding="UTF-8"?>
<outArgs>
    <scannerID>1</scannerID>
    <arg-xml>
        <modelnumber>MP6200-LN000M010US</modelnumber>
        <serialnumber>13049010501209 </serialnumber>
        <GUID>D827BAC4979B430BB6E57747620C1978</GUID>
        <response>
            <opcode>7000</opcode>
            <weight>0.700</weight> <!-- The weight of the item in killogram or English pounds. -->
            <weight_mode>English</weight_mode> <!-- English (pounds), Metric (Kg). -->
            <status>6</status> <!-- Status of the scale. -->
            <rawdata>0x06 0x01 0x00 0x00 0x02 0xbc </rawdata> <!-- The value retrieved from RSM attribute 6017. -->
        </response>
    </arg-xml>
</outArgs>                                                                         

Table 14: Scale Status Codes Descriptions

Status Code Value Description
0 scaleNotEnabled
1 scaleNotReady
2 stableWeightOverLimit
3 stableWeightUnderZero
4 nonStableWeight
5 stableZeroWeight
6 stableNonZeroWeight

SCALE_ZERO_SCALE (Value 7002)
Description Zero the scale.
Asynchronous supported No
Supported Scanner Communication Protocols SNAPI, IBM HID, IBM Table-top, SSI
InXml

<inArgs>
    <scannerID>1</scannerID>
</inArgs>

OutXml

null

SCALE_SYSTEM_RESET (Value 7015)
Description Reset the scale.
Asynchronous supported No
Supported Scanner Communication Protocols SNAPI, IBM HID, IBM Table-top, SSI
InXml

<inArgs>
    <scannerID>1</scannerID>
</inArgs>

OutXml

null