0% found this document useful (0 votes)
468 views54 pages

ZEBRA OPOS Driver Developer's Guide

ZEBRA OPOS Driver Developer's Guide

Uploaded by

Igor Ver
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
468 views54 pages

ZEBRA OPOS Driver Developer's Guide

ZEBRA OPOS Driver Developer's Guide

Uploaded by

Igor Ver
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 54

ZEBRA SCANNER

OPOS DRIVER
DEVELOPER’S GUIDE
ZEBRA SCANNER OPOS DRIVER
DEVELOPER’S GUIDE
72E-149783-05
Revision A
May 2016
ii ZEBRA SCANNER OPOS DRIVER DEVELOPER’S GUIDE

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.
iii

Revision History
Changes to the original guide are listed below:

Change Date Description

-01 Rev A 5/2011 Initial release.

-02 Rev A 2/2012 64 Bit Updates.

-03 Rev A 4/2014 Added scale related information.

-04 Rev A 3/2015 Zebra Re-branding

-05 Rev A 5/2016 Software Re-branding


iv ZEBRA 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


Overview ........................................................................................................................................ 1-1
Zebra Scanner OPOS Driver Architecture ............................................................................... 1-2

Chapter 2: INSTALLATION & CONFIGURATION


Overview ........................................................................................................................................ 2-1
Configuration .................................................................................................................................. 2-1
Scanner Configuration Bar Codes ........................................................................................... 2-2
USB Communication Protocol ............................................................................................ 2-2
RS-232 Communication Protocol ....................................................................................... 2-2

Chapter 3: OPOS PROPERTIES, METHODS, EVENTS


Overview ........................................................................................................................................ 3-1
Deviations from OPOS Specifications ........................................................................................... 3-2
Supported Feature Set ................................................................................................................... 3-3
Properties ................................................................................................................................. 3-3
Methods ................................................................................................................................... 3-5
Events ...................................................................................................................................... 3-6
vi ZEBRA SCANNER OPOS DRIVER DEVELOPER’S GUIDE

Chapter 4: SCANNER OPOS SAMPLE APPLICATION


Overview ........................................................................................................................................ 4-1
OPOS Sample Application (Scanner OPOS Test Utility) ............................................................... 4-1
OPOS Test Utility Window Functionality ........................................................................................ 4-2
Viewing Bar Code Data ............................................................................................................ 4-5
Getting and Setting OPOS Properties ........................................................................................... 4-7
Creating a Custom OPOS Sample Application .............................................................................. 4-8
Return Value and Result Code ...................................................................................................... 4-8
Direct I/O ........................................................................................................................................ 4-8
Statistics Methods .......................................................................................................................... 4-8
Modified Claim Functionality .......................................................................................................... 4-9

Chapter 5: SCALE OPOS SAMPLE APPLICATION


Overview ........................................................................................................................................ 5-1
Scale OPOS Sample Application ................................................................................................... 5-1
Scale OPOS Sample Application Window Functionality ................................................................ 5-2
Retrieving Weight Data ............................................................................................................ 5-4
Retrieving Weight Data Asynchronously .................................................................................. 5-5
Getting and Setting OPOS Properties ........................................................................................... 5-6
Creating a Custom OPOS Sample Application .............................................................................. 5-7
Return Value and Result Code ...................................................................................................... 5-7
Direct I/O ........................................................................................................................................ 5-7
Statistics Methods .......................................................................................................................... 5-7
Modified Claim Functionality .......................................................................................................... 5-8

Chapter 6: SUPPORTED SYMBOLOGY TYPES VS. SCANNER MODE


Overview ........................................................................................................................................ 6-1
Supported Symbology Types vs. Scanner Mode ........................................................................... 6-2

Appendix A: WINDOWS REGISTRY KEYS for OPOS DRIVER


Overview ........................................................................................................................................ A-1

Index
ABOUT THIS GUIDE

Introduction
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 events.
• Chapter 4, SCANNER OPOS SAMPLE APPLICATION provides information about the Zebra OPOS Driver
properties, methods, and events.
• 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.
viii ZEBRA SCANNER OPOS 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.

WARNING! This symbol indicates that if this information is ignored the possibility that serious personal
injury may occur.

Service Information
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 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. 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-independent scanner 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 between a scale equipped 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-2 ZEBRA SCANNER OPOS DRIVER DEVELOPER’S GUIDE

Zebra Scanner OPOS Driver Architecture

Figure 1-1 Zebra Scanner OPOS Driver Architecture

For more information about OPOS, OPOS architecture, terminology, and programmer's guides, refer to:

• 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
entries are created at:

HKEY_LOCAL_MACHINE\SOFTWARE\OLEforRetail\ServiceOPOS\Scanner\ZEBRA_SCANNER

or

HKEY_LOCAL_MACHINE\SOFTWARE\OLEforRetail\ServiceOPOS\Scale\ZEBRA_SCALE

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 descriptions of supported registry keys.
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

IBM USB Hand-held with Full Scan Disable

IBM USB Table-top

RS-232 Communication Protocol

SSI

Wincor-Nixdorf RS-232 Mode B (Scanner only)

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 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.

The following steps depict the behavioral model of the OPOS driver and scale.

1. The user/OPOS application performs read weight operation 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.
OPOS PROPERTIES, METHODS, EVENTS 3-3

Supported Feature Set


This section describes the supported feature set per the OPOS specification.

Properties
Table 3-1 Common Properties

Comments on Zebra
Property Version Type Access May Use After Scanner Support

AutoDisable 1.2 Boolean R/W Open Supported

BinaryConversion 1.2 Int32 R/W Open Supported

CapCompareFirmwareVersion 1.9 Boolean R Open Not supported

CapPowerReporting 1.3 Int32 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. Always


returns OPOS_E_ILLEGAL

Claimed 1.0 Boolean R/W Open Supported (see Deviations


from OPOS Specifications
on page 3-2)

DataCount 1.2 Int32 R Open Supported

DataEventEnabled 1.0 Boolean R/W Open Supported

DeviceEnabled 1.0 Boolean R/W Open & Claim Supported

FreezeEvents 1.0 Boolean R/W Open Supported

OpenResult 1.5 Int32 R n/a Supported

PowerNotify 1.3 Int32 R/W Open Not supported. Always


returns OPOS_E_ILLEGAL

PowerState 1.3 Int32 R Open Supported

ResultCode 1.0 Int32 R n/a Supported

ResultCodeExtended 1.0 Int32 R Open Supported

State 1.0 Int32 R n/a Supported

ControlObjectDescription 1.0 Int32 R n/a Supported

ControlObjectVersion 1.0 Int32 R n/a Supported

ServiceObjectDescription 1.0 String R Open Supported


3-4 ZEBRA SCANNER OPOS DRIVER DEVELOPER’S GUIDE

Table 3-1 Common Properties (Continued)

Comments on Zebra
Property Version Type Access May Use After
Scanner Support

ServiceObjectVersion 1.0 Int32 R Open Supported

DeviceDescription 1.0 String R Open Supported

DeviceName 1.0 String R Open Supported

Table 3-2 Scanner Specific Properties

May Use Comments on Zebra


Property Version Type Access
After Scanner Support

DecodeData 1.2 Boolean R/W Open Supported

ScanData 1.0 BSTR R Open Supported

ScanDataLabel 1.2 BSTR R Open Supported

ScanDataType 1.2 Int32 R Open Supported

Table 3-3 Scale Specific Properties

Property Version Type Access May Use Comments on Zebra


After Scanner Support

MaximumWeight 1.2 INT32 R Open Supported

WeightUnits 1.0 INT32 R Open Supported

AsyncMode 1.3 Boolean R/W Open Supported

MaxDisplayTextChars 1.13 INT32 R Open Not supported

TareWeight 1.3 INT32 R/W Open & Claim Not supported

ScaleLiveWeight 1.9 INT32 R Open Not supported

StatusNotify 1.9 INT32 R/W Open Not supported

ZeroValid 1.13 Boolean R/W Open Supported

CapDisplay 1.2 Boolean R Open Not supported

CapDisplayText 1.3 Boolean R Open Not supported

CapPriceCalculating 1.3 Boolean R Open Not supported

CapTareWeight 1.3 Boolean R Open Not supported

CapZeroScale 1.3 Boolean R Open Supported

CapStatusUpdate 1.9 Boolean R Open Not supported


OPOS PROPERTIES, METHODS, EVENTS 3-5

Methods
Table 3-4 Common Methods

Method Version May Use After Comments on Zebra Scanner Support

Open 1.0 n/a Supported

Close 1.0 Open Supported

ClaimDevice 1.0 Open Supported (see Deviations from OPOS


Specifications on page 3-2)

ReleaseDevice 1.0 Open & Claim Supported

CheckHealth 1.0 Open, Claim & Enable Not supported

ClearInput 1.0 Open & Claim Supported

ClearInputProperties 1.10 Open & Claim Supported

DirectIO 1.0 Open Not supported. Always returns


OPOS_E_ILLEGAL

compareFirmwareVersion 1.9 Open, Claim & Enable Not supported

resetStatistic 1.8 Open, Claim & Enable Supported

retrieveStatistics 1.8 Open, Claim & Enable Supported

updateFirmware 1.9 Open, Claim & Enable Not supported

updateStatistics 1.8 Open, Claim & Enable Supported

Table 3-5 Scale Specific Methods

Method Version May Use After Comments on Zebra Scanner Support

DisplayText 1.3 Open, Claim & Enable Not supported

ReadWeightReadWeight 1.3 Open, Claim & Enable Supported

ZeroScale 1.3 Open, Claim & Enable Supported


3-6 ZEBRA SCANNER OPOS DRIVER DEVELOPER’S GUIDE

Events
Table 3-6 Events

Comments on Comments on
Event Version May Use After
Scale Support Scanner Support

DataEvent 1.0 Open, Claim & Enable Supported Supported

DirectIOEvent 1.0 Open & Claim Not supported Not supported

ErrorEvent 1.0 Open, Claim & Enable Supported Not Supported

StatusUpdateEvent 1.3 Open, Claim & Enable Not supported Not supported
CHAPTER 4 SCANNER OPOS SAMPLE
APPLICATION

Overview
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 Scanner OPOS Test Window

Table 4-1 Scanner OPOS Test Utility Button/Field Functionality

Button/ Field/
Check Box Description Values Code Sample

Open Open Method. ZEBRA_SCANN m_ctScanner.Open("ZEBRA_SCANNER")


ER

Claim Claim the -1, Any integer m_ctScanner.Claim(1000)


device with starting from
time out value. zero

Device Enable Enable the n/a m_ctrScanner.SetDeviceEnabled(TRUE)


scanner. Must
enable before
using
scanners.

Device Disable Disable the n/a m_ctrScanner.SetDeviceEnabled(FALSE)


scanner.

Release Release the n/a m_ctrScanner.ReleaseDevice()


scanner.
SCANNER OPOS SAMPLE APPLICATION 4-3

Table 4-1 Scanner OPOS Test Utility Button/Field Functionality (Continued)

Button/ Field/
Description Values Code Sample
Check Box

Close Close the n/a m_ctrScanner.CloseDevice()


scanner.

Recorded Data

Scan Data Label Label of the n/a m_ctrScanner.GetScanDataLabel()


scan data.

Scan Data Type Type of the n/a m_ctrScanner.GetScanDataType()


scanned data.
This is only a
readable
property.

CH Internal Perform a n/a m_ctrlScanner.CheckHealth(OPOS_CH_INTERNAL)


Health check
that does not
physically
change the
device. The
device is
tested by
internal tests to
the extent
possible.

CH External Performs a n/a m_ctrlScanner.CheckHealth(OPOS_CH_INTERNAL)


more extensive
test that may
change the
device. When
executed, the
scanner may
beep.

CH Interactive Not supported. n/a

Data Event

Clear Input Clear method. n/a m_ctrScanner.ClearInput()


Clears the
input data.

Decode Data Set decode n/a m_ctrScanner.SetDecodeData(1)


data enable.

Data Events Set data event n/a m_ctrlScanner.SetDataEventEnabled(1)


enabled. Must
enable data
event to get
data.
4-4 ZEBRA SCANNER OPOS DRIVER DEVELOPER’S GUIDE

Table 4-1 Scanner OPOS Test Utility Button/Field Functionality (Continued)

Button/ Field/
Description Values Code Sample
Check Box

Auto Enable Check box to n/a Refer to OPOS Scanner Sample Application source code
automatically provided with the SDK installation.
enable the
scanner after a
decode scan.

Statistics And Clear Input Properties

Retrieve Retrieve GoodScanCount m_ctrlScanner.RetrieveStatistics(&test)


statistic.

Reset Statistics Reset GoodScanCount m_ctrlScanner.ResetStatistics("GoodScanCount")


statistics.

Update Statistics Update GoodScanCount CString strTemp;


statistics. m_nGoodScanCount=100;
strTemp.Format("GoodScanCount=%d",
m_nGoodScanCount );
m_ctrlScanner.UpdateStatistics(strTemp)

Clear Input Clear input n/a m_ctrlScanner.ClearInputProperties()


Properties properties.

Properties and Methods

Set Properties Set the value n/a m_ctrScanner.SetFreezeEvents(0)


of property to m_ctrScanner.SetAutoDisable(1)
the given
value.

Result Values

Return Value Return value of This is only a


the last readable
function call. property.

Result Code Return value of This is only a m_ctrScanner.GetResultCode()


result code. readable
property.

Direct IO

Command Select the n/a


Direct IO
command to
be executed.

Execute Execute the n/a


selected
command.
SCANNER OPOS SAMPLE APPLICATION 4-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:

0 12345 67890 5

UPC-A
4-6 ZEBRA SCANNER OPOS DRIVER DEVELOPER’S GUIDE

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 Scanner OPOS Test Window - Scan Data


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 SAMPLE APPLICATION 4-7

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.

2. Under 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 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.
4-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 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
The OPOS driver does not support any direct I/O functions to the scanner. However, an application developer
can get management access to an RSM-ready scanner through the Zebra Scanner SDK. Refer to the Zebra
Scanner SDK for Windows Developer’s Guide (p/n 72E-149784-xx) for more information.

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.
SCANNER OPOS SAMPLE APPLICATION 4-9

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 scanner.

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 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 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.
4 - 10 ZEBRA SCANNER OPOS DRIVER DEVELOPER’S GUIDE
CHAPTER 5 SCALE OPOS SAMPLE
APPLICATION

Overview
The Zebra Scale OPOS Driver suite ships with a sample application that demonstrates all the OPOS
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.
5-2 ZEBRA SCANNER OPOS DRIVER DEVELOPER’S GUIDE

Scale OPOS Sample Application Window Functionality

Figure 5-1 Scale OPOS Sample Application

Table 5-1 Scale OPOS Sample Application Button/Field Functionality

Button/ Field/
Check Box Description Values Code Sample

Open Open Method ZEBRA_SCALE OposScale.Open("ZEBRA_SCALE"

Claim Claim the device with time -1, Any integer OposScale.ClaimDevice(1000)
out value. starting from zero

Device Enable Enable the scale. Must n/a OposScale.put_DeviceEnabled(TRUE);


enable before using scale.

Device Disable Disable the scale. n/a OposScale.put_DeviceEnabled(FALSE);

Release Release the scale. n/a OposScale.ReleaseDevice()

Close Close the scale. n/a OposScale.Close()


SCALE OPOS SAMPLE APPLICATION 5-3

Table 5-1 Scale OPOS Sample Application Button/Field Functionality (Continued)

Button/ Field/
Description Values Code Sample
Check Box

ReadWeight Read the weight on the &lweightData is OposScale.ReadWeight(&lweightData,


scale. the weight on the 5000)
scale (a pointer to
the variable
holding the
returned weight
value).
5000 is the time
in milliseconds to
wait before
returning an error
(if no valid weight
measurement
read).

Zero Scale Set the scale weight value n/a OposScale.ZeroScale();


to zero

Async Mode Set the AsyncMode True, false OposScale.put_AsyncMode(true);


Property

Clear Input Sets all properties True, false OposScale.ClearInput();


populated as result of firing
DataEvent or ErrorEvent
back to their default value.

Status Notify Enables Live Weight True, false OposScale.put_StatusNotify(true);


values (must be set before
Device Enable is sent to
the scale).

Live Weight Reports the Live Weight Refer to OPOS Scanner Sample Application
value. source code provided with the SDK installation.

Freeze Events Freeze events. True, false OposScale.put_FreezeEvents(true);

DataEvent Enable Data Events. True, false OposScale.put_DataEventEnabled(true);


Enable

Set Property Set the value of property to n/a Refer to OPOS Scanner Sample Application
the given value. source code provided with the SDK installation.

Status and Result

Return Value Return value of the last This is only a n/a


function call. readable property.

Result code Return value of result This is only a n/a


code. readable property.

Status Status of the scale service This is a read only n/a


object. property.
5-4 ZEBRA SCANNER OPOS DRIVER DEVELOPER’S GUIDE

Retrieving Weight Data


To retrieve weight data using the OPOS Scale sample application:

1. Connect the MP6200 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 one of the bar codes on page 2-2 to
configure the scanner for the correct communication protocol.
a. IBM Hand-held
b. IBM Table-top
or
c. SSI.
3. Under folder \Program Files\Zebra Technologies\Barcode Scanners\Scanner SDK\OPOS\Scale
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 Zebra Scale OPOS Sample Application

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. Select Device Enable.

8. Select Read Weight. The weight of the item, and the measuring unit appear in the text box.
SCALE OPOS SAMPLE APPLICATION 5-5

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 one of the bar codes on page 2-2 to
configure the scanner for the correct communication protocol.
a. IBM Hand-held
b. IBM Table-top
or
c. SSI.
3. Under folder \Program Files\Zebra Technologies\Barcode Scanners\Scanner SDK\OPOS\Scale
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 page
5-4.

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.
5-6 ZEBRA SCANNER OPOS DRIVER DEVELOPER’S GUIDE

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
scanner for the correct communication protocol.

2. Under folder \Program Files\Zebra Technologies\Barcode Scanners\Scanner SDK\OPOS\Scale


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.

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).

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.
SCALE OPOS SAMPLE APPLICATION 5-7

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
The OPOS driver does not support any direct I/O functions to the scale. However, an application developer can
get management access to an RSM-ready scanner through the Zebra Scanner SDK. Refer to the Zebra
Scanner SDK for Windows Developer’s Guide (p/n 72E-149784-xx) for more information.

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) and Zebra Scanner SDK Attribute Data Dictionary (p/n
72E-149786-xx) for further information.
5-8 ZEBRA SCANNER OPOS DRIVER DEVELOPER’S GUIDE

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 scanner.

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.
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 ZEBRA SCANNER OPOS DRIVER DEVELOPER’S GUIDE

Supported Symbology Types vs. Scanner Mode


Table 6-1 Supported Symbology Types vs. Scanner Modes

Symbology Scanner Mode

Type Value IBM HID SNAPI Nixdorf Mode B

UPC-A SCAN_SDT_UPCA X X X

UPC-A with supplemental bar SCAN_SDT_UPCA_S X X X


code

UPC-E SCAN_SDT_UPCE X X X

UPC-E with supplemental bar SCAN_SDT_UPCE_S X X X


code

UPC-D1 SCAN_SDT_UPCD1 X X X

UPC-D2 SCAN_SDT_UPCD2 X X X

UPC-D3 SCAN_SDT_UPCD3 X X X

UPC-D4 SCAN_SDT_UPCD4 X X X

UPC-D5 SCAN_SDT_UPCD5 X X X

EAN 8 ( =JAN 8 ) SCAN_SDT_EAN8 X X X

JAN 8 ( = EAN 8 ) SCAN_SDT_JAN8 X X X

EAN 8 with supplemental SCAN_SDT_EAN8_S X X X


barcode

EAN 13 ( = JAN 13 ) SCAN_SDT_EAN13 X X X

JAN 13 ( = EAN 13 ) SCAN_SDT_JAN13 X X X

EAN 13 with supplemental SCAN_SDT_EAN13_S X X X


barcode

EAN-128 SCAN_SDT_EAN128 X X X

Standard (or Discrete) 2 of 5 SCAN_SDT_TF X X X

Interleaved 2 of 5 SCAN_SDT_ITF X X X

Codabar SCAN_SDT_Codabar X X X

Code 39 SCAN_SDT_Code39 X X X

Code 128 SCAN_SDT_Code128 X X X

OCR "A” SCAN_SDT_OCRA X X -

OCR "B” SCAN_SDT_OCRB X X -

GS1 DataBar Omnidirectional SCAN_SDT_GS1_DATABAR X X -


(normal or stacked)

GS1 DataBar Expanded (normal SCAN_SDT_GS1_DATABAR_E X X -


or stacked)
SUPPORTED SYMBOLOGY TYPES VS. SCANNER MODE 6-3

Table 6-1 Supported Symbology Types vs. Scanner Modes (Continued)

Symbology Scanner Mode

Type Value IBM HID SNAPI Nixdorf Mode B

Composite Component A SCAN_SDT_CCA - X -

Composite Component B SCAN_SDT_CCB - X -

Composite Component C SCAN_SDT_CCC - X -

PDF 417 SCAN_SDT_PDF417 X X -

MAXICODE SCAN_SDT_MAXICODE X X -

Data Matrix SCAN_SDT_DATAMATRIX - X -

QR Code SCAN_SDT_QRCODE - X -

Micro QR Code SCAN_SDT_UQRCODE - X -

Aztec SCAN_SDT_AZTEC - X -

Micro PDF 417 SCAN_SDT_UPDF417 - X -

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 Bar Code Types Not Accurately Identified in Wincor-Nixdorf RS-232 Mode B

Zebra RSM OPOS


Symbology Type Expected Value Comments
Return Value

UPC-A with supplemental SCAN_SDT_UPCA_S SCAN_SDT_UPCA Nixdorf Mode B cannot distinguish UPCA
bar code since it identifies bar code types UPCA,
UPCA_S, EAN13, EAN13_S, and
BOOKLAND as one type.

UPC-E with supplemental SCAN_SDT_UPCE_S SCAN_SDT_UPCE Nixdorf Mode B identifies both bar code
bar code types UPCE and UPCE_S as UPCE.

EAN 8 with supplemental SCAN_SDT_EAN8_S SCAN_SDT_EAN8 Nixdorf Mode B identifies both EAN8 and
bar code EAN8_S bar code types as EAN8.

EAN 13 SCAN_SDT_EAN13 SCAN_SDT_UPCA Nixdorf Mode B cannot distinguish EAN 13


since it identifies bar code types UPCA,
UPCA_S, EAN13, EAN13_S, and
BOOKLAND as one type.

EAN 13 with supplemental SCAN_SDT_EAN13_S SCAN_SDT_UPCA Nixdorf Mode B cannot distinguish EAN
bar code 13_S since it identifies bar code types
UPCA, UPCA_S, EAN13, EAN13_S, and
BOOKLAND as one type.
6-4 ZEBRA 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 Registry Paths to Default Scanner OPOS Logical Names

Key HKEY_LOCAL_MACHINE\SOFTWARE\OLEforRetail\ServiceOPOS\Scanner\ZEBRA_SCANNER
Path HKEY_LOCAL_MACHINE\SOFTWARE\OLEforRetail\ServiceOPOS\Scanner\MOTOROLA_SCANNER
(x64) HKEY_LOCAL_MACHINE\SOFTWARE\OLEforRetail\ServiceOPOS\Scanner\STI_USBSCANNER
HKEY_LOCAL_MACHINE\SOFTWARE\OLEforRetail\ServiceOPOS\Scanner\SYMBOL_SCANNER

NOTE On 64-bit Windows, there are registry keys for 32-bit applications under the corresponding
Wow6432Node.

Table A-2 Registry Keys for OPOS Scanner Logical Names

Value Name Sample Data Description

(Default) ZebraScannerSO.ScannerSO Service object name of the scanner OPOS.

Baud rate 9600 Baud rate for serial port.


115200

CheckDigitAutoCalculate 0 Automatically calculate Check Digit and


1 append to the decode data label.
0 = Disable
1 = Enable
1
Added to maintain the backward compatibility and are optional if the CompatibilityMode is set
to disable backward compatibility.
A-2 ZEBRA SCANNER SDK FOR WINDOWS DEVELOPER’S GUIDE

Table A-2 Registry Keys for OPOS Scanner Logical Names (Continued)

Value Name Sample Data Description

CompatibilityMode 0 Specifies how the decode data is stored in


1 the ScanData and ScanDataLabel
properties.
0 = Decode data is stored according to the
UPOS specification.
1 = ScanData property contains the same
data as the ScanDataLabel property.

Connection1 ConnUSB Added for backward compatibility.

Description Zebra scanner logical device Logical device description.

ExclusiveClaimLevel 0 Specifies whether an OPOS claim is


1 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.

ModelNumber 1. DS6707-SR20001ZZR,DS9808* Comma separated list of scanner model


(* Represents any model of the numbers for use with OPOS driver.
DS9808.)

PID1 * (Represents all PIDs) Product IDs of Zebra bar code scanners.

Port COM1 COM1,COM2 Comma or space delimited list of serial ports


* (Represent any COM port) needed for use with OPOS driver.

SerialNumber 1. 7116000500337,7087000501981 Comma separated list of scanner serial


2. * (Represents all serial numbers) numbers for use with OPOS driver.

Type SNAPI NIXMODB USBIBMHID Comma or space delimited list of scanner


USBIBMTT SSI ALL modes from the TypePool.

TypePool SNAPI NIXMODB USBIBMHID All the supported types only for reference.
USBIBMTT SSI ALL OPOS driver does not read this entry.

VID 0x05E0 Vendor 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 DRIVER A-3

Table A-3 Registry Paths to Default Scale OPOS Logical Names

Key HKEY_LOCAL_MACHINE\SOFTWARE\OLEforRetail\ServiceOPOS\Scale\ZEBRAA_SCALE
Path HKEY_LOCAL_MACHINE\SOFTWARE\OLEforRetail\ServiceOPOS\Scale\MOTOROLA_SCALE
(x64)

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 Name Sample Data Description

(Default) ScaleOPOS.ScalSO Service object name of the Scale OPOS.

DeviceDescription Zebra Technologies Scale Logical device description.


logical device

ExclusiveClaimLevel 0 0 =OPOS Scale service object does not get


1 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.

LiveWeightFrequency 2 Number of live weight events per second


(values from 1 to 100).

NoTimeOutOnReadWeight 0 0 = ReadWeight method returns


1 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.

ZeroValidOveride 0 0 = ReadWeight does not accept zero weight


1 as a valid reading.
1 = ReadWeight does accept zero weight as
a valid reading.

Table A-5 Registry Path for Scanner OPOS Driver

Key HKEY_LOCAL_MACHINE\SOFTWARE\Zebra\Zebra Scanners\OPOS\Scanner


Path
(x64)

NOTE On 64-bit Windows, there are registry keys for 32-bit applications under the corresponding
Wow6432Node.
A-4 ZEBRA SCANNER SDK FOR WINDOWS DEVELOPER’S GUIDE

Table A-6 Registry Keys for Scanner OPOS Driver - Applies to all Scanner OPOS Logical Names

Value Name Values Description

AutoDisableControl 0 = Disable 0 = Normal AutoDisable property


1 = Enable operation.
1 = Automatically disables the scanner
after each data event regardless of the
value of OPOS property AutoDisable.

AutoDisableDelay 0 Delay in milliseconds to disable the


scanner automatically after each data
event. Default value is 0.

DataEventAutoDisableControl 0 = Disable 0 = Normal DataEventEnable operation.


1 = Enable 1 = Scanner SO overrides the value of
OPOS property DataEventEnable and
always delivers the data events to
application layer.

DataEventDelay 0 Minimum time gap in milliseconds


between two decode data events. Default
value is 0 ms.

EnableTrace 0 = Disable Enable or disable debug/engineering


1 = Enable message entries to the log file specified by
LogFilePath.

InterCommandDelay 0 Minimum time gap in milliseconds


between OPOS method calls. Default
value is 0 ms.

LogFilePath \Program Files\Zebra Path and filename for log file if


Technologies\Barcode EnableTrace is enabled.
Scanners\Scanner
SDK\OPOS\Scanner
OPOS\bin\Logs\
stiopos.txt

SetDeviceEnableStateOnFailure 0 = Disable 0 = Normal Result Code operation


1 = Enable 1 = Regardless of the result of
DeviceEnable call, Result Code is set to
OPOS_SUCCESS.
WINDOWS REGISTRY KEYS for OPOS DRIVER A-5

Table A-6 Registry Keys for Scanner OPOS Driver - Applies to all Scanner OPOS Logical Names (Continued)

Value Name Values Description

SetEnableDisableOnEvent 0 = Disable 0 = Normal Enable/Disable operation


1 = Enable 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.

SetHardwareAutoDisableState 0 = Disable Controls the hardware ‘Scan Disable


2 = Enable 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.

SyncDeviceEnableStateOnDiscovery 0 = Disable Sync a newly connected device’s enable /


1 = 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 Registry Path for Scale OPOS Driver

Key HKEY_LOCAL_MACHINE\SOFTWARE\Zebra\Zebra Scanners\OPOS\Scale


Path
(x64)

NOTE On 64-bit Windows, there are registry keys for 32-bit applications under the corresponding
Wow6432Node.
A-6 ZEBRA SCANNER SDK FOR WINDOWS DEVELOPER’S GUIDE

Table A-8 Registry Keys for Scale OPOS Driver - Applies to all Scale OPOS Logical Names

Value Name Values Description

DebugPrint 0 = Disable Enable debug log messages viewable through


1 = Enable a debug log viewer such as Microsoft
DebugView.

EngDbgStr 0 = Disable Enable detailed engineering-level debug


1 = Enable messages through a debug log viewer.

FileLog 0 = Disable Enable or disable debug/engineering message


1 = Enable entries to the log file specified in the Location
key.

Level 1-5 Level of log messages, from minimal (1) to


verbose (5).

Location \Program Files\Zebra Path name to log file if FileLog is enabled.


Technologies\Barcode
Scanners\Scanner SDK\OPOS\Scale
OPOS\bin\Logs

For more details on how to use the registry, see Modified Claim Functionality on page 5-8.
INDEX

A conventions
notational . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .viii
architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-2
AsyncMode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-4
AutoDisable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-3 D
DataCount . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-3
B DataEvent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-6
DataEventEnabled . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-3
BinaryConversion . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-3 DecodeData . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-4
bold text use in guide . . . . . . . . . . . . . . . . . . . . . . . . . viii DeviceDescription . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-4
bullets use in guide . . . . . . . . . . . . . . . . . . . . . . . . . . . viii DeviceEnabled . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-3
button/field functionality . . . . . . . . . . . . . . . . . . . 4-2, 5-2 DeviceName . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-4
DirectIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-5
C DirectIOEvent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-6
DisplayText . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-5
CapCompareFrmwareVersion . . . . . . . . . . . . . . . . . 3-3 driver architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-2
CapDisplay . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-4
CapDisplayText . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-4
CapPowerReporting . . . . . . . . . . . . . . . . . . . . . . . . . 3-3 E
CapPriceCalculating . . . . . . . . . . . . . . . . . . . . . . . . . 3-4 ErrorEvent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-6
CapStatisticsReporting . . . . . . . . . . . . . . . . . . . . . . . 3-3 events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-6
CapStatusUpdate . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-4 DataEvent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-6
CapTareWeight . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-4 DirectIOEvent . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-6
CapUpdateFirmware . . . . . . . . . . . . . . . . . . . . . . . . . 3-3 ErrorEvent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-6
CapUpdateStatistics . . . . . . . . . . . . . . . . . . . . . . . . . 3-3 StatusUpdateEvent . . . . . . . . . . . . . . . . . . . . . . . 3-6
CapZeroScale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-4
CheckHealth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-5
CheckHealthText . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-3 F
ClaimDevice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-5 font use in guide . . . . . . . . . . . . . . . . . . . . . . . . . . . . .viii
Claimed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-3 FreezeEvents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-3
ClearInput . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-5
ClearInputProperties . . . . . . . . . . . . . . . . . . . . . . . . . 3-5
Close . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-5 I
common properties . . . . . . . . . . . . . . . . . . . . . . . . . . 3-3 information, service . . . . . . . . . . . . . . . . . . . . . . . . . . .viii
compareFirmwareVersion . . . . . . . . . . . . . . . . . . . . . 3-5 italics use in guide . . . . . . . . . . . . . . . . . . . . . . . . . . . .viii
ControlObjectDescription . . . . . . . . . . . . . . . . . . . . . 3-3
ControlObjectVersion . . . . . . . . . . . . . . . . . . . . . . . . 3-3
Index - 2 ZEBRA SCANNER OPOS DRIVER DEVELOPER’S GUIDE

M DataEventEnabled . . . . . . . . . . . . . . . . . . . . 3-3
DeviceDescription . . . . . . . . . . . . . . . . . . . . . 3-4
MaxDisplayTextChars . . . . . . . . . . . . . . . . . . . . . . . . 3-4 DeviceEnabled . . . . . . . . . . . . . . . . . . . . . . . 3-3
MaximumWeight . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-4 DeviceName . . . . . . . . . . . . . . . . . . . . . . . . . 3-4
methods FreezeEvents . . . . . . . . . . . . . . . . . . . . . . . . 3-3
CheckHealth . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-5 OpenResult . . . . . . . . . . . . . . . . . . . . . . . . . . 3-3
ClaimDevice . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-5 PowerNotify . . . . . . . . . . . . . . . . . . . . . . . . . . 3-3
ClearInput . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-5 PowerState . . . . . . . . . . . . . . . . . . . . . . . . . . 3-3
ClearInputProperties . . . . . . . . . . . . . . . . . . . . . . 3-5 ResultCode . . . . . . . . . . . . . . . . . . . . . . . . . . 3-3
Close . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-5 ResultCodeExtended . . . . . . . . . . . . . . . . . . 3-3
compareFirmwareVersion . . . . . . . . . . . . . . . . . . 3-5 ServiceObjectDescription . . . . . . . . . . . . . . . 3-3
DirectIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-5 ServiceObjectVersion . . . . . . . . . . . . . . . . . . 3-4
Open . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-5 State . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-3
ReleaseDevice . . . . . . . . . . . . . . . . . . . . . . . . . . 3-5 specific
resetStatistic . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-5 AsyncMode . . . . . . . . . . . . . . . . . . . . . . . . . . 3-4
retrieveStatistics . . . . . . . . . . . . . . . . . . . . . . . . . 3-5 CapDisplay . . . . . . . . . . . . . . . . . . . . . . . . . . 3-4
scale specific CapDisplayText . . . . . . . . . . . . . . . . . . . . . . . 3-4
DisplayText . . . . . . . . . . . . . . . . . . . . . . . . . . 3-5 CapPriceCalculating . . . . . . . . . . . . . . . . . . . 3-4
ReadWeightReadWeight . . . . . . . . . . . . . . . 3-5 CapStatusUpdate . . . . . . . . . . . . . . . . . . . . . 3-4
ZeroScale . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-5 CapTareWeight . . . . . . . . . . . . . . . . . . . . . . . 3-4
updateFirmware . . . . . . . . . . . . . . . . . . . . . . . . . 3-5 CapZeroScale . . . . . . . . . . . . . . . . . . . . . . . . 3-4
updateStatistics . . . . . . . . . . . . . . . . . . . . . . . . . . 3-5 DecodeData . . . . . . . . . . . . . . . . . . . . . . . . . 3-4
methods, common . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-5 MaxDisplayTextChars . . . . . . . . . . . . . . . . . . 3-4
methods, scale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-5 MaximumWeight . . . . . . . . . . . . . . . . . . . . . . 3-4
ScaleLiveWeight . . . . . . . . . . . . . . . . . . . . . . 3-4
N ScanData . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-4
ScanDataLabel . . . . . . . . . . . . . . . . . . . . . . . 3-4
notational conventions . . . . . . . . . . . . . . . . . . . . . . . . . viii ScanDataType . . . . . . . . . . . . . . . . . . . . . . . . 3-4
StatusNotify . . . . . . . . . . . . . . . . . . . . . . . . . . 3-4
O TareWeight . . . . . . . . . . . . . . . . . . . . . . . . . . 3-4
ZeroValid . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-4
Open . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-5 specificWeighUntist . . . . . . . . . . . . . . . . . . . . . . . 3-4
OpenResult . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-3 properties, common . . . . . . . . . . . . . . . . . . . . . . . . . . 3-3
OPOS properties, scale specific . . . . . . . . . . . . . . . . . . . . . . 3-4
driver architecture . . . . . . . . . . . . . . . . . . . . . . . . 1-2 properties, scanner specific . . . . . . . . . . . . . . . . . . . . 3-4

P R
PowerNotify . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-3 ReadWeightReadWeight . . . . . . . . . . . . . . . . . . . . . . 3-5
PowerState . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-3 registry keys for scale OPOS driver . . . . . . . . . . . . . .A-6
properties registry keys for scanner OPOS driver . . . . . . . . . . . .A-4
common registry keys to for OPOS
AutoDisable . . . . . . . . . . . . . . . . . . . . . . . . . 3-3 scale logical names . . . . . . . . . . . . . . . . . . . . . . .A-3
BinaryConversion . . . . . . . . . . . . . . . . . . . . . 3-3 registry keys to for OPOS
CapCompareFrmwareVersion . . . . . . . . . . . 3-3 scanner logical names . . . . . . . . . . . . . . . . . . . . .A-1
CapPowerReporting . . . . . . . . . . . . . . . . . . . 3-3 registry path for scale OPOS driver . . . . . . . . . . . . . .A-5
CapStatisticsReporting . . . . . . . . . . . . . . . . . 3-3 registry path for scanner OPOS driver . . . . . . . . . . . .A-3
CapUpdateFirmware . . . . . . . . . . . . . . . . . . 3-3 registry paths to default scale
CapUpdateStatistics . . . . . . . . . . . . . . . . . . . 3-3 OPOS logical names . . . . . . . . . . . . . . . . . . . . . .A-3
CheckHealthText . . . . . . . . . . . . . . . . . . . . . 3-3 registry paths to default scanner
Claimed . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-3 OPOS logical names . . . . . . . . . . . . . . . . . . . . . .A-1
ControlObjectDescription . . . . . . . . . . . . . . . 3-3 ReleaseDevice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-5
ControlObjectVersion . . . . . . . . . . . . . . . . . . 3-3 resetStatistic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-5
DataCount . . . . . . . . . . . . . . . . . . . . . . . . . . 3-3 ResultCode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-3
Index - 3

ResultCodeExtended . . . . . . . . . . . . . . . . . . . . . . . . 3-3
retrieveStatistics . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-5

S
sample application
scale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-1
scanner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-1
sample application button/field functionality . . . . . . . 5-2
scale OPOS sample application
button/field functionality . . . . . . . . . . . . . . . . . . . 5-2
ScaleLiveWeight . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-4
ScanData . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-4
ScanDataLabel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-4
ScanDataType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-4
scanner mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-2
scanner OPOS test utility
button/field functionality . . . . . . . . . . . . . . . . . . . 4-2
service information . . . . . . . . . . . . . . . . . . . . . . . . . . . viii
ServiceObjectDescription . . . . . . . . . . . . . . . . . . . . . 3-3
ServiceObjectVersion . . . . . . . . . . . . . . . . . . . . . . . . 3-4
specific properties . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-4
State . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-3
StatusNotify . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-4
StatusUpdateEvent . . . . . . . . . . . . . . . . . . . . . . . . . . 3-6
supported feature set
common methods . . . . . . . . . . . . . . . . . . . . . . . . 3-5
common properties . . . . . . . . . . . . . . . . . . . . . . . 3-3
events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-6
scale methods . . . . . . . . . . . . . . . . . . . . . . . . . . 3-5
scale specific properties . . . . . . . . . . . . . . . . . . . 3-4
scanner specific properties . . . . . . . . . . . . . . . . . 3-4
symbology types . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-2
symbology types vs. scanner modes . . . . . . . . . . . . 6-2
symbology values . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-2

T
TareWeight . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-4
test utility button/field functionality . . . . . . . . . . . . . . 4-2

U
updateFirmware . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-5
updateStatistics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-5

W
WeightUnits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-4

Z
ZeroScale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-5
ZeroValid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-4
Index - 4 ZEBRA SCANNER OPOS 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 ZIH Corp., registered in many jurisdictions
worldwide. All other trademarks are the property of their respective owners.

© 2016 Symbol Technologies LLC, a subsidiary of Zebra Technologies Corporation. All rights reserved.

72E-149783-05 Revision A - May 2016

You might also like