No part of this publication may be reproduced or used in any form, or by any electrical or mechanical means,
without permission in writing from Zebra. This includes electronic or mechanical means, such as photocopying,
recording, or information storage and retrieval systems. The material in this manual is subject to change
without notice.
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:
ChangeDateDescription
-01 Rev A5/2011Initial release.
-02 Rev A3/2012Updates for 64-bit.
-03 Rev A4/2014Updates to include scale information.
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.
viiiSCANNER JPOS DRIVER DEVELOPER’S GUIDE
Notational Conventions
The followingconventions 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 - 2SCANNER 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.
<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"/>
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 & CONFIGURATION2 - 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.
###############################################################################
# logFileName:
# File name or lable for the log file
###############################################################################
logFileName=jpos.log
###############################################################################
# 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.
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 /
OpenOpen method.Zebra Scale
ClaimClaim the device with
Device Enable/
Disable
Scale JPOS Test Scale Window
JPOS Test Scale Window Button/Field/Checkbox Functionality
Checkbox
DescriptionValuesCode Sample
-1, Any integer
time out value.
Enable or Disable the
scanner. Must enable
before using scale.
starting from zero
True / FalseEnable:
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
DescriptionValuesCode Sample
Read WeightMeasures the weight of
items(s) on the scale.
Zero ScaleSets the current scale
weight to zero.
ReleaseRelease the scale.N/A
CloseClose 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
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 - 2SCANNER 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:
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.
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:
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
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):
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.
DIRECTIO5 - 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 - 8SCANNER 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
/**
*
* @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 {
+ "</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
This chapter provides a matrix of scanner modes and supported symbology types in each mode.
6 - 2SCANNER 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 peValueIBM HIDSNAPINixdorf Mode B
SymbologyScanner 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 MODE6 - 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 peValueIBM HIDSNAPINixdorf 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.
SymbologyScanner 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 TypeExpected Value
SCAN_SDT_UPCA_SSCAN_SDT_UPCA
SCAN_SDT_UPCE_SSCAN_SDT_UPCE
SCAN_SDT_EAN8_SSCAN_SDT_EAN8
SCAN_SDT_EAN13SCAN_SDT_UPCA
SCAN_SDT_EAN13_SSCAN_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.