Overview
The following steps depict the behavioral model of the OPOS driver and scanner.
- The scanner reads encoded data from a label.
- When the Control receives input, it queues a DataEvent.
- If the AutoDisable property is TRUE, the Control is disabled when a DataEvent is queued.
- 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.
- 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.
- The DataCount property contains the number of DataEvents queued by the Control.
- 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.
- The user/OPOS application performs read weight operation scale.
- When the ReadWeight method successfully returns a value, scale control returns the weight data to the POS application.
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.
Properties
Table 1: Common Properties
Property | Version | Type | Access | May Use After | Comments on Zebra 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 | Supported |
Claimed | 1.0 | Boolean | R/W | Open | Supported (see Deviations from OPOS Specifications) |
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 |
ServiceObjectVersion | 1.0 | Int32 | R | Open | Supported |
DeviceDescription | 1.0 | String | R | Open | Supported |
DeviceName | 1.0 | String | R | Open | Supported |
Table 2: Scanner Specific Properties
Property | Version | Type | Access | May User After | Comments on Zebra 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: Scale Specific Properties
Property | Version | Type | Access | May User After | Comments on Zebra 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 |
Methods
Table 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) |
ReleaseDevice | 1.0 | Open & Claim | Supported |
CheckHealth | 1.0 | Open, Claim & Enable |
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 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 |
Zero Scale Operation
The weight reading of the scale can be set to zero by performing the Zero Scale operation. Once performed, the reading is set to Zero.
- The range of values is 0-60 (default is 60)
- In Lbs mode: 0 = 0.00 lb - 60 = 0.60 lb (increments of 0.01 lbs)
- In Kgs mode: 0 = 0.00 kg - 60 = 0.300 kg (increments of 0.005 kg)
Events
Table 6: Events
Event | Version | May Use After | Comments On Scale Support | Comments on 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 |