Zebra Scanner SDK for Windows Scanner JPOS Driver Developer’s Guide

SCANNER JPOS DRIVER
DEVELOPER’S GUIDE
SCANNER JPOS DRIVER
DEVELOPER’S GUIDE
72E-149781-06
Revision A
April 2019
ii SCANNER JPOS DRIVER DEVELOPER’S GUIDE
The software is provided strictly on an “as is” basis. All software, including firmware, furnished to the user is on a licensed basis. Zebra grants to the user a non-transferable and non-exclusive license to use each software or firmware program delivered hereunder (licensed program). Except as noted below, such license may not be assigned, sublicensed, or otherwise transferred by the user without prior written consent of Zebra. No right to copy a licensed program in whole or in part is granted, except as permitted under copyright law. The user shall not modify, merge, or incorporate any form or portion of a licensed program with other program material, create a derivative work from a licensed program, or use a licensed program in a network without written permission from Zebra. The user agrees to maintain Zebra’s copyright notice on the licensed programs delivered hereunder, and to include the same on any authorized copies it makes, in whole or in part. The user agrees not to decompile, disassemble, decode, or reverse engineer any licensed program delivered to the user or any portion thereof.
Zebra reserves the right to make changes to any software or product to improve reliability, function, or design.
Zebra does not assume any product liability arising out of, or in connection with, the application or use of any product, circuit, or application described herein.
No license is granted, either expressly or by implication, estoppel, or otherwise under any Zebra Technologies Corporation, intellectual property rights. An implied license only exists for equipment, circuits, and subsystems contained in Zebra products.

Revision History

Changes to the original guide are listed below:
Change Date Description
-01 Rev A 5/2011 Initial release.
-02 Rev A 3/2012 Updates for 64-bit.
-03 Rev A 4/2014 Updates to include scale information.
-04 Rev A 3/2015 Zebra Rebranding.
-05 Rev A 11/2017 Updated sample configuration code
-06 Rev A 4/2017 Updated:
iii
Added Logging section Replaced JPOS Test Window screen captures Updated DirectIO commands
- Configuration on pg. 2-2, 2-3 and 2-4
- Code Sample in Table 4-1 on pg. 4-2 and Table 4-2 on pg. 4-5
- File path in Step 2 on pg. 4-4
- File path in Step 2 on pg. 4-7
- DirectIO Java Package on pg. 5-2
- Using DirectIO on pg. 5-8
- Copyright statement on last page.
iv SCANNER JPOS DRIVER DEVELOPER’S GUIDE

TABLE OF CONTENTS

Revision History .............................................................................................................................. iii
About This Guide
Introduction ..................................................................................................................................... vii
Chapter Descriptions ...................................................................................................................... vii
Notational Conventions................................................................................................................... viii
Service Information ......................................................................................................................... viii
Chapter 1: INTRODUCTION TO THE SCANNER JPOS DRIVER
Overview ........................................................................................................................................ 1-1
Zebra Scanner JPOS Driver Architecture ................................................................................ 1-2
Chapter 2: INSTALLATION & CONFIGURATION
Overview ........................................................................................................................................ 2-1
Configuration .................................................................................................................................. 2-2
Wincor-Nixdorf Mode B RS-232 Scanners .............................................................................. 2-2
USB IBM Hand-held Scanners ................................................................................................ 2-3
USB SNAPI Scanners .............................................................................................................. 2-3
All Scanners ............................................................................................................................. 2-3
Scale Device ............................................................................................................................ 2-4
Scanner Configuration Bar Codes ................................................................................................. 2-5
USB Communication Protocol ................................................................................................. 2-5
RS-232 Communication Protocol ............................................................................................. 2-5
Logging .......................................................................................................................................... 2-6
Chapter 3: JPOS PROPERTIES, METHODS, EVENTS
Overview ........................................................................................................................................ 3-1
Deviations from JPOS Specifications ............................................................................................ 3-2
Supported Feature Set ................................................................................................................... 3-3
Properties ................................................................................................................................. 3-3
Methods ................................................................................................................................... 3-5
vi SCANNER JPOS DRIVER DEVELOPER’S GUIDE
Events ...................................................................................................................................... 3-6
Chapter 4: SAMPLE APPLICATION (SCANNER JPOS TEST)
Overview ........................................................................................................................................ 4-1
JPOS Sample Application (JPOS Test Utility) ............................................................................... 4-1
JPOS Test Utility Scanner Functionality ........................................................................................ 4-2
Viewing Bar Code Data ............................................................................................................ 4-4
Return Value ............................................................................................................................ 4-5
JPOS Test Utility Scale Functionality ............................................................................................ 4-5
Measuring the Weight of an Item ............................................................................................. 4-7
Chapter 5: DIRECTIO
Overview ........................................................................................................................................ 5-1
DirectIO Java Package .................................................................................................................. 5-2
com.zebra.jpos.service.directio ................................................................................................ 5-2
DirectIOCommand ......................................................................................................................... 5-2
Command Descriptions ............................................................................................................ 5-2
Input: .................................................................................................................................. 5-4
Output: ............................................................................................................................... 5-4
DirectIOStatus ............................................................................................................................... 5-6
The DirectIO Method ..................................................................................................................... 5-7
DirectIO Method Arguments .................................................................................................... 5-7
Using the JPOS Sample Application to Send Direct I/O Commands ....................................... 5-7
Using DirectIO ............................................................................................................................... 5-8
Chapter 6: SUPPORTED SYMBOLOGY TYPES VS. SCANNER MODE
Overview ........................................................................................................................................ 6-1
Supported Symbology Types vs. Scanner Mode ........................................................................... 6-2
Index

ABOUT THIS GUIDE

Introduction

This guide provides information about the Zebra Scanner JPOS Driver.

Chapter Descriptions

Topics covered in this guide are as follows:
Chapter 1, INTRODUCTION TO THE SCANNER JPOS DRIVER provides an overview of the Zebra Scanner
JPOS Driver.
Chapter 2, INSTALLATION & CONFIGURATION describes specific installation instructions and settings to
configure the Zebra Scanner JPOS Driver on a host computer.
Chapter 3, JPOS PROPERTIES, METHODS, EVENTS provides information about JPOS properties,
methods, and events.
Chapter 4, SAMPLE APPLICATION (SCANNER JPOS TEST) provides information about the sample
application in the Zebra Scanner JPOS Driver suite.
Chapter 5, DIRECTIO describes how the DirectIO feature allows a POS application to communicate directly
with the underlying CoreScanner Service.
Chapter 6, SUPPORTED SYMBOLOGY TYPES VS. SCANNER MODE provides a matrix of scanner modes
and supported symbology types in each mode.
viii SCANNER JPOS DRIVER DEVELOPER’S GUIDE

Notational Conventions

The following conventions are used in this document:
Courier New font is used for code segments.
Italics are used to highlight:
Chapters and sections in this and related documents
Dialog box, window and screen names
Drop-down list and list box names
Screen field names
Check box and radio button names
File names
Directory names.
Bold text is used to highlight:
Parameter and option names
Icons on a screen
Key names on a keypad
Button names on a screen.
bullets (•) indicate:
Action items
Lists of alternatives
Lists of required steps that are not necessarily sequential
Sequential lists (e.g., those that describe step-by-step procedures) appear as numbered lists.
Notes, caution and warning statements appear as follows:
NOTE This symbol indicates something of special interest or importance to the reader. Failure to read the note
will not result in physical harm to the reader, equipment or data.
CAUTION This symbol indicates that if this information is ignored, the possibility of data or material damage may
occur.
WARN I N G ! This symbol indicates that if this information is ignored the possibility that serious personal

Service Information

injury may occur.
If you have a problem using the equipment, contact your facility's technical or systems support. If there is a problem with the equipment, they will contact the Zebra Global Customer Support Center at:
www.zebra.com/support
.
CHAPTER 1 INTRODUCTION TO THE
SCANNER JPOS DRIVER

Overview

The POS application is either a Java application or an applet that uses one or more JavaPOS devices. An
application accesses the JavaPOS device through the JavaPOS Device Interface, which is specified by Java
interfaces.
Each JavaPOS device is a combination of these components:
JavaPOS Device Control is a Java class that provides the interface between the application and the device category. It contains no graphical component and is therefore invisible at runtime and conforms to the JavaBeans API. The Device Control was designed so that all implementations of a device category's control are compatible. The Device Control can be developed independently of a Device Service for the same device category. They may even be developed by different companies.
JavaPOS Device Service is a Java class that is called by the Device Control through the JavaPOS Device Service Interface. The Device Service is used by the Device Control to implement JavaPOS-prescribed functionality for a physical device. It can also call special event methods provided by the Device Control to deliver events to the application.
The JPOS driver included with the Zebra Scanner SDK for Windows provides JNI (Java Native Interface) mechanisms to scanner and scale devices (csjposscanner.dll and csjposscale.dll) for the JavaPOS Device Service layer to interface with the Corescanner driver.
1 - 2 SCANNER JPOS DRIVER DEVELOPER’S GUIDE
Zebra Scanner JPOS Driver Architecture
Figure 1-1
For more information about JavaPOS, JavaPOS architecture, terminology and programmer's guides, refer to:
Zebra Scanner JPOS Driver Architecture
JavaPOS home page at http://www.javapos.com/
UPOS home page at http://www.nrf-arts.org.
NOTE The terms JavaPOS and JPOS are used interchangeably in this document.
CHAPTER 2 INSTALLATION &
CONFIGURATION

Overview

This chapter describes installation instructions and settings to configure the Zebra Scanner JPOS Driver on a
host computer.
For custom installation instructions on installing the Zebra scanner JPOS driver, refer to the Scanner SDK
Developers Guide.
NOTE JPOS components are installed by default with the standard scanner SDK installation. If a custom scanner
SDK installation is performed, the JPOS option must be selected to install the JPOS components.
2 - 2 SCANNER JPOS DRIVER DEVELOPER’S GUIDE
Configuration
After a successful installation of the Zebra Scanner SDK with the JPOS driver, an XML file named jpos.xml is created in the folder C:\Program Files\Zebra Technologies\Barcode Scanners\Scanner SDK\JPOS\Sample Applications\bin.
The Zebra Scanner JPOS Driver reads jpos.xml to retrieve required configurations such as the baud rate for serial scanners and scanner filtering rules to form the logical scanner defined by the user. Each <JposEntry logicalName="LogicalScannerName"> tag defines a logical scanner. The following sample JPOSEntries represents serial, USB IBM Hand-held and USB SNAPI logical devices.

Wincor-Nixdorf Mode B RS-232 Scanners

<JposEntry logicalName="ZebraScannerSerial">
<creation factoryClass="com.zebra.jpos.service.scanner.SymScannerSvc112Factory"
serviceClass="com.zebra.jpos.service.scanner.SymScannerSvc112"/>
<vendor name="Zebra Technologies" url="https://www.zebra.com"/> <jpos category="Scanner" version="1.12"/> <product description="Zebra Serial" name="Zebra Serial Scanner on COM1"
url="https://www.zebra.com"/>
<!--Other non JavaPOS required properties-->
<!--Scanner configuration--> <!--Comm port device name--> <prop name="port" value="COM1"/> <!--Baud rate, default=9600, valid values are: 9600, 19200, 38400, 57600, 115200--> <prop name="baud" value="9600"/> <!--Data bits, default=7, valid values are: 5, 6, 7, 8--> <prop name="databits" value="8"/> <!--Stop bits, default=1, valid values are: 1=1 stop bit, 2=2 stop bits, 3=1.5 stop
bits-->
<prop name="stopbits" value="1"/> <!--Parity, default='O' (Odd), valid values are: 'N'one, 'O'dd, 'E'ven, 'M'ark,
'S'pace-->
<prop name="parity" value="O"/> <!--Port mode, default='B', valid values are: 'B'=Nixdorf-B--> <prop name="mode" value="B"/> <!--UPC-A Length, default=13, indicates the number of digits generated by the scanner--> <!--for UPC-A labels based on the scanner's preamble and check digit settings.--> <!--The scanner service uses this value to determine when supplementals are present.--> <!--The default value of 13 assumes preamble is set to system character--> <!--and country code and that transmit check digit is enabled--> <prop name="UPCALength" value="13"/> <!--UPC-E Length, default=7, indicates the number of digits generated by the scanner--> <!--for UPC-E labels based on the scanner's preamble and check digit settings.--> <!--The scanner service uses this value to determine when supplementals are present.--> <!--The default value of 7 assumes preamble is set to system character--> <!--only and that transmit check digit is disabled--> <prop name="UPCELength" value="7"/>
<!--Scanner type, default=0, valid values are: 7 - NixdofrUSB--> <prop name="ScannerType" value="7"/> <prop name="ExclusiveClaimLevel" value="0" />
</JposEntry>
INSTALLATION & CONFIGURATION 2 - 3
USB IBM Hand-held Scanners
<JposEntry logicalName="ZebraScannerUSB">
<creation factoryClass="com.zebra.jpos.service.scanner.SymScannerSvc112Factory"
serviceClass="com.zebra.jpos.service.scanner.SymScannerSvc112"/>
<vendor name="Zebra Technologies" url="https://www.zebra.com"/> <jpos category="Scanner" version="1.12"/> <product description="Zebra USB" name="Zebra Scanner" url="https://www.zebra.com"/> <prop name="ScannerType" value="USBIBMHID"/> <prop name="ExclusiveClaimLevel" value="0" />
</JposEntry>

USB SNAPI Scanners

<JposEntry logicalName="ZebraScannerSNAPI">
<creation factoryClass="com.zebra.jpos.service.scanner.SymScannerSvc112Factory"
serviceClass="com.zebra.jpos.service.scanner.SymScannerSvc112"/>
<vendor name="Zebra Technologies" url="https://www.zebra.com"/> <jpos category="Scanner" version="1.12"/> <product description="Zebra SNAPI Scanner" name="Zebra Scanner"
url="https://www.zebra.com"/>
<prop name="ScannerType" value="SNAPI"/> <prop name="ExclusiveClaimLevel" value="0" />
</JposEntry>

All Scanners

<JposEntry logicalName="ZebraScannerSNAPI">
<creation factoryClass="com.zebra.jpos.service.scanner.SymScannerSvc112Factory"
serviceClass="com.zebra.jpos.service.scanner.SymScannerSvc112"/>
<vendor name="Zebra Technologies" url="https://www.zebra.com"/> <jpos category="Scanner" version="1.12"/> <product description="Zebra SNAPI Scanner" name="Zebra Scanner"
url="https://www.zebra.com"/>
<prop name="ScannerType" value="SNAPI"/> <prop name="ExclusiveClaimLevel" value="0" />
</JposEntry>S
2 - 4 SCANNER JPOS DRIVER DEVELOPER’S GUIDE
Scale Device
<JposEntry logicalName="ZebraScale">
<creation factoryClass="com.zebra.jpos.service.SvcServiceInstanceFactoryImpl"
serviceClass="com.zebra.jpos.service.scale.ScaleService113Impl"/>
<vendor name="Zebra Technologies" url="https://www.zebra.com"/> <jpos category="Scale" version="1.13"/> <product description="Zebra Scale" name="Zebra Scale" url="https://www.zebra.com"/> <prop name="ErrorOnSameWeight" value="1"/>
</JposEntry>
NOTE When a scale device (such as MP6200) is connected to a host PC via an RSM-supported host mode,
scale functionality is available. The scale is accessible using the JPOS Open and Claim methods. RSM-supported host modes include SNAPI, IBM HH, IBM TT and SSI.
Scanner Configuration Bar Codes
Scan the Set All Defaults bar code below to return all parameters to the scanner's default values. Refer to the
scanner's Product Reference Guide for default values.
Scan the appropriate bar code below to configure the scanner for either USB or RS-232 communication
protocols.

USB Communication Protocol

INSTALLATION & CONFIGURATION 2 - 5
Set All Defaults

RS-232 Communication Protocol

USB (IBM Hand-held)
USB (IBM Table-top)
USB SNAPI
Wincor-Nixdorf RS-232 Mode B
2 - 6 SCANNER JPOS DRIVER DEVELOPER’S GUIDE
Logging
To configure logging for Scanner JPOS and Scale JPOS, use the jpos.properties file located at C:\Program Files\Zebra Technologies\Barcode Scanners\Scanner SDK\JPOS.
Following is a sample log section of this file.
############################################################################### #################### JPOS Configurations Zebra Scanners ####################### # ZEBRA, ZEBRA TECHNOLOGIES, and the Zebra Logo are trademarks or registered # # trademarks of Zebra Technologies International, LLC, © 2015 Zebra # # Technologies International, LLC. All Rights Reserved. # ###############################################################################
############################################################################### # logFileName: # File name or lable for the log file ############################################################################### logFileName=jpos.log
############################################################################### # logFilePath: # log file storing location default location is: # \\Program Files\\Zebra Technologies\\Barcode Scanners\\Scanner SDK\\JPOS ############################################################################### logFilePath=\\Program Files\\Zebra Technologies\\Barcode Scanners\\Scanner SDK\\JPOS\\bin\\Logs
############################################################################### # logFileSize: # size of a single log file, this can be changed ############################################################################### logFileSize=1000000
############################################################################### # logFileCount: # Maximum number of log files created by JPOS, new log file will be created once # the current log file archive "logFileSize" in byte ############################################################################### logFileCount=2
############################################################################### # logLevel: # Currently support only 2 values # 0 - Disable logging # 1 - Enable logging ############################################################################### logLevel=0
CHAPTER 3 JPOS PROPERTIES, METHODS,
EVENTS

Overview

The following steps depict the behavioral model of the JPOS driver and scanner.
1. The scanner reads encoded data from a label.
2. When the Control receives input, it queues a DataEvent.
3. If the AutoDisable property is TRUE, the Control is disabled when a DataEvent is queued.
4. The Control can deliver a queued DataEvent to the application when the DataEventEnabled property is
TRUE. Just before delivering this event, the Control copies the data into properties and disables further data events by setting the DataEventEnabled property to FALSE. This causes the Control to queue subsequent input data while the application processes the current input and associated properties. When the application finishes the current input and is ready for more data, it re-enables events by setting DataEventEnabled to TRUE.
5. The Control queues an ErrorEvent (or events) if it encounters an error while gathering or processing input,
and delivers this to the application when the DataEventEnabled property is TRUE.
6. The DataCount property contains the number of DataEvents queued by the Control.
7. Call the ClearInput method to delete all input that the Control queued.
Scanned data is placed into the property ScanData. If the application sets the property DecodeData to TRUE,
the data is decoded into ScanDataLabel and ScanDataType.
3 - 2 SCANNER JPOS DRIVER DEVELOPER’S GUIDE
Deviations from JPOS Specifications
When there is no scanner connected to a cordless base, the Zebra Scanner JPOS Driver considers the cordless base a scanner. Therefore a claim succeeds with a cordless base.
In serial mode, a claim succeeds even when no scanner is connected to the port. In this case, it indicates the success of the port opening.
The following steps depict the behavioral model of the JPOS driver and scale:
1. The POS application calls the ReadWeight method in JPOS control.
2. When JPOS control receives the method call, it passes the request to the JPOS scale service and JPOS
scale service passes that request to Corescanner service.
3. The CoreScanner Service requests the weight data from the scale and reports it back up through the
JPOS scale service to the JPOS control.
4. JPOS control returns the ReadWeight method with the weight data retrieved to the POS application.
Supported Feature Set
This section describes the supported feature set per the JPOS specification.

Properties

JPOS PROPERTIES, METHODS, EVENTS 3 - 3
Table 3-1
AutoDisable 1.2 Boolean R/W Open Supported
BinaryConversion 1.2 Long R/W Open Not supported
CapCompareFirmwareVersion 1.9 Boolean R Open Not supported
CapPowerReporting 1.3 Int R Open Not supported
CapStatisticsReporting 1.8 Boolean R Open Supported
CapUpdateFirmware 1.9 Boolean R Open Not supported
CapUpdateStatistics 1.8 Boolean R Open Supported
CheckHealthText 1.0 String R Open Not supported
Claimed 1.0 Boolean R/W Open Supported (see
DataCount 1.2 Int32 R Open Supported
DataEventEnabled 1.0 Boolean R/W Open Supported
Common Properties
Property Version Ty pe Access May Use After
Comments on Zebra
Scanner Support
from JPOS Specifications on page 3-2
Deviations
)
DeviceEnabled 1.0 Boolean R/W Open & Claim Supported
FreezeEvents 1.0 Boolean R/W Open Supported
OpenResult 1.5 Long R N/A Not supported
PowerNotify 1.3 Long R/W Open Not supported
PowerState 1.3 Int32 R Open Supported
ResultCode 1.0 Long R N/A Not supported
ResultCodeExtended 1.0 Long R Open Not supported
State 1.0 Int32 R N/A Supported
ControlObjectDescription 1.0 String R N/A Supported
ControlObjectVersion 1.0 Int32 R N/A Supported
ServiceObjectDescription 1.0 String R Open Supported
ServiceObjectVersion 1.0 Int32 R Open Supported
DeviceDescription 1.0 String R Open Supported
DeviceName 1.0 String R Open Supported
3 - 4 SCANNER JPOS DRIVER DEVELOPER’S GUIDE
Table 3-2
DecodeData 1.2 Boolean R/W Open Supported
ScanData 1.0 String R Open Supported
ScanDataLabel 1.2 String R Open Supported
ScanDataType 1.2 Int32 R Open Supported
Table 3-3
CapDisplay 1.2 Boolean R Open Supported (Always False)
CapDisplayText 1.3 Boolean R Open Supported (Always False)
CapPriceCalculating 1.3 Boolean R Open Supported (Always False)
CapStatusUpdate 1.9 Boolean R Open Supported (Always False)
CapTareWeight 1.3 Boolean R Open Supported (Always False)
Scanner Specific Properties
Property Version Ty pe Access
Scale Specific Properties
Property Version Typ e Access May Use After
May Use
After
Comments on Zebra
Scanner Support
Comments on Zebra
Scale Support
CapZeroScale 1.3 Boolean R Open Supported
AsyncMode 1.3 Boolean R / W Open Supported
MaxDisplayTextChars 1.3 Integer R Open Not Supported
MaximumWeight 1.0 Integer R Open Supported
SalesPrice 1.3 Currency R Open, Claim, and
Enable
ScaleLiveWeight 1.9 Integer R Open Not Supported
StatusNotify 1.9 Integer R / W Open Not Supported
TareWeight 1.3 Integer R / W Open, Claim, and
Enable
UnitPrice 1.3 Currency R / W Open, Claim, and
Enable
WeightUnit 1.0 Integer R Open Supported
ZeroValid 1.13 Boolean R / W Open Supported
Not Supported
Not Supported
Not Supported

Methods

JPOS PROPERTIES, METHODS, EVENTS 3 - 5
Table 3-4
Open 1.0 N/A Supported
Close 1.0 Open Supported
ClaimDevice 1.0 Open Supported (see
ReleaseDevice 1.0 Open and Claim Supported
CheckHealth 1.0 Open, Claim, and Enable Not supported
ClearInput 1.0 Open and Claim Supported
ClearInputProperties 1.10 Open and Claim Supported
DirectIO 1.0 Open Not supported
compareFirmwareVersion 1.9 Open, Claim, and Enable Not supported
resetStatistic 1.8 Open, Claim, and Enable Not supported
retrieveStatistics 1.8 Open, Claim, and Enable Supported
updateFirmware 1.9 Open, Claim, and Enable Not supported
Common Methods
Method Version May Use After Comments on Zebra Scanner Support
Specifications on page 3-2
Deviations from JPOS
)
updateStatistics 1.8 Open, Claim, and Enable Not supported
Table 3-5
DisplayText 1.3 Open, Claim, and
ReadWeight 1.3 Open, Claim, and
ZeroScale 1.0 Open, Claim, and
Scale Specific Methods
Method Version May Use After Comments on Zebra Scanner Support
Not Supported
Enable
Supported
Enable
Supported
Enable
3 - 6 SCANNER JPOS DRIVER DEVELOPER’S GUIDE
Events
Table 3-6
DataEvent 1.0 Open, Claim & Enable Supported
DirectIOEvent 1.0 Open & Claim Not supported
ErrorEvent 1.0 Open, Claim & Enable Not supported
StatusUpdateEvent 1.3 Open, Claim & Enable Not supported
Events
Event Version May Use After Comments on Zebra Scanner Support
CHAPTER 4 SAMPLE APPLICATION
(SCANNER JPOS TEST)

Overview

The Zebra Scanner JPOS Driver suite ships with a sample application that demonstrates all the JPOS
operations on connected Zebra scanner and scale devices.

JPOS Sample Application (JPOS Test Utility)

The JPOS Test Utility allows you to simulate an application communicating with the Zebra Scanner JPOS
Driver. This utility displays scanner and scale data received from the devices through the Zebra Scanner SDK.
Zebra Scanner SDK includes source code for this Java test utility.
4 - 2 SCANNER JPOS DRIVER DEVELOPER’S GUIDE
JPOS Test Utility Scanner Functionality
Figure 4-1
Table 4-1
Button/ Field/
Check Box
Open Open Method. Zebra
Claim Claim the device
Device Enable/ Disable
Release Release the
Close Close the
Scanner JPOS Test Window
Scanner JPOS Test Utility Button/Field/Checkbox Functionality
Description Values Code Sample
ScannerSNAPI
-1, Any integer with time out value.
Enable or disable the scanner. Must enable before using scanners.
scanner.
scanner.
starting from zero
N/A Enable:
N/A
N/A
scanner.open(ZebraScannerSNAPI);
scanner.claim(1000);
scanner.setDeviceEnabled(true);
Disable:
scanner.setDeviceEnabled(false);
scanner.release();
scanner.close();
SAMPLE APPLICATION (SCANNER JPOS TEST) 4 - 3
Table 4-1
Button/ Field/
Check Box
Scanner JPOS Test Utility Button/Field/Checkbox Functionality (Continued)
Description Values Code Sample
Scan Data
Scan Data Type Type of the
scanned data. This is only a readable property.
Scan Data Label
Label of the scan data.
Clear Data Clear method.
Clears the input data.
Properties And Methods
Auto disable Set the Auto
disable property.
Data Event Enabled
Set data event enabled. Must enable data event to get data.
N/A
N/A
N/A
N/A
N/A
scanner.getScanDataType();
scanner.getScanDataLabel();
scanner.setAutoDisable(false);
scanner.setDataEventEnabled(true);
Freeze Events Set the Freeze
Events property.
Decode Data Set decode data
enable.
NOTE Additional documentation about the Scanner JPOS Test Window is available at
http://postest.sourceforge.net/.
N/A
N/A
scanner.setFreezeEvents(false);
scanner.setDecodeData(true);
4 - 4 SCANNER JPOS DRIVER DEVELOPER’S GUIDE
0
1 2 3 4 5 6 7 8 9 0
5
Viewing Bar Code Data
To view bar code data using the Scanner JPOS Test Utility:
1. Scan the USB (IBM Hand-held) bar code, SNAPI bar code or Wincor-Nixdorf RS-232 Mode B bar code on
page 2-5 to configure the scanner for the correct communication protocol.
2. Select C:\Program Files\Zebra Technologies\Barcode Scanners\Scanner SDK\JPOS\Sample
Applications\bin\POSTest.bat to launch the Scanner JPOS Test Utility.
3. Select Open after entering the logical name.
4. Select Claim.
5. Select Device Enable.
6. Select Data Events.
7. Select Decode Data.
8. Scan the following sample bar code:
UPC-A
9. The bar code data the driver processed appears in the Scan Data Type and Scan Data Label boxes.
Figure 4-2
10. Select Clear Data to clear the data from the Scan Data Type and Scan Data Label boxes.
Scanner JPOS Test Window - Scan Data
SAMPLE APPLICATION (SCANNER JPOS TEST) 4 - 5
11. To perform a second test, scan another bar code.

Return Value

When calling any method, check whether the return value is 0 (=JPOS_SUCCESS) to ensure the method is successful. Otherwise it returns an error code, which indicates the reason for the error.

JPOS Test Utility Scale Functionality

Figure 4-3
Table 4-2
Button / Field /
Open Open method. Zebra Scale
Claim Claim the device with
Device Enable/ Disable
Scale JPOS Test Scale Window
JPOS Test Scale Window Button/Field/Checkbox Functionality
Checkbox
Description Values Code Sample
-1, Any integer
time out value.
Enable or Disable the scanner. Must enable before using scale.
starting from zero
True / False Enable:
sscale.open(ZebraScannerSNAPI);
scale.claim(1000);
scale.setDeviceEnabled(true);
Disable:
scale.setDeviceEnabled(false);
4 - 6 SCANNER JPOS DRIVER DEVELOPER’S GUIDE
Table 4-2
Button / Field /
JPOS Test Scale Window Button/Field/Checkbox Functionality
Checkbox
Description Values Code Sample
Read Weight Measures the weight of
items(s) on the scale.
Zero Scale Sets the current scale
weight to zero.
Release Release the scale. N/A
Close Close the scale. N/A
NOTE Additional documentation about the Scanner JPOS Test utility is available at:
http://postest.sourceforge.net/.
-1, Any integer starting from zero
N/A
scale.ReadWeight(&weightData,
1000);
Scale.ZeroScale();
scale.release();
scale.close();
SAMPLE APPLICATION (SCANNER JPOS TEST) 4 - 7
Measuring the Weight of an Item
To view the weight of an item using the JPOS Test utility:
Figure 4-4
1. Scan an IBM Hand-held, IBM Table-top, SNAPI, or SSI bar code to configure the device for the correct
communication protocol.
2. Run CC:\Program Files\Zebra Technologies\Barcode Scanners\Scanner SDK\JPOS\Sample
Applications\bin\POSTest.bat to launch the JPOS Test utility, and select the Scale tab.
3. Enter the scale's logical name, and select Open.
4. Select Claim.
5. Select Device Enable.
6. Place an item on the scale platter.
7. Select the ReadWeight button. The item's weight appears on the adjoining text box.
8. To measure the weight of another item, remove any items on the platter and place the new item on the
scale; select the ReadWeight button.
9. Select Release to release the claimed device.
10. Select Close to close the logical device.
JPOS Test Window - Scale Data
4 - 8 SCANNER JPOS DRIVER DEVELOPER’S GUIDE
CHAPTER 5 DIRECTIO

Overview

Through the DirectIO feature a POS application communicates directly with the underlying CoreScanner Service.
This method provides a means for a UnifiedPOS Service to provide functionality to the application that is not otherwise supported by UnifiedPOS control for its device category.
Information in this chapter is applicable to both scanner and scale devices.
5 - 2 SCANNER JPOS DRIVER DEVELOPER’S GUIDE
DirectIO Java Package
The necessary classes to perform DirectIO are contained in the JposService.jar file under the two namespaces:
com.zebra.jpos.service

com.zebra.jpos.service.directio

The package com.zebra.jpos.service contains the DirectIO method, while the package com.zebra.jpos.service.directio contains the supporting classes to leverage the DirectIO method.
Zebra JPOS Direct IO implementation is similar to the Scanner SDK. For more information, refer to the Zebra Scanner SDK for Windows Developer’s Guide, p/n 72E-149784-xx.
com.zebra.jpos.service.directio
The directio package contains the following supporting class:

DirectIOCommand

DirectIOCommand
public class DirectIOCommand {
public static final int GET_SCANNERS= 1;// get scanners list public static final int RSM_ATTR_GETALL= 0x1388;// Opcode 5000 public static final int RSM_ATTR_GET= 0x1389;// Opcode 5001 public static final int RSM_ATTR_SET= 0x138C;// Opcode 5004 public static final int RSM_ATTR_STORE= 0x138D;// Opcode 5005
}

Command Descriptions

GET_SCANNERS: This command must be used first when setting up DirectIO. It updates the OutXml
InOutXml: This contains the raw XML string of all of the connected scanners in the format:
<scanners>
<scanner type="mode"> <scannerID>id1</scannerID> <serialnumber>serial_number</serialnumber> <GUID>S_N:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX</GUID> <VID>vendor_id</VID> <PID>product_id</PID> <modelnumber>model_number</modelnumber> <DoM>date_of_manufacture</DoM>
<firmware>firmare_revision</firmware> </scanner> <scanner type="mode">
<scannerID>id2</scannerID>
<serialnumber>serial_number</serialnumber>
<GUID>S_N:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX</GUID>
<VID>vendor_id</VID>
<PID>product_id</PID>
parameter with information for available scanners, and returns ScannerIDs used in all other DirectIO calls. See the sample code in Using DirectIO on page 5-8.
DIRECTIO 5 - 3
<modelnumber>model_number</modelnumber> <DoM>date_of_manufacture</DoM>
<firmware>firmare_revision</firmware> </scanner> … … <scanner type="mode">
<scannerID>idN</scannerID>
<serialnumber>serial_number</serialnumber> <GUID>S_N:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX</GUID> <VID>vendor_id</VID> <PID>product_id</PID> <modelnumber>model_number</modelnumber> <DoM>date_of_manufacture</DoM> <firmware>firmare_revision</firmware>
</scanner> </scanners>
RSM_ATTR_GETALL: This command returns a list in XML format via the object argument, defined above, of
all possible attributes that can be set. This list and what it contains is dependent on the scanning device. The scanner specific Product Reference Guide contains the definitions of all of these attributes. The XML string returned in the obj argument has the following format:
InOutXml: This contains the raw XML string of all the supported RSM attributes:
<?xml version="1.0" encoding="UTF-8"?> <outArgs>
<scannerID>1</scannerID>
<arg-xml>
<modelnumber>DS4801-XXXXXXXXXXX</modelnumber> <serialnumber>S/N:B1353E3FBA73C94DB3449420F6F3B3FD</serialnumber> <GUID>B1353E3FBA73C94DB3449420F6F3B3FD</GUID> <response>
<opcode>5000</opcode> <attrib_list>
<attribute name="">0</attribute> <attribute name="">1</attribute> <attribute name="">2</attribute> <attribute name="">3</attribute> <attribute name="">4</attribute> … … <attribute name="">25011</attribute> <attribute name="">25012</attribute>
</attrib_list>
</response>
</arg-xml> </outArgs>
The value of each attribute in the returned XML list can be accessed using the RSM_ATTR_GET command.
NOTE Calling this is not necessary if the attributes you wish to SET, or GET are known ahead of time.
5 - 4 SCANNER JPOS DRIVER DEVELOPER’S GUIDE
RSM_ATTR_GET: This command can be used to retrieve scanner attribute information including value,
data type, and permission. For more information, refer to the Zebra Scanner SDK for Windows Developer’s Guide.
InOutXml: For this command InOutXml argument is used to provide input and retrieve the output of the command.
Input:
<inArgs>
<scannerID>scannerID</scannerID> <!-- ScannerID one of the scanner which could be retrived executing GET_SCANNRS op-code
--> <cmdArgs>
<arg-xml>
<attrib_list> attribute1[,attribute2…attributeN]</attrib_list> <!-- A comma separated list of scanner attribute numbers -->
</arg-xml>
</cmdArgs>
</inArgs>
Output:
<outArgs>
<scannerID>1</scannerID> <arg-xml>
<modelnumber>DS4801-XXXXXXXXXXX</modelnumber> <serialnumber>S/N:B1353E3FBA73C94DB3449420F6F3B3FD</serialnumber> <GUID>B1353E3FBA73C94DB3449420F6F3B3FD</GUID> <response>
<opcode>5001</opcode> <attrib_list>
<attribute>
<id> attribute1</id> <name></name> <datatype>F</datatype> <permission>RWP</permission>
<value>True</value> </attribute> ... ... <attribute>
<id> attributeN</id>
<name></name>
<datatype>F</datatype>
<permission>RWP</permission>
<value>True</value> </attribute>
</attrib_list>
</response>
</arg-xml>
</outArgs>
DIRECTIO 5 - 5
RSM_ATTR_SET or RSM_ATTR_STORE: Sets (volatile, cleared after device reboot) or stores (non-volatile,
retained after device reboot) attributes respectively, specified in the XML string given in the obj argument. The XML string takes the following format.
InOutXml: For this command using InOutXml argument we could provide the information for the attribute to set in XML format
NOTE The tabbed formatting is for brevity only, and the actual XML string has no end-line or carriage-return
characters required.
<inArgs>
<scannerID>1</scannerID> <cmdArgs>
<arg-xml>
<attrib_list>
<attribute>
<id>rsm_attribute_number</id> <!-- 7 --> <datatype>valid_datatype</datatype> <!-- F --> <value>value_matching_datatype</value> <!-- True -->
</attribute> </attrib_list>
</arg-xml>
</cmdArgs>
</inArgs>
The following are the valid values:
rsm_attribute_number: One of the scanners accepted, writeable attributes numbers.
valid_datatype: A valid datatype character: F, B, W, D, A, S
value_matching_datatype:A value that is consistent with the datatype and the datatypes range. For example,
'F' is a 'Boolean' value that may be either 'false' or 'true'. A 'B' datatype is 'Byte' which ranges from 0-255.
For example, to disable UPC Code 128, the actual XML string passed into the obj argument would look this:
<inArgs>
<scannerID>1</scannerID> <cmdArgs>
<arg-xml>
<attrib_list>
<attribute>
<id>7</id> <datatype>F</datatype> <value>False</value>
</attribute> </attrib_list>
</arg-xml>
</cmdArgs>
</inArgs>
5 - 6 SCANNER JPOS DRIVER DEVELOPER’S GUIDE
InOutXml: This contains the raw XML string of all of the connected scanners in the format:
<scanners>
<scanner type="mode">
<scannerID>id1</scannerID> <serialnumber>serial_number</serialnumber> <GUID>S_N:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX</GUID> <VID>vendor_id</VID> <PID>product_id</PID> <modelnumber>model_number</modelnumber> <DoM>date_of_manufacture</DoM>
<firmware>firmare_revision</firmware> </scanner> <scanner type="mode">
<scannerID>id2</scannerID>
<serialnumber>serial_number</serialnumber>
<GUID>S_N:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX</GUID>
<VID>vendor_id</VID>
<PID>product_id</PID>
<modelnumber>model_number</modelnumber>
<DoM>date_of_manufacture</DoM>
<firmware>firmare_revision</firmware> </scanner> … … <scanner type="mode">
<scannerID>idN</scannerID>
<serialnumber>serial_number</serialnumber>
<GUID>S_N:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX</GUID>
<VID>vendor_id</VID>
<PID>product_id</PID>
<modelnumber>model_number</modelnumber>
<DoM>date_of_manufacture</DoM>
<firmware>firmare_revision</firmware> </scanner>
</scanners>

DirectIOStatus

public class DirectIOStatus {
public static final int STATUS_SUCCESS = 0;
}
Currently only STATUS_SUCCESS is defined. Any other value should be indicated as an error. The DirectIO method itself is an exception based method (see The DirectIO Method for more information). As a result, use a try-catch statement when calling it. The JposException class contains most of the error information.
The DirectIO Method
The Zebra JPOS driver allows direct RSM attribute GET/SET access in order to leverage features not otherwise able to be exposed through the JPOS API Specification.
The JPOS DirectIO method has the following prototype (as of Zebra JPOS driver 1.0):
directIO ( command: int32, inout data: int32, inout obj: object ):
void { raises-exception }

DirectIO Method Arguments

For the purposes of the Zebra scanner device class, the DirectIO method arguments are defined as:
command: int32: The command is passed to the CoreScanner service which is responsible for
communicating with the scanner. This command is defined in the JposService.jar.
inout data: int32: For Zebra devices, this is used to return the status of the executed op-code. For status
definitions, refer to the Zebra Scanner SDK for Windows Developer’s Guide.
DIRECTIO 5 - 7
inout obj: object: This is an object type. In Zebra JPOS Direct IO implementation, Java StringBuffer type is
used to provide input and get output of the argument in XML format. See
DirectIOCommand on page 5-2.

Using the JPOS Sample Application to Send Direct I/O Commands

To send Direct I/O commands using the JPOS sample application:
1. Connect a Zebra scanner and switch to a management enabled host mode such as IBM OPOS, IBM
Hand-held, IBM Table-top, or SNAPI.
2. Open the JPOS sample application and select the Scanner tab.
3. Enter ZebraAllScanners as the logical name and click Open.
4. Click Claim.
To retrieve a list of all the scanners connected to the PC:
1. Select GET_SCANNERS as DIO Op-Code from the Direct I/O section.
2. Click Execute. The Direct I/O OutXml text box populates with XML with all the attached scanners.
To retrieve all attributes available in the scanner:
1. Select RSM_ATTR_GETALL as DIO Op-Code from Direct I/O section.
2. In the Direct I/O InXml text box, change the value of the ScannerID XML element to the scannerID from
which you want to retrieve attributes. Use the GET_SCANNER command to find available ScannerIDs.
3. Click Execute. The Direct I/O OutXml text box populates with XML with attribute numbers of all supported
attributes.
5 - 8 SCANNER JPOS DRIVER DEVELOPER’S GUIDE
To retrieve more information for an attribute:
1. Select RSM_ATTR_GET as DIO Op-Code from the Direct I/O section.
2. In the Direct I/O InXml text box, change the value of the ScannerID XML element to the required scanner
ID, and enter a comma-separated list of attribute numbers as the value of attrib_list.
3. Click Execute. The Direct I/O OutXml text box populates with XML containing a list of attributes with
values and other attribute related details.
To temporarily set or permanently store the value of an attribute:
1. Select RSM_ATTR_SET or RSM_ATTR_STORE as DIO Op-Code from the Direct I/O section.
2. In the Direct I/O InXml text box, change the value of the ScannerID XML element to the required scanner
ID and change the values of data_type and the value XML elements accordingly as obtained by executing the command RSM_ATTR_GET.
3. Click Execute. For these Direct I/O op-codes, an OutXml does not populate.
Upon executing each Op-Code, the CoreScanner Status field populates with the status of the underlying CoreScanner driver. Any value other than 0 indicates an error.

Using DirectIO

Following is an example of how to use DirectIO when attached to a single device, assuming a returned scanner/scale ID of ‘1’.
NOTE The following code demonstrates how to use DirectIO with scanner JPOS control. The same pattern is
package dio;
import jpos.*; import com.zebra.jpos.service.directio.DirectIOCommand; import com.zebra.jpos.service.directio.DirectIOStatus; import java.io.ByteArrayInputStream; import java.io.IOException; import java.util.logging.Level; import java.util.logging.Logger; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.ParserConfigurationException; import org.w3c.dom.Document; import org.xml.sax.SAXException;
/** * * @author Zebra Technologies */ public class DirectIODemo {
// As defined in JPOS v.113
applicable to scale JPOS control by declaring and instantiating JPOS scale class, and scale object instead of scanner class in the code.
public static Scanner scannerObj = new Scanner();
// Interfacing with a single scanner connection
static int scannerID;
// main function
public static void main(String[] args) {
// Open scanner API, claim, enable and perform get scanners try {
// open with 'ZebraAllScanners' as logical device name scannerObj.open("ZebraAllScanners"); // standard claim with 5000ms timeout scannerObj.claim(5000); scannerObj.setDeviceEnabled(true); // enable device // object to store DirectIO data StringBuffer deviceParams = new StringBuffer(); // get scanners - this acquires the scanner ID needed // to perform directIO on a specific device int opCode = DirectIOCommand.GET_SCANNERS; int[] csStatus = new int[1]; scannerObj.directIO(opCode, csStatus, (Object) deviceParams); if (csStatus[0] != DirectIOStatus.STATUS_SUCCESS) {
System.out.println("Error connecting to device");
return; } /////////////////////////////////// // retrieve ID number of scanner // for this example, we assume at // least 1 scanner is found /////////////////////////////////// DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder dBuilder; try {
dBuilder = dbFactory.newDocumentBuilder();
Document doc;
ByteArrayInputStream inIs = new
ByteArrayInputStream(deviceParams.toString().getBytes());
doc = dBuilder.parse(inIs);
DIRECTIO 5 - 9
int scannerCount = doc.getElementsByTagName("scannerID").getLength();
if (scannerCount <= 0) {
System.out.println("No scanner found attatched");
return; } for (int n = 0; n < scannerCount; n++) {
System.out.println("Scanner ID : " +
doc.getElementsByTagName("scannerID").item(n).getTextContent()); } System.out.println("Selected scanner ID : "
+ doc.getElementsByTagName("scannerID").item(0).getTextContent()); scannerID = Integer.parseInt(doc.getElementsByTagName("scannerID").item(0). getTextContent());
} catch (SAXException ex) {
Logger.getLogger(DirectIODemo.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(DirectIODemo.class.getName()).log(Level.SEVERE, null, ex);
} catch (ParserConfigurationException ex) {
Logger.getLogger(DirectIODemo.class.getName()).log(Level.SEVERE, null, ex);
} /////////////////////////////////// // retrieve model number of device
5 - 10 SCANNER JPOS DRIVER DEVELOPER’S GUIDE
/////////////////////////////////// // Setup DirectIO to do a GET Attribute // setup DirectIO XML string String sGetAttribInXML = "<inArgs>\n"
+ " <scannerID>" + scannerID + "</scannerID>\n" + " <cmdArgs>\n" + " <arg-xml>\n" + " <attrib_list>535</attrib_list>\n" + " </arg-xml>\n" + " </cmdArgs>\n"
+ "</inArgs>"; // create new DirectIO data structure // see DirectIO data definition for more information StringBuffer oGETparams = new StringBuffer(); // copy XML string into DirectIO inXML member oGETparams.append(sGetAttribInXML); // set opcode for Atrribute GET opCode = DirectIOCommand.RSM_ATTR_GET; // set scanner ID int[] csSataus = new int[1]; // make directIO call to JPOS driver scannerObj.directIO(opCode, csSataus, (Object) oGETparams);
// check status from DirectIO status member if (csSataus[0] != DirectIOStatus.STATUS_SUCCESS) {
System.out.println("Error performing DirectIO");
return; } // output XML string returned. Not that // the actual model number will be contained // within the <value> XML tag. System.out.println("XML string returned: " + oGETparams.toString()); /////////////////////////////////// // disable UPC-A barcode on scanner /////////////////////////////////// // Setup DirectIO to do a SET Attribute String sSetAttribInXML = "<inArgs>\n" + " <scannerID>" + scannerID + "</scannerID>\n" + " <cmdArgs>\n" + " <arg-xml>\n" + " <attrib_list>\n" + " <attribute>\n" + " <id>6000</id>\n" + " <datatype>X</datatype>\n" + " <value>2</value>\n" + " </attribute>\n" + " </attrib_list>\n" + " </arg-xml>\n" + " </cmdArgs>\n" + "</inArgs>"; // create new DirectIO data structure // see DirectIO data definition for more information StringBuffer oSETparams = new StringBuffer();
// copy XML string into DirectIO inXML member oSETparams.append(sSetAttribInXML); // set opcode for Atrribute SET opCode = DirectIOCommand.RSM_ATTR_SET; // set scanner ID
DIRECTIO 5 - 11
csSataus[0] = scannerID;
// make directIO call to JPOS driver
scannerObj.directIO(opCode, csSataus, (Object) oSETparams);
// check status from DirectIO status member
if (csSataus[0] != DirectIOStatus.STATUS_SUCCESS) {
System.out.println("Error performing DirectIO");
}
} catch (JposException ex) {
System.out.println("Exception: " + ex.getMessage());
}
}
}
5 - 12 SCANNER JPOS DRIVER DEVELOPER’S GUIDE
CHAPTER 6 SUPPORTED SYMBOLOGY
TYPES VS. SCANNER MODE

Overview

This chapter provides a matrix of scanner modes and supported symbology types in each mode.
6 - 2 SCANNER JPOS DRIVER DEVELOPER’S GUIDE
Supported Symbology Types vs. Scanner Mode
Table 6-1
UPC-A
UPC-A with supplemental bar code
UPC-E
UPC-E with supplemental bar code
UPC-D1
UPC-D2
UPC-D3
UPC-D4
UPC-D5
EAN 8 ( =JAN 8 )
JAN 8 ( = EAN 8 )
Supported Symbology Types vs. Scanner Modes
Ty pe Value IBM HID SNAPI Nixdorf Mode B
Symbology Scanner Mode
SCAN_SDT_UPCA
SCAN_SDT_UPCA_S
SCAN_SDT_UPCE
SCAN_SDT_UPCE_S
SCAN_SDT_UPCD1
SCAN_SDT_UPCD2
SCAN_SDT_UPCD3
SCAN_SDT_UPCD4
SCAN_SDT_UPCD5
SCAN_SDT_EAN8
SCAN_SDT_JAN8
XXX
XXX
XXX
XXX
XXX
XXX
XXX
XXX
XXX
XXX
XXX
EAN 8 with supplemental barcode
EAN 13 ( = JAN 13 )
JAN 13 ( = EAN 13 )
EAN 13 with supplemental barcode
EAN-128
Standard ( or discrete ) 2 of 5
Interleaved 2 of 5
Codabar
Code 39
Code 128
OCR "A”
OCR "B”
GS1 DataBar Omnidirectional (normal or stacked)
SCAN_SDT_EAN8_S
SCAN_SDT_EAN13
SCAN_SDT_JAN13
SCAN_SDT_EAN13_S
SCAN_SDT_EAN128
SCAN_SDT_TF
SCAN_SDT_ITF
SCAN_SDT_Codabar
SCAN_SDT_Code39
SCAN_SDT_Code128
SCAN_SDT_OCRA
SCAN_SDT_OCRB
SCAN_SDT_GS1_DATABAR
XXX
XXX
XXX
XXX
XXX
XXX
XXX
XXX
XXX
XXX
XX-
XX-
XX-
GS1 DataBar Expanded (normal or stacked)
SCAN_SDT_GS1_DATABAR_E
XX-
SUPPORTED SYMBOLOGY TYPES VS. SCANNER MODE 6 - 3
Table 6-1
Composite Component A
Composite Component B
Composite Component C
PDF 417
MAXICODE
Data Matrix
QR Code
Micro QR Code
Aztec
Micro PDF 417
Supported Symbology Types vs. Scanner Modes (Continued)
Ty pe Value IBM HID SNAPI Nixdorf Mode B
When the scanner is in Wincor-Nixdorf RS232 Mode B, the Zebra JPOS return value for the ScanDataType property differs from the expected value for the bar code types listed in Table 6-2.
Symbology Scanner Mode
SCAN_SDT_CCA
SCAN_SDT_CCB
SCAN_SDT_CCC
SCAN_SDT_PDF417
SCAN_SDT_MAXICODE
SCAN_SDT_DATAMATRIX
SCAN_SDT_QRCODE
SCAN_SDT_UQRCODE
SCAN_SDT_AZTEC
SCAN_SDT_UPDF417
-X-
-X-
-X-
XX-
XX-
-X-
-X-
-X-
-X-
-X-
Table 6-2
UPC-A with supplemental bar code
UPC-E with supplemental bar code
EAN 8 with supplemental bar code
EAN 13
EAN 13 with supplemental bar code
Bar Code Types Not Accurately Identified in Wincor-Nixdorf RS232 Mode B
Symbology Type Expected Value
SCAN_SDT_UPCA_S SCAN_SDT_UPCA
SCAN_SDT_UPCE_S SCAN_SDT_UPCE
SCAN_SDT_EAN8_S SCAN_SDT_EAN8
SCAN_SDT_EAN13 SCAN_SDT_UPCA
SCAN_SDT_EAN13_S SCAN_SDT_UPCA
Zebra RSM JPOS
Return Value
Comments
Nixdorf Mode B cannot distinguish UPCA since it identifies bar code types UPCA, UPCA_S, EAN13, EAN13_S, and BOOKLAND as one type.
Nixdorf Mode B identifies both bar code types UPCE and UPCE_S as UPCE.
Nixdorf Mode B identifies both EAN8 and EAN8_S bar code types as EAN8.
Nixdorf Mode B cannot distinguish EAN 13 since it identifies bar code types UPCA, UPCA_S, EAN13, EAN13_S, and BOOKLAND as one type.
Nixdorf Mode B cannot distinguish EAN 13_S since it identifies bar code types UPCA, UPCA_S, EAN13, EAN13_S, and BOOKLAND as one type.
6 - 4 SCANNER JPOS DRIVER DEVELOPER’S GUIDE

INDEX

A
AsyncMode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-4
AutoDisable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-3
B
BinaryConversion . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-3
bold text use in guide . . . . . . . . . . . . . . . . . . . . . . . . . viii
bullets use in guide . . . . . . . . . . . . . . . . . . . . . . . . . . . viii
C
CapCompareFrmwareVersion . . . . . . . . . . . . . . . . . 3-3
CapDisplay . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-4
CapDisplay Text . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-4
CapPowerReporting . . . . . . . . . . . . . . . . . . . . . . . . . 3-3
CapPriceCalculating . . . . . . . . . . . . . . . . . . . . . . . . . 3-4
CapStatisticsReporting . . . . . . . . . . . . . . . . . . . . . . . 3-3
CapStatusUpdate . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-4
CapTareWeight . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-4
CapUpdateFirmware . . . . . . . . . . . . . . . . . . . . . . . . . 3-3
CapUpdateStatistics . . . . . . . . . . . . . . . . . . . . . . . . . 3-3
CapZeroScale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-4
CheckHealth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-5
CheckHealthText . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-3
claim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-2, 4-5
ClaimDevice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-5
Claimed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-3
ClearInput . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-5
ClearInputProperties . . . . . . . . . . . . . . . . . . . . . . . . . 3-5
Close . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-5
close . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-2, 4-6
common properties . . . . . . . . . . . . . . . . . . . . . . . . . . 3-3
compareFirmwareVersion . . . . . . . . . . . . . . . . . . . . . 3-5
ControlObjectDescription . . . . . . . . . . . . . . . . . . . . . 3-3
ControlObjectVersion . . . . . . . . . . . . . . . . . . . . . . . . 3-3
conventions
notational . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .viii
D
DataCount . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-3
DataEvent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-6
DataEventEnabled . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-3
DecodeData . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-4
device enable/disable . . . . . . . . . . . . . . . . . . . . . . . . 4-5
DeviceDescription . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-3
DeviceEnabled . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-3
DeviceName . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-3
DirectIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-5
DirectIOEvent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-6
DisplayText . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-5
E
enable/disable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-2
ErrorEvent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-6
events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-6
DataEvent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-6
DirectIOEvent . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-6
ErrorEvent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-6
StatusUpdateEvent . . . . . . . . . . . . . . . . . . . . . . . 3-6
F
font use in guide . . . . . . . . . . . . . . . . . . . . . . . . . . . . .viii
FreezeEvents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-3
I
information, service . . . . . . . . . . . . . . . . . . . . . . . . . . .viii
italics use in guide . . . . . . . . . . . . . . . . . . . . . . . . . . . .viii
Index - 2 SCANNER JPOS DRIVER DEVELOPER’S GUIDE
J
JPOS
driver architecture . . . . . . . . . . . . . . . . . . . . . . . . 1-2
JPOS test scale window button/field functionality . . . 4-5
M
MaxDisplayTextChars . . . . . . . . . . . . . . . . . . . . . . . . 3-4
MaximumWeight . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-4
methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-5
common
CheckHealth . . . . . . . . . . . . . . . . . . . . . . . . . 3-5
ClaimDevice . . . . . . . . . . . . . . . . . . . . . . . . . 3-5
ClearInput . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-5
ClearInputProperties . . . . . . . . . . . . . . . . . . . 3-5
Close . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-5
compareFirmwareVersion . . . . . . . . . . . . . . 3-5
DirectIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-5
Open . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-5
ReleaseDevice . . . . . . . . . . . . . . . . . . . . . . . 3-5
resetStatistic . . . . . . . . . . . . . . . . . . . . . . . . . 3-5
retrieveStatistics . . . . . . . . . . . . . . . . . . . . . . 3-5
updateFirmware . . . . . . . . . . . . . . . . . . . . . . 3-5
updateStatistics . . . . . . . . . . . . . . . . . . . . . . 3-5
scale specific
DisplayText . . . . . . . . . . . . . . . . . . . . . . . . . . 3-5
ReadWeight . . . . . . . . . . . . . . . . . . . . . . . . . 3-5
ZeroScale . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-5
N
notational conventions . . . . . . . . . . . . . . . . . . . . . . . . . viii
O
Open . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-5
open . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-2, 4-5
OpenResult . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-3
Claimed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-3
ControlObjectDescription . . . . . . . . . . . . . . . 3-3
ControlObjectVersion . . . . . . . . . . . . . . . . . . 3-3
DataCount . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-3
DataEventEnabled . . . . . . . . . . . . . . . . . . . . 3-3
DeviceDescription . . . . . . . . . . . . . . . . . . . . . 3-3
DeviceEnabled . . . . . . . . . . . . . . . . . . . . . . . 3-3
DeviceName . . . . . . . . . . . . . . . . . . . . . . . . . 3-3
FreezeEvents . . . . . . . . . . . . . . . . . . . . . . . . 3-3
OpenResult . . . . . . . . . . . . . . . . . . . . . . . . . . 3-3
PowerNotify . . . . . . . . . . . . . . . . . . . . . . . . . . 3-3
PowerState . . . . . . . . . . . . . . . . . . . . . . . . . . 3-3
ResultCode . . . . . . . . . . . . . . . . . . . . . . . . . . 3-3
ResultCodeExtended . . . . . . . . . . . . . . . . . . 3-3
ServiceObjectDescription . . . . . . . . . . . . . . . 3-3
ServiceObjectVersion . . . . . . . . . . . . . . . . . . 3-3
State . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-3
scale specific
AsyncMode . . . . . . . . . . . . . . . . . . . . . . . . . . 3-4
CapDisplay . . . . . . . . . . . . . . . . . . . . . . . . . . 3-4
CapDisplay Text . . . . . . . . . . . . . . . . . . . . . . 3-4
CapPriceCalculating . . . . . . . . . . . . . . . . . . . 3-4
CapStatusUpdate . . . . . . . . . . . . . . . . . . . . . 3-4
CapTareWeight . . . . . . . . . . . . . . . . . . . . . . . 3-4
CapZeroScale . . . . . . . . . . . . . . . . . . . . . . . . 3-4
MaxDisplayTextChars . . . . . . . . . . . . . . . . . . 3-4
MaximumWeight . . . . . . . . . . . . . . . . . . . . . . 3-4
SalesPrice . . . . . . . . . . . . . . . . . . . . . . . . . . .3-4
ScaleLiveWeight . . . . . . . . . . . . . . . . . . . . . . 3-4
StatusNotify . . . . . . . . . . . . . . . . . . . . . . . . . .3-4
TareWeight . . . . . . . . . . . . . . . . . . . . . . . . . . 3-4
UnitPrice . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-4
WeightUnit . . . . . . . . . . . . . . . . . . . . . . . . . . .3-4
ZeroValid . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-4
scanner specific
DecodeData . . . . . . . . . . . . . . . . . . . . . . . . . 3-4
ScanData . . . . . . . . . . . . . . . . . . . . . . . . . . . .3-4
ScanDataLabel . . . . . . . . . . . . . . . . . . . . . . . 3-4
ScanDataType . . . . . . . . . . . . . . . . . . . . . . . . 3-4
properties and methods . . . . . . . . . . . . . . . . . . . . . . . 4-3
P
PowerNotify . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-3
PowerState . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-3
properties
common
AutoDisable . . . . . . . . . . . . . . . . . . . . . . . . . 3-3
BinaryConversion . . . . . . . . . . . . . . . . . . . . . 3-3
CapCompareFrmwareVersion . . . . . . . . . . . 3-3
CapPowerReporting . . . . . . . . . . . . . . . . . . . 3-3
CapStatisticsReporting . . . . . . . . . . . . . . . . . 3-3
CapUpdateFirmware . . . . . . . . . . . . . . . . . . 3-3
CapUpdateStatistics . . . . . . . . . . . . . . . . . . . 3-3
CheckHealthText . . . . . . . . . . . . . . . . . . . . . 3-3
R
read weight . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-6
ReadWeight . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-5
release . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-2, 4-6
ReleaseDevice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-5
resetStatistic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-5
ResultCode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-3
ResultCodeExtended . . . . . . . . . . . . . . . . . . . . . . . . . 3-3
retrieveStatistics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-5
Index - 3
S
SalesPrice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-4
ScaleLiveWeight . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-4
scan data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-3
ScanData . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-4
ScanDataLabel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-4
ScanDataType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-4
scanner mode . . . . . . . . . . . . . . . . . . . .2-2, 2-3, 2-5, 6-2
service information . . . . . . . . . . . . . . . . . . . . . . . . . . . viii
ServiceObjectDescription . . . . . . . . . . . . . . . . . . . . . 3-3
ServiceObjectVersion . . . . . . . . . . . . . . . . . . . . . . . . 3-3
specific properties . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-4
State . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-3
StatusNotify . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-4
StatusUpdateEvent . . . . . . . . . . . . . . . . . . . . . . . . . . 3-6
supported feature set
common methods . . . . . . . . . . . . . . . . . . . . . . . . 3-5
events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-6
properties
common . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-3
scale specific . . . . . . . . . . . . . . . . . . . . . . . . 3-4
scanner specific . . . . . . . . . . . . . . . . . . . . . . 3-4
scale specific methods . . . . . . . . . . . . . . . . . . . . 3-5
symbology types . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-2
symbology values . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-2
W
WeightUnit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-4
Z
zero scale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-6
ZeroScale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-5
ZeroValid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-4
T
TareWeight . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-4
test scale window
button/field/checkbox functionality
claim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-5
close . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-6
device enable/disable . . . . . . . . . . . . . . . . . . 4-5
open . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-5
read weight . . . . . . . . . . . . . . . . . . . . . . . . . . 4-6
release . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-6
zero scale . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-6
test scanner window
button/field/checkbox functionality
claim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-2
close . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-2
enable/disable . . . . . . . . . . . . . . . . . . . . . . . 4-2
open . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-2
properties and methods . . . . . . . . . . . . . . . . 4-3
release . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-2
scan data . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-3
U
UnitPrice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-4
updateFirmware . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-5
updateStatistics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-5
Index - 4 SCANNER JPOS DRIVER DEVELOPER’S GUIDE
Zebra Technologies Corporation Lincolnshire, IL U.S.A. http://www.zebra.com
ZEBRA and the stylized Zebra head are trademarks of Zebra Technologies Corporation, registered in many jurisdictions worldwide. All other trademarks are the property of their respective owners. ©2017-2019 Zebra Technologies Corporation and/or its affiliates. All rights reserved.
72E-149781-06 Revision A - April 2019
Loading...