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 photo copying,
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 n oted below, such licen se may not b e
assigned, sublicensed, or otherwise tran sfe rr e d by th e 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 for m or portion of a licensed program with other pro gram material, create
a derivative work from a licensed program , or us e a li censed 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 au thorized copies it m akes, 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 su bsystems
contained in Zebra products.
Revision History
Changes to the original guide are listed below:
ChangeDateDescription
-01 Rev A5/2011Initial release.
-02 Rev A2/201264 Bit Updates.
-03 Rev A4/2014Added scale related information.
-04 Rev A3/2015Zebra Re-branding
-05 Rev A5/2016Software Re-branding
-06 Rev A2/2019Added:
-06 Rev B1/2020Replaced the IBM USB Hand-held with Full Scan Disable and IBM USB Table-top
iii
- IBM Table-top
- Direct IO, CheckHealth and Registry key information.
barcodes on page 2-2.
ivZEBRA SCANNER OPOS 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 ZEBRA SCANNER OPOS DRIVER
OPOS Sample Application (Scanner OPOS Test Utility) ............................................................... 4-1
OPOS Test Utility Window Functionality ........................................................................................ 4-2
Viewing Bar Code Data ............................................................................................................ 4-6
Getting and Setting OPOS Properties ........................................................................................... 4-8
Creating a Custom OPOS Sample Application .............................................................................. 4-9
Return Value and Result Code ...................................................................................................... 4-9
Direct I/O ........................................................................................................................................ 4-9
Retrieving Weight Data ............................................................................................................ 5-5
Retrieving Weight Data Asynchronously .................................................................................. 5-6
Getting and Setting OPOS Properties ........................................................................................... 5-7
Creating a Custom OPOS Sample Application .............................................................................. 5-8
Return Value and Result Code ...................................................................................................... 5-8
Direct I/O ........................................................................................................................................ 5-8
This guide provides information about the Zebra OPOS Driver which enables bar code data communication
between any scanner and an OPOS compliant POS application via either a USB (IBM Hand-held and SNAPI) or
RS-232 (Wincor-Nixdorf Mode B and SSI) connection.
The Zebra OPOS Driver also enables weight data communication between an MP6200 scanner and an OPOS
compliant POS application via either a USB (IBM Hand-held, IBM Table-top and SNAPI) or RS-232 (SSI)
connection.
Chapter Descriptions
Topics covered in this guide are as follows:
•
Chapter 1, INTRODUCTION TO THE ZEBRA SCANNER OPOS DRIVER provides an overview of the Zebra
OPOS Driver.
•
Chapter 2, INSTALLATION & CONFIGURATION describes specific installation instructions and settings to
configure the Zebra Scanner OPOS Driver on a host computer.
•
Chapter 3, OPOS PROPERTIES, METHODS, EVENTS provides information about the Zebra OPOS Driver
properties, methods, and even ts.
•
Chapter 4, SCANNER OPOS SAMPLE APPLICATION provides information about the Zebra OPOS Driver
properties, methods, and even ts.
•
Chapter 5, SCALE OPOS SAMPLE APPLICATION demonstrates all the OPOS operations available with a
connected Zebra scale.
•
Chapter 6, SUPPORTED SYMBOLOGY TYPES VS. SCANNER MODE provides information about the
sample application in the Zebra Scanner OPOS Driver suite.
viiiZEBRA SCANNER OPOS 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 seq ue nt ial
•
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.
WARNING! 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 ZEBRA
SCANNER OPOS DRIVER
Overview
The Zebra OPOS Driver enables bar code data commu nication between any scanner an d an OPOS compliant
POS application via either a USB (IBM Hand-held, IBM Table-top, and SNAPI) or RS-232 (Wincor-Nixdorf
Mode B and SSI) connection. This driver provides an interface for reading bar code data, receiving events,
opening, claiming, and enabling/disabling the device in accordance with the UPOS committee's version 1.12
specification. The OPOS specification defines a two-layer open-driver software architecture between a POS
application running on a Microsoft Windows operating system and the physical POS hardware device.
•
The upper layer, known as the Common Control Object (CCO), is an ActiveX Control that the POS
application uses to interact indirectly with the Zebra scanner. The CCO is unique to each POS device
class (e.g., scanners, scales, printers) and is provided by the UPOS committee. To simplify development
and integration, the Zebra Scanner SDK includes a Monroe CCO (a vendor-inde pendent scanne r CCO).
The control object (.ocx) file is located in the corresponding scanner or scale \Bin folder.
•
The lower layer , known as the Service Object (SO), is an in-process OLE Automation Server (a DLL) and
is used to interact directly with the POS device, in this case the scanner. The Service Object is unique to
each specific vendor's POS device. The Zebra Scanner SDK contains the Zebra specific SO.
The Zebra OPOS Driver also enables weight data communication betwee n a scale equipp ed MP6200 scanner
and an OPOS compliant POS application via either a USB (IBM Table-top and SNAPI) or RS-232 (SSI)
connection. This driver provides an interface for reading weight data, receiving events, opening, claiming, and
enabling/disabling the device in accordance with the UPOS committee's version 1.13 specification.
1 - 2ZEBRA SCANNER OPOS DRIVER DEVELOPER’S GUIDE
Zebra Scanner OPOS Driver Architecture
Figure 1-1
For more information about OPOS, OPOS architecture, terminology, and programmer's guides, refer to:
•
•
Zebra Scanner OPOS Driver Architecture
UPOS Home Page (http://www.nrf-arts.org).
Monroe Consulting Services, Inc. (http://www.monroecs.com/opos.htm).
CHAPTER 2 INSTALLATION &
CONFIGURATION
Overview
This chapter describes installation instructions and settings to configure the Zebra Scanner OPOS Driver on a
host computer.
For custom installation instructions, refer to the Zebra Scanner SDK for Windows Developer’s Guide
(p/n 72E-149784-xx).
NOTE OPOS components are installed by default with the standard Scanner SDK installation. If a custom
Scanner SDK installation is performed, the OPOS option must be selected to install the OPOS
components.
Configuration
After a successful installation of the Zebra Scanner SDK with the OPOS driver, the following system registry
The Zebra Scanner OPOS Driver reads the registry entry above to retrieve required configurations, for
example baud rate for serial scanners, and scanner filtering rules to form the logical scanner defined by the
user.
See Appendix A, WINDOWS REGISTRY KEYS for OPOS DRIVER for description s of suppor te d r egi stry ke ys.
2 - 2 ZEBRA SCANNER OPOS DRIVER DEVELOPER’S GUIDE
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.
Set All Defaults
Scan the appropriate bar code below to configure the scanner for either USB or RS-232 communication
protocols.
USB Communication Protocol
RS-232 Communication Protocol
Wincor-Nixdorf RS-232 Mode B (Scanner only)
IBM USB Hand-held with Full Scan Disable
IBM USB Table-top
SSI
NOTE To configure serial communication settings refer to the Zebra Scanner SDK for Windows Developer’s
Guide (p/n 72E-149784-xx).
CHAPTER 3 OPOS PROPERTIES, METHODS,
EVENTS
Overview
The following steps depict the behavioral model of the OPOS 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 pr op e rty 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.
The following steps depict the behavioral model of the OPOS driver and scale.
2.When the ReadWeight method successfully returns a value, scale control returns the weight data to the
POS application.
3 - 2 ZEBRA SCANNER OPOS DRIVER DEVELOPER’S GUIDE
Deviations from OPOS Specifications
The Zebra Scanner OPOS Driver includes several deviations from the OPOS specification for more flexibility.
For example, the Claim method and Claimed property have significant deviations. According to the OPOS
model, one control accesses only one physical device. The Zebra Scanner OPOS Driver allows access to
multiple scanners simultaneously. Hence, a claim succeeds with one or more scanners. Also, several
applications can share one scanner.
In addition to the Zebra Scanner OPOS Driver's architectural aspects, the following special behaviors occur:
•
When there is no scanner connected to a cordless base, Zebra Scanner OPOS 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.
•
Since the Zebra Scanner OPOS Driver supports multiple scanners, it implements the OPOS
retrieveStatistics method call with certain deviations.
• When claiming multiple scanners, scanner details appear sequentially with comma separation. The
order is the same for all scanner statistics.
• When there are multiple scanners, OPOS schema validation can fail because some date fields
contain comma-separated multiple dates.
• Non-RSM scanners, including serial scanners in Wincor-Nixdorf RS-232 Mode B, do not provide
Model Number and Serial number. These values appear as empty strings.
Supported Feature Set
This section describes the supported feature set per the OPOS specification.
The Zebra OPOS driver provides direct access to Zebra devices connected to a host PC through the OPOS
Direct IO API. It is possible for an application developer to configure all th e vendor specific configurations of
Zebra devices, like beeper tone, beeper volume, enable/disable symbologies, or even rebooting the device to
factory defaults using Direct I/O functionality.
The Zebra OPOS Direct IO API is called in a manner similar to calling the CoreScanner API with op-codes and
XML based IN and OUT parameters (refer to the Zebra Scanner SDK for Windows Developer Guide for more
detail). The Zebra OPOS Direct IO API provides the following functions.
•
Discover all connected Motorola devices (op-code: GET_SCANNERS)
• Op-code:
• Input XML Arg: None
• Scanner ID values retrieved by executing this command are used in the value for <scannerID> tags in
next opcodes described below.
GET_SCANNERS
•
Retrieve all attributes supported by a device (op-code: RSM_ATTR_GETALL)
• Op-Code:
• Input XML Arg:
<inArgs>
<scannerID>1</scannerID>
</inArgs>
•
Retrieve value of one or set of attributes (op-code: RSM_ATTR_GET)
• Op-Code:
• Input XML Arg:
<inArgs>
<scannerID>1</scannerID>
<cmdArgs>
<arg-xml>
</arg-xml>
</cmdArgs>
</inArgs>
RSM_ATTR_GETALL
RSM_ATTR_GET
<attrib_list>1</attrib_list>
OPOS PROPERTIES, METHODS, EVENTS3 - 7
•
Retrieve value of the attribute next to the given attribute (op-code: RSM_ATTR_GETNEXT)
• Op-Code:
• Input XML Arg:
<inArgs>
<scannerID>1</scannerID>
<cmdArgs>
<arg-xml>
</arg-xml>
</cmdArgs>
</inArgs>
•
Temporarily set the value of an attribute (op-code: RSM_ATTR_SET)
• Op-Code:
• Input XML Arg:
<inArgs>
<scannerID>1</scannerID>
<cmdArgs>
<arg-xml>
</arg-xml>
</cmdArgs>
</inArgs>
• Values for <id> and <value> can be found in the table below
Action Attributes and Values For Use With RSM_ATTR_SET
Table 3-7
Attribute
Number
6000Beeper/LEDTriggers the beeper/LED via
6001ParameterDefaultsInitiates a parameter defaults
6003BeepOnNextBootupControls whether or not the boot
Action Attributes and Values
Attribute NameDescription
command.
command.
up / power up beep is suppressed
on the next power up.
Data
Ty pe
‘X’1 high short beep
‘X’0 – Restore Defaults
‘X’0 – Disable beep on next
Beep/LED Action Value
2 high short beeps
3 high short beeps
4 high short beeps
5 high short beeps
1 low short beep
2 low short beeps
3 low short beeps
4 low short beeps
5 low short beeps
1 high long beep
2 high long beeps
3 high long beeps
4 high long beeps
5 high long beeps
1 low long beep
2 low long beeps
3 low long beeps
4 low long beeps
5 low long beeps
Fast warble beep
Slow warble beep
High-low beep
Low-high beep
High-low-high beep
Low-high-low beep
High-high-low-low beep
Green LED off
Green LED on
Yellow LE D on
Yellow LE D off
Red LED on
Red LED off
The Zebra Scanner OPOS Driver suite ships with a sample application that demonstrates all the OPOS
operations on a connected Zebra scanner.
OPOS Sample Application (Scanner OPOS Test Utility)
The Scanner OPOS Test Utility allows you to simulate an application communicating with the Zebra Scanner
OPOS Driver. This utility displays scanned data received from the scanner through the Zebra Scanner OPOS
Driver. The Zebra Scanner SDK includes source code for this VC++ test utility.
4 - 2 ZEBRA SCANNER OPOS DRIVER DEVELOPER’S GUIDE
OPOS Test Utility Window Functionality
Figure 4-1
Table 4-1
Button/ Field/
OpenOpen Method.ZEBRA_SCANNER
ClaimClaim the
Device EnableEnable the
Device DisableDisable the
ReleaseRelease the
Scanner OPOS Test Utility Button/Field Functionality
Check Box
Scanner OPOS Test Window
DescriptionValues Code Sample
-1, Any integer starting
device with
time out value.
This is the current set of op-codes supported by Zebra
OPOS Direct I/O implementation. For additional
information refer to the OPOS Scanner Sample
Application source code provided with the SDK
installation.
This is the man input parameter for the Direct I/O
function. The format of the XML in very si mil ar to inXML
for CoreScanner API. For additional information refer to
Scanner SDK Developer Guide and OPOS Scanner
Sample Application source code provided with the SDK
installation.
SCANNER OPOS SAMPLE APPLICATION4 - 5
Table 4-1
Button/ Field/
ExecuteExecute the
outXML fieldXML output
CoreScanner
status
ClearClear the
Scanner OPOS Test Utility Button/Field Functionality (Continued)
Check Box
DescriptionValues Code Sample
selected
command.
resulting from
selected
command
Result code
from the
underlying
CoreScanner
layer
contents of the
outXML field
n/a
Read-only output XMLThis is the man output parameter for the Direct I/O
function. The format of the XML in very si mil ar to inXML
for CoreScanner API. For additional information refer to
Scanner SDK Developer Guide and OPOS Scanner
Sample Application source code provided with the SDK
installation.
Read-onlyDirect I/O function helps to communicate an application
with underlying device/device drivers. This field
represent CoreScanner state after each Direct I/O call.
Refer to OPOS Scanner Sample Application source
code provided with the SDK installation.
n/aThis clears the Direct I/O related text fields i n the OPOS
sample application. Please refer to OPOS Scanner
Sample Application source code provided with the SDK
installation.
4 - 6 ZEBRA SCANNER OPOS 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 OPOS Test Utility:
1.Scan the USB OPOS (Hand-held) bar code, SNAPI bar code or Wincor-Nixdorf RS-232 Mode B bar code
on page 2-2 to configure the scanner for the correct communication protocol.
2.Under the folder \Program Files\Zebra Technologies\Barcode Scanners\Scanner SDK\OPOS\Scanner
OPOS\Sample Applications\bin, enter the sub-folder appropriate to the host architecture (x86 or x64) and
run Scanner-OPOS-Test.exe to launch the Scanner OPOS Test Utility .
3.Select Open. The Open Service Object window appears.
4.Select Ok to use the Zebra Scanner Service Object that the Scanner SDK Installshield setup program
loaded on the PC.
5.Select Claim.
6.Select Device Enable.
7.Select Data Events.
8.Select Decode Data.
9.Scan the following sample bar code:
UPC-A
SCANNER OPOS SAMPLE APPLICATION4 - 7
10. Select Data Events to view the scanned UPC-A bar code data. The bar code data that the driver
processed appears in the Scan Data Label and Scan Data Type boxes:
Figure 4-2
11. Select Clear Input to clear the data from the Scan Data Type and Scan Data Label boxes.
12. To perform a second test, scan another bar code.
Scanner OPOS Test Window - Scan Data
4 - 8 ZEBRA SCANNER OPOS DRIVER DEVELOPER’S GUIDE
Getting and Setting OPOS Properties
This utility allows getting and setting the OPOS properties of the Zebra Scanner OPOS Driver via the
Properties And Methods drop-down list.
To get and set the OPOS properties of the Zebra Scanner OPOS Driver:
1.Scan the USB OPOS (Hand-held) bar code, SNAPI bar code or Wincor-Nixdorf RS-232 Mode B bar code
on page 2-2 to configure the scanner for the correct communication protocol.
OPOS\Sample Applications\bin, enter the sub-folder appropriate to the host architecture (x86 or x64) and
run Scanner-OPOS-Test.exe to launch the Scanner OPOS Test Utility .
3.Select Open. The Open Service Object window appears.
4.Select Ok to use the Zebra Scanner Service Object that the SDK Installshield loaded on the PC.
5.Select Claim.
6.Select Device Enable.
7.Select a configurable (setable) property in the Properties And Methods drop-down list. You can configure
some properties (e.g., AutoDisable, FreezeEvents); other properties are read only (e.g.,
ServiceObjectVersion, DataCount).
8.The current value of the OPOS driver appears in the edit box below the property selected in the list box.
The values 1 and 0 represent true and false, respectively.
9.To change the configurable property, change the value in the edit box and select Set Properties. This
updates the property with the new value.
SCANNER OPOS SAMPLE APPLICATION4 - 9
Creating a Custom OPOS Sample Application
You may use any programming language to create a custom OPOS sample application. However, Microsoft
supported languages are recommended (e.g., Visual Basic, Visual C++ or C#).
To create a custom OPOS sample application:
1.Create a project in the desired Microsoft Visual Studio development environment.
2.Select Choose Toolbox Items… from the Tools menu.
3.Select (check) OPOS Scanner Control from the COM Components tab.
4.Add OPOSScanner .ocx to the project.
5.Drag and drop to the form/Dialog window.
6.Add a variable (handle) for the scanner control added to the form/Dialog window.
7.Call Open(), Claim() methods [e.g., Open ("SYMBOL_SCANNER"); Claim (2000);].
8.SetDeviceEnabled to TRUE.
9.Set Freeze Events property to FALSE [e.g., SetFreezeEvents (FALSE)].
10. SetDataEventsEnable to TRUE to get scan data events.
11. When done, SetDeviceEnabled to FALSE, Release() and Close() the service.
12. Call Device Disable property, release and close methods to close the connection.
Return Value and Result Code
When calling any method, check whether the return value is 0 (=OPOS_SUCCESS) to ensure the method is
successful. Otherwise it returns an error code, which indicates the reason for the error. After setting property
values, check that the result code returns 0 (=OPOS_SUCCESS), indicating success. If unsuccessful, it
returns an error code.
Direct I/O
See Zebra OPOS Driver Direct IO API on page 3-6 for a description of Direct IO functionality.
Statistics Methods
The Zebra OPOS Driver supports the retrieveStatistics, resetStatistics, and updateStatistics methods.
GoodScanCount is the only defined statistic in the Zebra OPOS Driver and can be used as a parameter for
these methods.
Model number, serial number and the Type (Scanner Host Mode) parameters are available in the system
registry as configurable entries so that user can configure them according to the business requirement.
Claiming a scanner compares the scanner details provided in system registry with the attached scanner
properties. The claim is successful when they match.
Enter * to include anything for the particular entry. For example, enter * for the serial number to claim scanners
with any serial number. Otherwise, the claim is successful only if the provided serial number and model
number matches the present sca nner.
For the model number and serial number, provide the exact value, or part of the string and a star (*). Do not
enter a star (*) in the middle of a string; in this case, all data after star (*) is ignored. Provide a value and star as
a model number (e.g., LS4208*) to accept all scanners starting with that model number (LS4208). Provide a
star (*) for the serial number to accept all scanners regardless of serial number.
It is required to add the full name of each scanner type as a comma or space delimited list to enable the
scanners to be Claimed. As an examp le, to include SNAPI scanners and IBM hand-held mode scanners the
"Type" entry should be (USBIBMHID SNAPI). To include all scanner modes (Types) the value should be (ALL)
Since non-RSM scanners, including serial scanners in Wincor-Nixdorf RS-232 Mode B, do not provide the
model number and serial number, to claim these scanners set a " * " to both ModelNumber and SerialNumber
registry values.
CHAPTER 5 SCALE OPOS SAMPLE
APPLICATION
Overview
The Zebra Scale OPOS Driver suite ships with a sample application that demons tr ates all th e OPO S
operations on a connected Zebra scale.
Scale OPOS Sample Application
The Scale OPOS Sample Application allows you to simulate an application communicating with the Zebra
Scale OPOS Driver. This utility displays received weight data from the scale through the Zebra Scale OPOS
Driver. The Zebra Scanner SDK includes source code for this VC++ test utility.
OPOS\Sample Applications\bin, enter the sub-folder appropriate to the host architecture (x86 or x64) and
run OPOSScaleSampleApp.exe to launch the Scale OPOS sample application.
Figure 5-2
4.Place the item to weigh on the platter of the scale.
5.On the sample application screen, select Open to open the logical device named in the text box (which is
Zebra Scale OPOS Sample Application
by default installed by the Scanner SDK Installshield).
6.Select Claim.
7.Select Device Enable.
8.Select Read Weight. The weight of the item, and the measuring unit appear in the text box.
5 - 6 ZEBRA SCANNER OPOS DRIVER DEVELOPER’S GUIDE
Retrieving Weight Data Asynchronously
To retrieve weight data asynchronously using the OPOS Scale sample application:
1.Connect the MP6000 scanner/scale unit to a host PC with a USB or serial cable.
2.Switch the scanner to a management-capable host mode by scanning on e of the bar codes on p age 2-2 to
configure the scanner for the correct communication protocol.
OPOS\Sample Applications\bin, enter the sub-folder appropriate to the host architecture (x86 or x64) and
run OPOSScaleSampleApp.exe to launch the Scale OPOS sample application. See Figure 5-2 on pag e
5-5.
4.Place the item to weigh on the platter of the scale.
5.On the sample application screen, select Open to open the logical device named in the text box (which is
by default installed by the Scanner SDK Installshield).
6.Select Claim.
7.Check the AsyncMode box in DataEvent section.
8.Check DataEventEnable.
9.Select Device Enable.
10. Select Read Weight. The weight of the item, and the measuring unit appear in the text box.
Getting and Setting OPOS Properties
This utility allows getting and setting the OPOS properties of the Zebra OPOS Driver via the Properties
drop-down list.
To get and set the OPOS properties of the Zebra OPOS Driver:
1.Scan the USB OPOS (Hand-held) bar code, SNAPI bar code or SSI bar code on page 2-2 to configure the
OPOS\Sample Applications\bin, enter the sub-folder appropriate to the host architecture (x8 6 or x64) and
run OPOSScaleSampleApp.exe to launch the Scale OPOS sample application.
3.Select Open to use the Zebra OPOSScale Service Object that the SDK Installshield loaded on the PC.
4.Select Claim.
5.Select Device Enable.
6.Select a configurable (setable) property in the Properties drop-down list. You can configure some
properties (e.g., AutoDisable, FreezeEvents); other properties are read only (e.g., ServiceObjectVersion,
DataCount).
SCALE OPOS SAMPLE APPLICATION5 - 7
7.The current value of the OPOS property appears in the edit box below the property selected in the list box.
The values 1 and 0 represent true and false, respectively.
8.To change the configurable property, change the value in the edit box and select Set Property. This
updates the property with the new value.
5 - 8 ZEBRA SCANNER OPOS DRIVER DEVELOPER’S GUIDE
Creating a Custom OPOS Sample Application
You may use any programming language to create a custom OPOS sample application. However, Microsoft
supported languages are recommended (e.g., Visual Basic, Visual C++, or C#).
To create a custom OPOS sample application:
1.Create a project in the desired Microsoft Visual Studio development environment.
2.Select Choose Toolbox Items… from Tools menu.
3.Select (check) OPOS Scale Control from the COM Components tab.
4.Add OPOSScale.ocx to the project.
5.Drag and drop to the form/Dialog window.
6.Add a variable (handle) for the scanner control added to the form/Dialog window.
7.Call Open(), Claim() methods [e.g., Open ("ZEBRA_SCALE"); Claim (2000);].
8.SetDeviceEnabled to TRUE.
9.Add button to call ReadWeight method, and add edit control to display the weight data.
10. When done, SetDeviceEnabled to FALSE, Release() and Close() the service.
Return Value and Result Code
When calling any method, check whether the return value is 0 (=OPOS_SUCCESS) to ensure the method is
successful. Otherwise it returns an error code, which indicates the reason for the error. After setting property
values, check that the result code returns 0 (=OPOS_SUCCESS), indicating success. If unsuccessful, it
returns an error code.
Direct I/O
See Zebra OPOS Driver Direct IO API on page 3-6 for a description of Direct IO functionality.
Statistics Methods
The Zebra OPOS Scale Driver does not support the Statistics method. Statistics related to a scale could be
obtained through the RSM parameters of the MP6200. Refer to the Zebra Scanner SDK for Windows Developer’s Guide (p/n 72E-149784-xx).
Modified Claim Functionality
Model number, serial number and the Type (Scanner Host Mode) parameters are available in the system
registry as configurable entries so that user can configure them according to the business requirement.
Claiming a scanner compares the scanner details provided in system registry with the attached scanner
properties. The claim is successful when they match.
Enter * to include anything for the particular entry. For example, enter * for the serial number to claim scanners
with any serial number . Otherwise, the claim is successful only if the provided serial number and model
number matches the present sca nner.
For the model number and serial number, provide the exact value, or part of the string and a star (*). Do not
enter a star (*) in the middle of a string; in this case, all data after star (*) is ignored. Provide a value and star as
a model number (e.g., LS4208*) to accept all scanners starting with that model number (LS4208). Provide a
star (*) for the serial number to accept all scanners regardless of serial number.
It is required add the full name of the each scanner type as comma or space delimited list to get the scanners
Claimed. As an example to include SNAPI scanners and IBM Hand Held mode scanners the "Type" entry
should be (USBIBMHID SNAPI). To include all scanner modes (Types) the value should be (ALL)
Since non-RSM scanners, including serial scanners in Wincor-Nixdorf RS232 Mode B, do not provide the
model number and serial number, to claim these scanners set a " * " to both ModelNumber and SerialNumber
registry values.
When the scanner is in Wincor-Nixdorf RS-232 Mode B, the Zebra OPOS return value for the ScanDataType
property differs from the expected value for the bar code types listed in Table 6-2.
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 RS-232 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 OPOS
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 - 4ZEBRA SCANNER OPOS DRIVER DEVELOPER’S GUIDE
APPENDIX A WINDOWS REGISTRY KEYS
FOR OPOS DRIVER
Overview
This appendix describes the Windows registry keys for the OPOS Scanner and Scale logical names and
drivers.
Table A-1
Key
Path
(x64)
Table A-2
(Default)ZebraScannerSO.ScannerSOService object name of the scanner OPOS.
Baud rate9600
CheckDigitAutoCalculate0
1
Added to maintain the backward compatibility and are optional if the CompatibilityMode is set
to disable backward compatibility.
Registry Paths to Default Scanner OPOS Logical Names
Specifies whether an OPOS claim is
required to be exclusive to the scanners in
the logical device. For example, if a
scanner is exclusively claimed by an
application, other applications cannot claim
it or send management commands to that
scanner.
0 = OPOS claim exclusivity is not required
for all scanners in the logical device.
1 = OPOS claim is exclusive to all scanners
in the logical device.
Any other value = OPOS claim is able to
claim at least one scanner in the logical
device.
ModelNumber1. DS6707-SR20001ZZR,DS9808*
(* Represents any model of
the
Comma separated list of scanner model
numbers for use with OPOS driver.
DS9808.)
1
PID
PortCOM1
SerialNumber1. 7116000500337,7087000501981
Type
TypePool
* (Represents all PIDs)Product IDs of Zebra bar code scanners.
COM1,COM2
* (Represent any COM port)
Comma or space delimited list of serial ports
needed for use with OPOS driver.
Comma separated list of scanner serial
2. * (Represents all serial numbers)
SNAPI NIXMODB USBIBMHID
USBIBMTT SSI ALL
SNAPI NIXMODB USBIBMHID
USBIBMTT SSI ALL
numbers for use with OPOS driver.
Comma or space delimited list of scanner
modes from the TypePool.
All the supported types only for reference.
OPOS driver does not read this ent ry .
VID0x05E0Vendor ID of Zebra bar code scanners.
1
Added to maintain the backward compatibility and are optional if the CompatibilityMode is set
to disable backward compatibility.
WINDOWS REGISTRY KEYS for OPOS DRIVERA - 3
Table A-3
Key
Path
Registry Paths to Default Scale OPOS Logical Names
NOTE On 64-bit Windows, there are registry keys for 32-bit applications under the corresponding
Wow6432Node.
Table A-4
Registry Keys for OPOS Scale Logical Names
Value NameSample DataDescription
(Default)ScaleOPOS.ScalSOService object name of the Scale OPOS.
DeviceDescriptionZebra Technologies Scale
Logical device description.
logical device
ExclusiveClaimLevel0
1
0 =OPOS Scale service object does not get
exclusive access of the device on claiming the
device. This may be required if an application needs
to access both scanner and scale of the MP6200
scanner at same time.
1 =Scale service object does claim the device
exclusively so that no other POS application can
access the device.
LiveWeightFrequency2Number of live weight events per second (values
from 1 to 100).
NoTimeOutOnReadWeight0
1
0 = ReadWeight method returns
OPOS_E_TIMEOUT if no valid weight data is
retrieved before the time out elapse.
1 = ReadWeight method does not return
OPOS_E_TIMEOUT if no valid weight data is
retrieved before the time out elapse. It always
reports OPOS_SUCCESS as result code.
ZeroValidOveride0
1
0 = ReadWeight does not accept zero weight as a
valid reading.
1 = ReadWeight does accept zero weight as a valid
reading.
A - 4ZEBRA SCANNER SDK FOR WINDOWS DEVELOPER’S GUIDE
Table A-4
Registry Keys for OPOS Scale Logical Names (Continued)
Value NameSample DataDescription
WeightChangeThresholdUnit of the value is based on
scales weight unit with
assumed decimal point. For
example, 10 = 0.01Kg or
Defines how large the weight reported from the
scanner should differ from the previously reported
value in order for the last reported weight value to be
a legitimate weight.
Defines how fast the SO should poll the scale to
detect a change of weight on the platter.
Defines whether even an unstable weight reported
after a stable weight is considered as a change of
weight on the platter.
NOTE On 64-bit Windows, there are registry keys for 32-bit applications under the corresponding
Wow6432Node.
Table A-6
Registry Keys for Scanner OPOS Driver - Applies to all Scanner OPOS Logical Names
Value NameValuesDescription
AutoDisableControl0 = Disable
1 = Enable
0 = Normal AutoDisable property
operation.
1 = Automatically disables the scanner
after each data event regardless of the
value of OPOS property AutoDisable.
AutoDisableDelay0Delay in milliseconds to disable the
scanner automatically after each data
event. Default value is 0.
DataEventAutoDisableControl0 = Disable
1 = Enable
0 = Normal DataEventEnable operation.
1 = Scanner SO overrides the value of
OPOS property DataEventEnable and
always delivers the data events to
application layer.
DataEventDelay0Minimum time gap in milliseconds
between two decode data events. Default
value is 0 ms.
EnableTrace0 = Disable
1 = Enable
Enable or disable debug/engineering
message entries to the log file specified by
LogFilePath.
WINDOWS REGISTRY KEYS for OPOS DRIVERA - 5
Table A-6
InterCommandDelay0Minimum time gap in milliseconds
LogFilePath\Program Files\Zebra
PowerNotifyControl0
SetDeviceEnableStateOnFailure0 = Disable
Registry Keys for Scanner OPOS Driver - Applies to all Scanner OPOS Logical Names (Continued)
Value NameValuesDescription
between OPOS method calls. Default
value is 0 ms.
Path and filename for log file if
Technologies\Barcode
Scanners\Scanner
SDK\OPOS\Scanner
OPOS\bin\Logs\
stiopos.txt
1
1 = Enable
EnableTrace is enabled.
This is to control reporting the value for the
OPOS PowerState property. When the
value is set to 1, the PowerState property
always has the value True regardless of
the value of the PowerNotify property . This
defaults to 0.
0 = Normal Result Code operation
1 = Regardless of the result of
DeviceEnable call, Result Code is set to
OPOS_SUCCESS.
A - 6ZEBRA SCANNER SDK FOR WINDOWS DEVELOPER’S GUIDE
Table A-6
Registry Keys for Scanner OPOS Driver - Applies to all Scanner OPOS Logical Names (Continued)
Value NameValuesDescription
SetEnableDisableOnEvent0 = Disable
1 = Enable
SetHardwareAutoDisableState0 = Disable
2 = Enable
SyncDeviceEnableStateOnDiscovery0 = Disable
1 = Enable
0 = Normal Enable/Disable operation
1 = SO keeps the device Enable/Disable
state in same state as SO DeviceEnable
state. If an external application changes
the device state, the SO immediately
corrects it.
Controls the hardware ‘Scan Disable
Mode’ setting on the scanner itself.
0 = Normal operation
2 = The SO sets the ‘Scan Disable Mode’
on the scanner to ‘Auto Disable’. This
disables scanning after transmission of a
bar code, and remains disabled until the
host sends a Scan Enable.
This feature is not supported by all
scanner models.
Sync a newly connected device’s enable /
disable state with the current enable /
disable state of the OPOS driver. This is
helpful if a new scanner is connected to a
POS system where it already has a
connected scanner. At the time the new
scanner is connected, if the state of the
OPOS SO is ‘device disabled’ the newly
connected scanner should also has to
change its state to ‘device disable’. This
synchronization will be performed if
“SyncDeviceEnableStateOnDiscovery” is
enabled.
Table A-7
Key
Path
(x64)
NOTE On 64-bit Windows, there are registry keys for 32-bit applications under the corresponding