Opos Apg110
Opos Apg110
Opos Apg110
OLE for Retail POS Committee: Microsoft NCR Epson Post Software International
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 1 of 330
1995-1996
NCR Corporation. All rights reserved. 1995-1996 Microsoft Corporation. All rights reserved. 1995-1996 Post Software International. All rights reserved. 1995-1996 Seiko Epson Corporation. All rights reserved.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 2 of 330
Table of Contents
OLE FOR RETAIL POS CONTROLS ..................................................................7 What Is OLE for Retail POS?.....................................................................7 Who Should Read This Document...................................................................8 GENERAL OLE FOR RETAIL POS CONTROL MODEL ...............................................8 OPOS Definitions...........................................................................................9 How an Application Uses an OPOS Control .................................................10 When Methods and Properties May Be Accessed..........................................11 STATUS, RESULT CODE, AND STATE MODEL ........................................................13 Status Model ................................................................................................14 Result Code Model .......................................................................................14 State Model ..................................................................................................15 DEVICE SHARING MODEL ....................................................................................17 Exclusive-Use Devices .................................................................................17 Sharable Devices..........................................................................................17 INPUT MODEL .....................................................................................................19 OUTPUT MODEL..................................................................................................21 Synchronous Output .....................................................................................21 Asynchronous Output ...................................................................................21 OPOS CONTROL DESCRIPTIONS ..........................................................................22 COMMON PROPERTIES, METHODS, AND EVENTS....................................25 SUMMARY ..........................................................................................................25 GENERAL INFORMATION......................................................................................27 PROPERTIES ........................................................................................................28 METHODS ...........................................................................................................41 EVENTS ..............................................................................................................48 CASH DRAWER...................................................................................................53 SUMMARY ..........................................................................................................53 GENERAL INFORMATION......................................................................................55 PROPERTIES ........................................................................................................56 METHODS ...........................................................................................................57 EVENTS ..............................................................................................................59 COIN DISPENSER ............................................................................................... 61 SUMMARY ..........................................................................................................61 GENERAL INFORMATION......................................................................................63 PROPERTIES ........................................................................................................64 METHODS ...........................................................................................................66 EVENTS ..............................................................................................................67
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 3 of 330
HARD TOTALS.................................................................................................... 69 SUMMARY ................................ ................................ ................................ .......... 69 GENERAL INFORMATION ................................ ................................ ..................... 73 PROPERTIES ................................ ................................ ................................ ........ 77 METHODS................................ ................................ ................................ ........... 80 KEYLOCK............................................................................................................ 95 SUMMARY ................................ ................................ ................................ .......... 95 GENERAL INFORMATION ................................ ................................ ..................... 97 PROPERTIES ................................ ................................ ................................ ........ 98 METHODS................................ ................................ ................................ ........... 99 EVENTS ................................ ................................ ................................ ............ 100 LINE DISPLAY .................................................................................................. 101 SUMMARY ................................ ................................ ................................ ........ 101 GENERAL INFORMATION ................................ ................................ ................... 104 PROPERTIES ................................ ................................ ................................ ...... 107 METHODS................................ ................................ ................................ ......... 129 MICR - MAGNETIC INK CHARACTER RECOGNITION READER........... 141 SUMMARY ................................ ................................ ................................ ........ 141 GENERAL INFORMATION ................................ ................................ ................... 144 MICR CHARACTER SUBSTITUTION ................................ ................................ .... 147 PROPERTIES ................................ ................................ ................................ ...... 148 METHODS................................ ................................ ................................ ......... 153 EVENTS ................................ ................................ ................................ ............ 157 MSR - MAGNETIC STRIPE READER............................................................. 161 SUMMARY ................................ ................................ ................................ ........ 161 GENERAL INFORMATION ................................ ................................ ................... 164 PROPERTIES ................................ ................................ ................................ ...... 166 EVENTS ................................ ................................ ................................ ............ 176 POS KEYBOARD............................................................................................... 179 SUMMARY ................................ ................................ ................................ ........ 179 GENERAL INFORMATION ................................ ................................ ................... 181 PROPERTIES ................................ ................................ ................................ ...... 182 EVENTS ................................ ................................ ................................ ............ 182 POS PRINTER.................................................................................................... 185 SUMMARY ................................ ................................ ................................ ........ 185 GENERAL INFORMATION ................................ ................................ ................... 191 DATA CHARACTERS AND ESCAPE SEQUENCES ................................ .................... 195 PROPERTIES ................................ ................................ ................................ ...... 198 METHODS................................ ................................ ................................ ......... 240
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 4 of 330
EVENTS ................................ ................................ ................................ ............ 268 SCALE................................................................................................................. 270 SUMMARY ................................ ................................ ................................ ........ 270 GENERAL INFORMATION................................ ................................ .................... 272 PROPERTIES ................................ ................................ ................................ ...... 273 METHODS................................ ................................ ................................ ......... 274 SCANNER (BAR CODE READER)...................................................................277 SUMMARY ................................ ................................ ................................ ........ 277 GENERAL INFORMATION................................ ................................ .................... 279 PROPERTIES ................................ ................................ ................................ ...... 280 EVENTS ................................ ................................ ................................ ............ 281 SIGNATURE CAPTURE.................................................................................... 283 SUMMARY ................................ ................................ ................................ ........ 283 GENERAL INFORMATION................................ ................................ .................... 285 PROPERTIES ................................ ................................ ................................ ...... 287 METHODS................................ ................................ ................................ ......... 290 EVENTS ................................ ................................ ................................ ............ 292 APPENDICES ..................................................................................................... 295 CHANGE HISTORY .......................................................................................... 295 RELEASE 1.01 ................................ ................................ ................................ ... 295 RELEASE 1.1 ................................ ................................ ................................ ..... 298 OPOS REGISTRY USAGE ................................................................................ 301 OPOS APPLICATION HEADER FILES .......................................................... 305 OPOS.H : MAIN OPOS HEADER FILE................................ ............................... 305 OPOSCASH.H : CASH DRAWER HEADER FILE ................................ ................. 306 OPOSCOIN.H : COIN DISPENSER HEADER FILE................................ ................ 307 OPOSTOT.H : HARD TOTALS HEADER FILE ................................ ..................... 308 OPOSDISP.H : LINE DISPLAY HEADER FILE................................ ..................... 309 OPOSLOCK.H : KEYLOCK HEADER FILE ................................ ......................... 311 OPOSMICR.H : MICR HEADER FILE ................................ .............................. 312 OPOSMSR.H : MSR HEADER FILE ................................ ................................ .. 313 OPOSKBD.H : POS KEYBOARD HEADER FILE ................................ ................. 314 OPOSPTR.H : POS PRINTER HEADER FILE ................................ ...................... 315 OPOSSCAL.H : SCALE HEADER FILE ................................ .............................. 319 OPOSSCAN.H : BAR CODE SCANNER HEADER FILE ................................ ......... 320 OPOSSIG.H : SIGNATURE CAPTURE HEADER FILE................................ ............ 320 TECHNICAL DETAILS..................................................................................... 323
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 5 of 330
SYSTEM STRINGS (BSTR) ................................ ................................ ................. 323 EVENT HANDLERS ................................ ................................ ............................ 328 END OF APPLICATION PROGRAMMER GUIDE ........................................ 330 S
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 6 of 330
I N T R O D U C T I O N
1 2
POS may also refer to Point-of-Service a somewhat broader category that Point-of-Sale. Other future operating systems that support OLE Controls may also support OLE for Retail POS, depending upon software support by the hardware manufacturers or third-party developers.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 7 of 330
Introduction
Device
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 8 of 330
OPOS Definitions
Device Class
A device class is a category of POS devices that share a consistent set of properties, methods, and events. Examples are Cash Drawer and POS Printer. Some devices support more than one device class. For example, some POS Printers include a Cash Drawer kickout. Also, some Bar Code Scanners include an integrated Scale.
Control Object or CO
A Control Object exposes a set of properties, methods, and events to an application for its device class. This guide describes these APIs. A CO is a standard OLE 32-bit Control that is invisible at runtime. The CO interfaces have been designed so that all implementations of a class' Control Object will be compatible. This allows the CO to be developed independently of the SO's for the same class including development by different companies.
Service Object or SO
A Service Object is called by a Control Object to implement the OPOS-prescribed functionality for a specific device. An SO is implemented as an OLE Automation server. It exposes a set of methods that are called by a CO. It can also call special methods exposed by the CO to cause events to be fired to the application. A Service Object may include multiple sets of methods in order to support devices with multiple device classes. A Service Object is typically implemented as a local in-proc server (in a DLL), although it may also be implemented as a local out-proc server (in a separate executable process). The latter implementation is probable when a device is shareable by more than one application, or when the device supports more than one device class.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 9 of 330
10
Introduction
Usually, this guide will refer to Control. On occasion, we must distinguish between the actions performed by the Control Object and Service Object. Then the explicit layer is specified.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 10 of 330
11
In summary, the application follows this general sequence: Open method: Call to link the Control Object to the Service Object. Claim method: Call to gain exclusive access to the device. Required for exclusive-use devices; optional for some sharable devices. (See Device Sharing Model, page 17 for more information). DeviceEnabled property: Set to TRUE to make the device operational. (For sharable devices, the device may be enabled without first Claiming it.) Use the device. DeviceEnabled property: Set to FALSE to disable the device. Release method: Call to release exclusive access to the device. Close method: Call to release the Service Object from the Control Object.
Properties
Before a successful Open, the values of most properties are not initialized. An attempt to set writable properties will be ignored. The following properties are always initialized:
Property State ResultCode ControlObjectDescription ControlObjectVersion Value OPOS_S_CLOSED OPOS_E_CLOSED Control Object dependent string. Control Object dependent number.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 11 of 330
12
Introduction
Exclusive use devices require the application to call the Claim method and to set the DeviceEnabled property to TRUE before some other properties are initialized or may be written. Sharable devices require the application to set the DeviceEnabled property to TRUE before some other properties are initialized or may be written. To determine when a property is initialized or writable, refer to the Summary section of each device class plus the property Remarks section. s Setting writable properties before the prerequisites are met will cause the write to be ignored, and will set the ResultCode property to either OPOS_E_NOTCLAIMED or OPOS_E_DISABLED. Reading an uninitialized property returns the following values, unless otherwise specified in the device class documentation:
Property Type Boolean Long String Value FALSE 0 [Error] include the brackets.
After properties have been initialized, subsequent claims and enables do not reinitialize the properties. They remain initialized until the Close method is called.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 12 of 330
13
ResultCode
ResultCodeExtended
StatusUpdateEvent ErrorEvent
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 13 of 330
14
Introduction
Status Model
The rules of the status model are as follows: The only aspect of the status model that is common to all device classes is the means of alerting the application, which is through the firing of the StatusUpdateEvent. Each device class specifies the status changes that cause it to fire the event. Examples of device class-specific status changes are: A change in the cash drawer position (for example, a transition from open to closed). A change in a POS printer sensor (for example, activation of a form present sensor, indicating that a slip has been inserted).
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 14 of 330
15
State Model
The rules of the state model are as follows: The Control State is initially OPOS_S_CLOSED. s The State is changed to OPOS_S_IDLE when the Open method is called and its result is OPOS_SUCCESS. The State is set to OPOS_S_BUSY when OPOS is processing output. The State is restored to OPOS_S_IDLE when these complete successfully. The State is changed to OPOS_S_ERROR when: An asynchronous output encounters an error condition. An error is encountered during the gathering or processing of event-driven input.
After OPOS changes the State property to OPOS_S_ERROR, it invokes ErrorEvent. The parameters to this event are the result code and extended result code, the locus of the error, and a pointer to the application response to s the error. The locus can indicate one of three error locations: Output The error occurred while processing previously queued output. InputWithData The error occurred while gathering or processing eventdriven input. Some previously gathered input data is available for the application. When this error locus is given, then the application can continue to process input until a second ErrorEvent is received with the InputNoData locus, or it can clear the input. InputNoData The error occurred while gathering or processing eventdriven input, and either all previously gathered input data has been processed or there is no input data available.
When the application returns from the ErrorEvent, it may change the response parameter. The response values are: Retry Use only if the locus is Output. Retry the asynchronous output and exit the error state. If an error occurs while retrying, then another ErrorEvent will be generated. Retry is the default response when the locus is Output. Clear Clear the asynchronous output or buffered input data and exit the error state. Clear is the default response when the locus is InputNoData.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 15 of 330
16
Introduction
Continue Use only if the locus is InputWithData. This response acknowledges the error and directs the Control to continue processing. The Control remains in the error state, and will fire additional data events as directed by the DataEventEnabled property. When all input has been fired and the DataEventEnabled property is again set to TRUE, then another ErrorEvent is fired with locus InputNoData. Continue is the default response when the locus is InputNoData.
The Control ensures that while the application is processing an ErrorEvent, it will not fire any other ErrorEvents.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 16 of 330
17
Exclusive-Use Devices
The most common device type is called an exclusive-use device. An example is the POS printer. Due to physical or operational characteristics, this device can only be used by one application at a time. The application must call the Claim method to gain exclusive access to the device before most methods, properties, or events are legal. Until the device is claimed, calling methods or setting properties cause an OPOS_E_NOTCLAIMED error, and events are not fired to the application. Should two closely cooperating applications want to treat an exclusive-use device in a shared manner, then one application may claim the device for a short sequence of operations, then release it so that the other application may use it. When the Claim method is called again, settable device characteristics are restored to their condition at Release. Examples of restored characteristics are the line display brightness, the MSR tracks to read, and the printer characters per line. s s s State characteristics are not restored, such as the printer sensor properties. s Instead, these are updated to their current values.
Sharable Devices
Some devices are sharable devices. An example is the keylock. A sharable device allows multiple applications to call its methods and access its properties. Also, it may fire its events to all applications that have opened it. A sharable device may still limit access to some methods or properties to an application that has claimed it, or may fire some events only to this application. Note One might argue that all devices should be defined as sharable to allow
This document assumes that an application consists of only one process. Multi-process applications are possible to create but uncommon. Technically, device sharing is performed on a process basis. However, with single-process applications we can view sharing as application-level.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 17 of 330
18
Introduction
maximum flexibility to applications. In practical use, this flexibility is unlikely to be useful. The downside is an implementation that may be significantly more complex and less likely to be accurate. In the interest of a specification that is both sufficiently robust for application development, plus implementable by hardware manufacturers, this document defines most devices as exclusive-use, and defines as sharable only those devices that have a significant potential for simultaneous use by multiple applications.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 18 of 330
Input Model
19
Input Model
The OLE for Retail POS input model supports event-driven input. When the application is ready to receive input from the device, it sets the DataEventEnabled property to TRUE. Then, when input is received (usually as a result of a hardware interrupt), the Control generates a DataEvent. This event may include input status information through a numeric parameter. The Control places the input data plus other information as needed into device specific-specific properties just before the event is fired. Just before firing this event, OPOS disables further data events by setting the DataEventEnabled property to FALSE. This causes buffering of further input data by OPOS while the application processes the current input and associated properties. When the application has finished the current input and is ready for more data, it reenables events by setting DataEventEnabled to TRUE. If the input device is an exclusive-use device, the application must both claim and enable the device before the device begins reading input. For sharable input devices, one or more applications must open and enable the device before the device begins reading input. An application must call the Claim method to request exclusive access to the device before OPOS will send data to it using the DataEvent. If event-driven input is received, but no application has claimed the device, then the input is buffered until an application Claims the device (and the DataEventEnabled property is TRUE). This behavior allows orderly sharing of the device between multiple applications, effectively passing the input focus between them. If OPOS encounters an error while gathering or processing event-driven input, then it will fire an ErrorEvent to alert the application of the error condition. This event is not fired until the DataEventEnabled property is TRUE, so that orderly application sequencing occurs. Error events are fired with one or both of the following loci:
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 19 of 330
20
Introduction
InputWithData (OPOS_EL_INPUT_DATA) Fired if the error occurred when some previously gathered input data has been buffered. This event gives the application the ability to immediately clear the input, or to optionally alert the user to the error and process the buffered input. The latter case may be useful with a Scanner Control: The user can be immediately alerted to the error so that no further items are scanned until the error is resolved. Any previously scanned items can then be successfully processed before error recovery is performed.
InputNoData (OPOS_E_INPUT) Fired when an error has occurred and there is no data available. If some input data was buffered when the error occurred, then an ErrorEvent with the locus InputWithData was fired first, and this error event signals that all buffered data has been processed.
All input buffered by OPOS may be deleted by calling the ClearInput method.
The general event-driven input model does not specifically rule out the definition of device classes containing methods or properties that return input data directly. Some device classes will define such methods and properties in order to operate in a more intuitive or flexible manner.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 20 of 330
Output Model
21
Output Model
The OLE for Retail POS output model consists of two output types: synchronous and asynchronous. A device class may support one or both types, or neither type.
Synchronous Output
This type of output is preferred when device output can be performed quickly. Its merit is simplicity. The application calls a class-specific method to perform output. The Control does not return until the output is completed.
Asynchronous Output
This type of output is preferred when device output requires slow hardware interactions. Its merit is perceived responsiveness, since the application can perform other work while the device is performing the output. The application calls a class-specific method to start the output. The Control buffers the request, sets the OutputID property to an identifier for this request, and returns as soon as possible. When the device completes the request successfully, OPOS fires an OutputCompleteEvent. A parameter of this event contains the OutputID of the completed request. If an error occurs while performing an asynchronous request, an ErrorEvent is fired. The application event handler can either retry the outstanding output or s clear it. OPOS guarantees that asynchronous output is performed on a first-in first-out basis. All output buffered by OPOS may be deleted by calling theClearOutput method. OutputCompleteEvents will not be fired for cleared output. This method also stops any output that may be in progress (when possible).
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 21 of 330
22
Introduction
Appendix A provides a history of changes to this document. Appendix B details the OPOS use of the system registry.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 22 of 330
23
Appendix C contains the OPOS application header files. Appendix D gives miscellaneous additional technical information.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 23 of 330
24
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 24 of 330
C H A P T E R
Boolean R/W Boolean R/W Boolean R/W Long Long Long Long String Long String Long String String R R R R R R R R R R
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 25 of 330
26
Chapter 1
Methods
Name Open Close Claim Release CheckHealth ClearInput ClearOutput DirectIO
Events
Name DataEvent DirectIOEvent ErrorEvent OutputCompleteEvent StatusUpdateEvent
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 26 of 330
General Information
27
General Information
This section lists properties, events, and methods that are common to many of the subsequent device categories. The summary section of each device class marks those common properties, events, and methods which do not apply to that class as Not Supported. These are not present in the classcontrols.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 27 of 330
28
Chapter 1
Properties
CheckHealthText Property
Syntax Remarks BSTR CheckHealthText Property; Holds the results of the most recent call to the CheckHealth method. The following examples illustrate some possible diagnoses: Internal HCheck: Successful External HCheck: Not Responding Interactive HCheck: Complete Before the first CheckHealth method call, its value is uninitialized. See Also CheckHealth Method
Claimed Property
Syntax Remarks BOOL Claimed; If TRUE, the device is claimed for exclusive access. If FALSE, the device is released for sharing with other applications. Many devices must be claimed before the Control will allow access to many of its methods and properties, and before it will fire events to the application. The value of Claimed is initialized to FALSE by the Open method. See Also General OLE for Retail POS Control Model; Device Sharing Model; Claim Method; Release Method
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 28 of 330
Properties
29
ControlObjectDescription Property
Syntax Remarks BSTR ControlObjectDescription; String identifying the Control Object and the company that produced it. The property identifies the Control Object. A sample returned string is:
POS Printer OLE Control, (C) 1995 Epson
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 29 of 330
30
Chapter 1
ControlObjectVersion Property
Syntax Remarks LONG ControlObjectVersion; Control Object version number. This property holds the Control Object version number. Three version levels are specified, as follows: Version Level Major Description The millions place. A change to the OPOS major version level for a device class reflects significant interface enhancements, and may remove support for obsolete interfaces from previous major version levels. The thousands place. A change to the OPOS minor version level for a device class reflects minor interface enhancements, and must provide a superset of previous interfaces at this major version level. The units place. Internal level provided by the Control Object developer. Updated when corrections are made to the CO implementation.
Minor
Build
This value may be displayed as version 1.2.38, and interpreted as major version 1, minor version 2, build 38 of the Control Object. This property is always readable. See Also ControlObjectDescription Property
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 30 of 330
Properties
31
DeviceDescription Property
Syntax Remarks BSTR DeviceDescription; String identifying the device. The property identifies the device and any pertinent information about it. A sample returned string is:
NCR 7192-0184 Printer, Japanese Version
This property is initialized by the Open method. See Also DeviceName Property
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 31 of 330
32
Chapter 1
OPOS_E_NOTCLAIMED An exclusive use device must be claimed before the device may be enabled. Other Values See Also See ResultCode.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 32 of 330
Properties
33
DeviceName Property
Syntax Remarks BSTR DeviceName; Short string identifying the device. The property identifies the device and any pertinent information about it. This is a short version of DeviceDescription and should be limited to 30 characters. DeviceName will typically be used to identify the device in an application message box, where the full description is too verbose. A sample returned string is:
NCR 7192 Printer, Japanese
This property is initialized by the Open method. See Also DeviceDescription Property
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 33 of 330
34
Chapter 1
Actually, firing of events can also be deferred by the containing application. A control container may request controls to freeze event firing. For example, this feature is utilized by Visual Basic when modal dialog boxes are active. Therefore, events are fired when both FreezeEvents is FALSE and the container has not requested event freezing. Container-initiated event freezing is not referenced elsewhere in this document, since an Application will seldom if ever notice it and cannot directly control it.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 34 of 330
Properties
35
OutputID Property
Syntax Remarks LONG OutputID; Holds the identifier of the most recently started asynchronous output. When a method successfully initiates an asynchronous output, the Control assigns an identifier to the request. When the output completes, the Control will fire an OutputCompleteEvent passing this output ID as a parameter. The output ID numbers are assigned by the Control and are guaranteed to be unique among the set of outstanding asynchronous outputs. No other facts about the ID should be assumed. See Also Output Model; OutputCompleteEvent
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 35 of 330
36
Chapter 1
ResultCode Property
Syntax Remarks LONG ResultCode; This property is set by each method. It is also set when a writable property is set. This property is always readable. Before the Open method is called, it returns the value OPOS_E_CLOSED. The result code values are: Value OPOS_SUCCESS OPOS_E_CLOSED OPOS_E_CLAIMED Meaning Successful operation. Attempt was made to access a closed device. Attempt was made to access a device that is claimed by another process. The other process must release the device before this access may be made. For exclusiveuse devices, the application will also need to claim the device before the access is legal.
OPOS_E_NOTCLAIMED Attempt was made to access an exclusive-use device that must be claimed before the method or property set action can be used. If the device is already claimed by another process, then the status OPOS_E_CLAIMED is returned instead. OPOS_E_NOSERVICE The Control cannot communicate with the Service Object. Most likely, a setup or configuration error must be corrected. OPOS_E_DISABLED OPOS_E_ILLEGAL Cannot perform operation while device is disabled. Attempt was made to perform an illegal or unsupported operation with the device, or an invalid parameter value was used.
OPOS_E_NOHARDWARE The device is not connected to the system or is not powered on. OPOS_E_OFFLINE OPOS_E_NOEXIST OPOS_E_EXISTS The device is off-line. The file name (or other specified value) does not exist. The file name (or other specified value) already exists.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 36 of 330
Properties
37
OPOS_E_FAILURE
The device cannot perform the requested procedure, even though the device is connected to the system, powered on, and on-line. The Service Object timed out waiting for a response from the device, or the Control timed out waiting for a response from the Service Object. Cannot perform operation while the State is OPOS_S_BUSY: Must wait until output is no longer in progress.
OPOS_E_TIMEOUT
OPOS_E_BUSY
OPOS_E_EXTENDED A class-specific error condition occurred. The error condition code is available in the ResultCodeExtended property. See Also Status, Result Code, and State Model
ResultCodeExtended Property
Syntax Remarks LONG ResultCodeExtended; When the ResultCode is set to OPOS_E_EXTENDED, this property is set to a class-specific value, matching one of the values given in the device class documentation. When the ResultCode is set to any other value, this property may be set by the Service Object to an SO-specific value. These values are only meaningful if the application adds Service Object-specific code to handle them. See Also ResultCode Property
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 37 of 330
38
Chapter 1
ServiceObjectDescription Property
Syntax Remarks BSTR ServiceObjectDescription; String identifying the Service Object supporting the device and the company that produced it. A sample returned string is:
TM-U950 Printer OPOS Service Driver, (C) 1995 Epson
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 38 of 330
Properties
39
ServiceObjectVersion Property
Syntax Remarks LONG ServiceObjectVersion; Service object version number. This property holds the Service Object version number. Three version levels are specified, as follows: Version Level Major Description The millions place. A change to the OPOS major version level for a device class reflects significant interface enhancements, and may remove support for obsolete interfaces from previous major version levels. The thousands place. A change to the OPOS minor version level for a device class reflects minor interface enhancements, and must provide a superset of previous interfaces at this major version level. The units place. Internal level provided by the Service Object developer. Updated when corrections are made to the SO implementation.
Minor
Build
This value may be displayed as version 1.2.38, and interpreted as major version 1, minor version 2, build 38 of the Service Object. This property is initialized by the Open method.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 39 of 330
40
Chapter 1
State Property
Syntax Remarks LONG State; Contains the current state of the Control. Value OPOS_S_CLOSED OPOS_S_IDLE OPOS_S_BUSY OPOS_S_ERROR Meaning The Control is closed. The Control is in a good state and is not busy. The Control is in a good state and is busy performing output. An error has been reported, and the application must recover the Control to a good state before normal I/O can resume.
This property is always readable. See Also Status, Result Code, and State Model
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 40 of 330
Methods
41
Methods
CheckHealth Method
Syntax LONG CheckHealth (LONG Level); The Level parameter indicates the type of health check to be performed on the device. The following values may be specified: Value OPOS_CH_INTERNAL Meaning Perform a health check that does not physically change the device. The device is tested by internal tests to the extent possible.
OPOS_CH_EXTERNAL Perform a more thorough test that may change the device. For example, a pattern may be printed on the printer. OPOS_CH_INTERACTIVE Perform an interactive test of the device. The supporting Service Object will typically display a modal dialog box to present test options and results. Remarks Called to test the state of a device. A text description of the results of this method is placed in the CheckHealthText property. The CheckHealth method is always synchronous. Return One of the following values are returned by the method, and also placed in the ResultCode property. Value OPOS_SUCCESS Meaning Indicates that the health checking procedure was initiated properly and, when possible to determine, indicates that the device is healthy. However, the health of many devices can only be determined by a visual inspection of the test results. The specified health check level is not supported by the Service Object. Cannot perform while output is in progress. See ResultCode.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 41 of 330
42
Chapter 1
See Also
Claim Method
Syntax LONG Claim (LONG Timeout); The Timeout parameter gives the maximum number of milliseconds to wait for exclusive access to be satisfied. If zero, the method attempts to claim the device, and returns immediately. Remarks Call this method to request exclusive access to the device. Many devices require an application to claim them before they can be used. When successful, the Claimed property is changed to TRUE. Return One of the following values is returned by the method and placed in the ResultCode property: Value OPOS_SUCCESS Meaning Exclusive access has been granted. The Claimed property is now TRUE. Also returned if this application has already claimed the device. This device cannot be claimed for exclusive access. Another application has exclusive access to the device, and did not relinquish control before Timeout milliseconds expired.
OPOS_E_ILLEGAL OPOS_E_TIMEOUT
See Also
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 42 of 330
Methods
43
ClearInput Method
Syntax Remarks LONG ClearInput (); Called to clear all device input that has been buffered. Any data events or input error events that were pending usually waiting for DataEventEnabled to be set to TRUE and FreezeEvents to be set to FALSE are also cleared. Return The following value is returned by the method and placed in the ResultCode property. Value OPOS_SUCCESS See Also Input Model Meaning Input has been cleared.
ClearOutput Method
Syntax Remarks LONG ClearOutput (); Called to clear all device output that has been buffered. Also, when possible, halts outputs that are in progress. Any output error events that were pending usually waiting for FreezeEvents to be set to FALSE are also cleared. Return The following value is returned by the method and placed in the ResultCode property. Value OPOS_SUCCESS See Also Output Model Meaning Output has been cleared.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 43 of 330
44
Chapter 1
Close Method
Syntax Remarks LONG Close (); Called to release the device and its resources. If the DeviceEnabled property is TRUE, then the device is first disabled. If the Claimed property is TRUE, then exclusive access to the device is first released. Return One of the following values is returned by the method and placed in the ResultCode property: Value OPOS_SUCCESS Other Values See Also Meaning Device has been disabled and closed. See ResultCode.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 44 of 330
Methods
45
DirectIO Method
Syntax LONG DirectIO (LONG Command, LONG* pData, BSTR* pString); Parameter Command pData pString Remarks Description Command number. Specific values assigned by the Service Object. Pointer to additional numeric data. Specific values vary by CommandNumber and Service Object. Pointer to additional string data. Specific values vary by CommandNumber and Service Object.
Call to communicate directly with the Service Object. This method provides a means for a Service Object to provide functionality to the application that is not otherwise supported by the standard Control Object for its device class. Depending upon the Service Object definition of the command, this s method may be asynchronous or synchronous. Use of DirectIO will make an application non-portable. The application may, however, maintain portability by performing DirectIO calls within conditional code. This code may be based upon the value of the ServiceObjectDescription, DeviceDescription, or DeviceName property.
Return
One of the following values is returned by the method and placed in the ResultCode property: Value OPOS_SUCCESS Other Values Meaning Direct I/O successful. See ResultCode.
See Also
DirectIOEvent
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 45 of 330
46
Chapter 1
Open Method
Syntax LONG Open (BSTR DeviceName); The DeviceName parameter specifies the device name to open. Remarks Call to open a device for subsequent I/O. The device name specifies which of one or more devices supported by this Control Object should be used. The DeviceName must exist in the system registry for this device class. The relationship between the device name and physical devices is determined by entries within the operating system registry; these entries are maintained by a setup or configuration utility. (See the appendix OPOS Registry Usage, page 301.) When the Open method is successful, it sets the properties Claimed, DeviceEnabled, DataEventEnabled, and FreezeEvents, as well as descriptions and version numbers of the OPOS software layers. Additional class-specific properties may also be initialized. Return One of the following values is returned by the method and placed in the ResultCode property: Value OPOS_SUCCESS OPOS_E_ILLEGAL OPOS_E_NOEXIST Meaning Open successful. The Control is already open. The specified DeviceName was not found.
OPOS_E_NOSERVICE Could not establish a connection to the corresponding Service Object. Other Values See Also See ResultCode.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 46 of 330
Methods
47
Release Method
Syntax Remarks LONG Release (); Call this method to release exclusive access to the device. If the DeviceEnabled property is TRUE, then the device is first disabled. Return One of the following values is returned by the method and placed in the ResultCode property: Value OPOS_SUCCESS OPOS_E_ILLEGAL See Also Meaning Exclusive access has been released. The Claimed property is now FALSE. The application does not have exclusive access to the device.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 47 of 330
48
Chapter 1
Events
DataEvent Event
Syntax void DataEvent (LONG Status); The Status parameter contains the input status. Its value is Control-dependent, and may describe the type or qualities of the input. Remarks Fired to present input data from the device to the application. The DataEventEnabled property is changed to FALSE, so that no further data events will be generated until the application sets this property back to TRUE. The actual input data is placed in one or more device-specific properties. If DataEventEnabled is FALSE at the time that data is received, then the data is queued in an internal OPOS buffer, the device-specific input data properties are not updated, and the event is not fired. (When this property is subsequently changed back to TRUE, the event will be fired immediately if input data is queued and FreezeEvents is FALSE.) See Also Input Model; DataEventEnabled Property; FreezeEvents Property
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 48 of 330
Events
49
DirectIOEvent Event
Syntax void DirectIOEvent (LONG EventNumber, LONG* pData, BSTR* pString); Parameter EventNumber pData pString Remarks Description Event number. Specific values are assigned by the Service Object. Pointer to additional numeric data. Specific values vary by EventNumber and the Service Object. Pointer to additional string data. Specific values vary by EventNumber and the Service Object.
Fired by a Service Object to communicate directly with the application. This event provides a means for a Service Object to provide events to the application that are not otherwise supported by the Control Object.
See Also
DirectIO Method
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 49 of 330
50
Chapter 1
ErrorEvent Event
Syntax void ErrorEvent (LONG ResultCode, LONG ResultCodeExtended, LONG ErrorLocus, LONG* pErrorResponse); Parameter ResultCode ResultCodeExtended ErrorLocus pErrorResponse Description Result code causing the error event. See ResultCode for values. Extended result code causing the error event. See ResultCodeExtended for values. Location of the error. See values below. Pointer to the error event response. See values below.
The ErrorLocus parameter may be one of the following: Value OPOS_EL_OUTPUT OPOS_EL_INPUT Meaning Error occurred while processing asynchronous output. Error occurred while gathering or processing event-driven input. No input data is available.
OPOS_EL_INPUT_DATA Error occurred while gathering or processing eventdriven input, and some previously buffered data is available. The contents at the location pointed to by the pErrorResponse parameter are preset to a default value, based on the ErrorLocus. The application may change them to one of the following: Value OPOS_ER_RETRY Meaning Use only when locus is OPOS_EL_OUTPUT. Retry the asynchronous output. The error state is exited. Default when locus is OPOS_EL_OUTPUT. Clear the asynchronous output or buffered input data. The error state is exited. Default when locus is OPOS_EL_INPUT.
OPOS_ER_CLEAR
OPOS_ER_CONTINUEINPUT Use only when locus is OPOS_EL_INPUT_DATA. Acknowledges the error and directs the Control to
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 50 of 330
Events
51
continue processing. The Control remains in the error state and will fire additional DataEvents as directed by the DataEventEnabled property. When all input has been fired and the DataEventEnabled property is again set to TRUE, then another ErrorEvent is fired with locus OPOS_EL_INPUT. Default when locus is OPOS_EL_INPUT_DATA. Remarks Fired when an error is detected and the Control State transitions into the error s state. Input error events are not fired until the DataEventEnabled property is TRUE, so that proper application sequencing occurs. See Also Status, Result Code, and State Model
OutputCompleteEvent Event
Syntax void OutputCompleteEvent (LONG OutputID); The OutputID parameter indicates the ID number of the asynchronous output request that is complete. Remarks See Also Fired when a previously started asynchronous output request completes successfully. Output Model
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 51 of 330
52
Chapter 1
StatusUpdateEvent Event
Syntax void StatusUpdateEvent (LONG Data); The Data parameter is for device class-specific data, describing the type of status change. Remarks Fired when a Control needs to alert the application of a device status change. Examples are a change in the cash drawer position (open vs. closed) or a change in a POS printer sensor (form present vs. absent). See Also Status, Result Code, and State Model
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 52 of 330
C H A P T E R
Cash Drawer
Summary
Properties
Common CheckHealthText Claimed DataEventEnabled DeviceEnabled FreezeEvents OutputID ResultCode ResultCodeExtended State
ControlObjectDescription ControlObjectVersion ServiceObjectDescription ServiceObjectVersion DeviceDescription DeviceName Type String Boolean Access R R Initialized After Open Open Not Supported Open Open Not Supported -Open ---Open Open Open Open
Boolean R/W Boolean R/W Boolean R/W Long Long Long Long String Long String Long String String R R R R R R R R R R
Specific CapStatus
DrawerOpened
Boolean Boolean
R R
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 53 of 330
54
Chapter 2
Methods
Common Open Close Claim Release CheckHealth ClearInput ClearOutput DirectIO Specific OpenDrawer WaitForDrawerClose
May Use After -Open Open Open & Claim Open & Enable; Note Not Supported Not Supported Open
Note: Also requires that no other application has claimed the cash drawer.
Events
Name DataEvent DirectIOEvent ErrorEvent OutputCompleteEvent StatusUpdateEvent
May Occur After Not Supported Open Not Supported Not Supported Open & Enable
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 54 of 330
Cash Drawer
General Information
55
General Information
The Cash Drawer Control OLE programmatic ID is OPOS.CashDrawer. s
Capabilities
The Cash Drawer Control has the following capability: Supports a command to open the cash drawer. The cash drawer may have the following additional capability: Drawer status reporting: Can determine whether the drawer is open or closed.
Device Sharing
The cash drawer is a sharable device. Its device sharing rules are: After opening and enabling the device, the application may access all properties and methods and will receive status update events. If more than one application has opened and enabled the device, all applications may access its properties and methods. Status update events are fired to all of the applications. If one application claims the cash drawer, then only that application may call the OpenDrawer and WaitForDrawerClosed methods. This feature provides a degree of security, such that these methods may effectively be restricted to the main POS application if that application claims the device at startup. See the Summary table for precise usage prerequisites.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 55 of 330
56
Chapter 2
Properties
CapStatus Property
Syntax Remarks BOOL CapStatus; If TRUE, the drawer can report status. If FALSE, the drawer is not able to determine whether cash drawer is open or closed. This property is initialized by the Open method.
DrawerOpened Property
Syntax Remarks BOOL DrawerOpened; If TRUE, the drawer is open. If FALSE, the drawer is closed. If the capability CapStatus is FALSE, then the device does not support status reporting, and DrawerOpened is always FALSE. This property is initialized and kept current while the device is enabled.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 56 of 330
Cash Drawer
Methods
57
Methods
OpenDrawer Method
Syntax Remarks Return LONG OpenDrawer () Call to open the drawer. One of the following values is returned by the method and placed in the ResultCode property: Value OPOS_SUCCESS Other Values Meaning The drawer was opened successfully. See ResultCode.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 57 of 330
58
Chapter 2
WaitForDrawerClose Method
Syntax LONG WaitForDrawerClose (LONG BeepTimeout, LONG BeepFrequency, LONG BeepDuration, LONG BeepDelay); Parameter BeepTimeout BeepFrequency BeepDuration BeepDelay Remarks Description Number of milliseconds to wait before starting an alert beeper. Audio frequency of the alert beeper in hertz. Number of milliseconds that the beep tone will be sounded. Number of milliseconds between the sounding of beeper tones.
Call to wait until the cash drawer is closed. If the drawer is still open after BeepTimeout milliseconds, then the system alert beeper is started. Unless an error occurs, this method will not return to the application while the drawer is open. When the cashier closes the drawer, the beeper is turned off. If the capability CapStatus is FALSE, then the device does not support status reporting, and this method will return immediately with a successful status.
Return
One of the following values is returned by the method and placed in the ResultCode property: Value OPOS_SUCCESS Other Values Meaning The drawer was properly closed. See ResultCode.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 58 of 330
Cash Drawer
Events
59
Events
StatusUpdateEvent Event
Syntax void StatusUpdateEvent (LONG Data); The Data parameter contains the updated drawer status. If TRUE, the drawer is open. If FALSE, the drawer is closed. Remarks Fired when the open status of the drawer changes. If the capability CapStatus is FALSE, then the device does not support status reporting, and this event will never be fired.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 59 of 330
60
Chapter 2
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 60 of 330
C H A P T E R
Coin Dispenser
Summary
Properties
Common CheckHealthText Claimed DataEventEnabled DeviceEnabled FreezeEvents OutputID ResultCode ResultCodeExtended State ControlObjectDescription ControlObjectVersion ServiceObjectDescription ServiceObjectVersion DeviceDescription DeviceName Type String Boolean Access R R Initialized After Open Open Not Supported Open & Claim Open Not Supported -Open ---Open Open Open Open
Boolean R/W Boolean R/W Boolean R/W Long Long Long Long String Long String Long String String R R R R R R R R R R
Specific CapEmptySensor
CapJamSensor CapNearEmptySensor DispenserStatus
R R R R
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 61 of 330
62
Chapter 3
Methods
Common Open Close Claim Release CheckHealth ClearInput ClearOutput DirectIO Specific DispenseChange Open, Claim, & Enable May Use After -Open Open Open & Claim Open, Claim, & Enable Not Supported Not Supported Open
Events
Name DataEvent DirectIOEvent ErrorEvent OutputCompleteEvent StatusUpdateEvent May Occur After Not Supported Open Not Supported Not Supported Open, Claim, & Enable
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 62 of 330
Coin Dispenser
General Information
63
General Information
The Coin Dispenser Control OLE programmatic ID is OPOS.CoinDispenser. s
Capabilities
The coin dispenser has the following capability: Supports a method that allows a specified amount of change to be dispensed from the device. The coin dispenser may have the following additional capability: Coin dispenser status reporting, which indicates empty coin slot conditions, near empty coin slot conditions, and coin slot jamming conditions.
Model
The general model of a coin dispenser is: A coin dispenser consists of a number of coin slots which hold the coinage to be dispensed. The programmer using the Coin Dispenser Control is not concerned with controlling the individual slots of coinage, but rather calls a method with the amount of change to be dispensed. It is the responsibility of the coin dispenser device or the Control to dispense the proper amount of change from the various slots.
Device Sharing
The coin dispenser is an exclusive-use device. Its device sharing rules are: The application must claim the device before enabling it. The application must claim and enable the device before accessing some of the properties, dispensing change, or receiving status update events. See the Summary table for precise usage prerequisites.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 63 of 330
64
Chapter 3
Properties
CapEmptySensor Property
Syntax Remarks BOOL CapEmptySensor; If TRUE, the coin dispenser can report an out-of-coinage condition; otherwise it is FALSE. This property is initialized by the Open method.
CapJamSensor Property
Syntax Remarks BOOL CapJamSensor; If TRUE, the coin dispenser can report a mechanical jam or failure condition; otherwise it is FALSE. This property is initialized by the Open method.
CapNearEmptySensor Property
Syntax Remarks BOOL CapNearEmptySensor; If TRUE, the coin dispenser can report when it is almost out of coinage; otherwise it is FALSE. This property is initialized by the Open method.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 64 of 330
Coin Dispenser
Properties
65
DispenserStatus Property
Syntax Remarks LONG DispenserStatus; Holds the current status of the dispenser. It may be one of the following: Value COIN_STATUS_OK Meaning Ready to dispense coinage. This value is also set when the dispenser is unable to detect an error condition.
COIN_STATUS_EMPTY Cannot dispense coinage because it is empty. COIN_STATUS_NEAREMPTY Can still dispense coinage, but it nearly empty. COIN_STATUS_JAM A mechanical fault has occurred.
This property is initialized and kept current while the device is enabled.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 65 of 330
66
Chapter 3
Methods
DispenseChange Method
Syntax LONG DispenseChange (LONG Amount); The Amount parameter contains the amount of change to be dispensed. Remarks Return Call to dispense change. The value represented by the Amount parameter is a count of the currency units to dispense (such as cents or yen). One of the following values is returned by the method and placed in the ResultCode property: Value OPOS_SUCCESS OPOS_E_ILLEGAL Meaning The specified change was dispensed successfully. An Amount parameter value of zero was specified, or the Amount parameter contained a negative value or a value greater than the device can dispense. See ResultCode.
Other Values
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 66 of 330
Coin Dispenser
Events
67
Events
StatusUpdateEvent (Common)
Syntax void StatusUpdateEvent (LONG Data); The Data parameter contains the coin dispenser status condition: Value COIN_STATUS_OK Meaning Ready to dispense coinage. This value is also set when the dispenser is unable to detect an error condition.
COIN_STATUS_EMPTY Cannot dispense coinage because it is empty. COIN_STATUS_NEAREMPTY Can still dispense coinage, but is nearly empty. COIN_STATUS_JAM Remarks A mechanical fault has occurred.
Fired when a coin dispenser sensor indicates a status change. The coin dispenser is only able to fire status event changes for the sensor types supported by the values described in the capabilities properties.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 67 of 330
68
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 68 of 330
C H A P T E R
Hard Totals
Summary
Properties
Common CheckHealthText Claimed DataEventEnabled DeviceEnabled FreezeEvents OutputID ResultCode ResultCodeExtended State ControlObjectDescription ControlObjectVersion ServiceObjectDescription ServiceObjectVersion DeviceDescription DeviceName Type String Boolean Access R R Initialized After Open Open Not Supported Open Open Not Supported -Open ---Open Open Open Open
Boolean R/W Boolean R/W Boolean R/W Long Long Long Long String Long String Long String String R R R R R R R R R R
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 69 of 330
70
Chapter 4
Access R R R R R R R
Initialized After Open Open Open Open & Enable Open & Enable Open & Enable Open
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 70 of 330
Hard Totals
Summary
71
Methods
Common Open Close Claim Release CheckHealth ClearInput ClearOutput DirectIO Specific ClaimFile ReleaseFile Read Write SetAll ValidateData RecalculateValidationData Create Find FindByIndex Delete Rename BeginTrans CommitTrans Rollback Open & Enable; Note 2 Open & Enable Open & Enable; Note 2 Open & Enable; Note 2 Open & Enable; Note 2 Open & Enable; Note 2 Open & Enable; Note 2 Open & Enable; Note 1 Open & Enable; Note 1 Open & Enable; Note 1 Open & Enable; Note 2 Open & Enable; Note 2 Open & Enable Open & Enable Open & Enable May Use After -Open Open Open & Claim Open & Enable; Note 1 Not Supported Not Supported Open
Note 1: Also requires that no other application has claimed the hard totals device. Note 2: Also requires that no other application has claimed the hard totals device or the file on which this method acts.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 71 of 330
72
Chapter 4
Events
Name DataUpdateEvent DirectIOEvent ErrorEvent OutputCompleteEvent StatusUpdateEvent May Occur After Not Supported Open Not Supported Not Supported Not Supported
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 72 of 330
Hard Totals
General Information
73
General Information
The Hard Totals Control OLE programmatic ID is OPOS.Totals. s
Capabilities
The Hard Totals device has the following minimal set of capabilities: Supports at least one totals file with the name (the empty string) in an area of totals memory. Each totals file is read and written as if it were a sequence of byte data. Each totals file is created with a fixed size and may be deleted, initialized, and claimed for exclusive use. Totals memory is frequently a limited but secure resource - perhaps of only several thousand bytes of storage. The Hard Totals device may have the following additional capabilities: Supports additional named totals files. They share some characteristics of a file system with only a root directory level. In addition to the minimal capabilities listed above, each totals file may also be renamed. Supports transactions, with begin and commit operations, plus rollback. Supports advanced error detection. This detection may be implemented through hardware or software.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 73 of 330
74
Chapter 4
Model
The following is the general model of the Hard Totals: A Hard Totals device is logically treated as a sequence of byte data, which the application subdivides into totals files. This is done by the Create method, which assigns a name, size, and error detection level to the totals file. Totals files have a fixed-length that is set at Create time. At a minimum, a single totals file with the name (the empty string) can be created and manipulated. Optionally, additional totals files with arbitrary names may be created. Totals files model many of the characteristics of a traditional file system. The intent, however, is not to provide a robust file system. Rather, totals files allow partitioning and ease of access into what is frequently a limited but secure resource. In order to reduce unnecessary overhead usage of this resource, directory hierarchies are not supported, file attributes are minimized, and files may not be dynamically resized. The following operations may be performed on a totals file: Read: Read a series of data bytes. Write: Write a series of data bytes. ClearAll : Set all the data in a totals file to zero. Find: Locate an existing totals file by name, and return a file handle and size. FindByIndex: Used to enumerate all of the files in the Hard Totals area. Delete: Delete a totals file by name. Rename: Rename an existing totals file. ClaimFile: Gain exclusive access to a specific file for use by the claiming application. A timeout value may be specified in case another application maintains access for a period a time. The common Claim method may also be used to claim the entire Hard Totals device. ReleaseFile: Releases exclusive access to the file.
The FreeData property holds the current number of unassigned data bytes. The TotalsSize property holds the totals memory size.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 74 of 330
Hard Totals
General Information
75
The NumberOfFiles property holds the number of totals files that exist in the hard totals device. Transaction operations are optionally supported. A transaction is defined as a series of data writes to be applied as an atomic operation to one or more Hard Totals files. During a transaction, data writes will typically be maintained in memory until a commit or rollback. Also FreeData will typically be reduced during a transaction to ensure that the commit has temporary totals space to perform the commit as an atomic operation. BeginTrans: Marks the beginning of a transaction. CommitTrans: Ends the current transaction, and saves the updated data. Software and/or hardware methods are used to ensure that either the entire transaction is saved, or that none of the updates are applied. This will typically require writing the transaction to temporary totals space, setting state information within the device indicating that a commit is in progress, writing the data to the totals files, and freeing the temporary totals space. If the commit is interrupted, perhaps due to a system power loss or reset, then when the Hard Totals service object is reloaded and initialized, it can complete the commit by copying data from the temporary space into the totals files. This ensures the integrity of related totals data. Rollback: Ends the current transaction, and discards the updates. This may be useful in case of user intervention to cancel an update. Also, if advanced error detection shows that some totals data cannot be read properly in preparation for an update, then the transaction may need to be aborted. TransactionInProgress: This property holds the current state of transactions.
The application should Claim the files used during a transaction so that no other Hard Totals Control claims a file before CommitTrans, causing the commit to fail, returning an already claimed status.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 75 of 330
76
Chapter 4
Advanced error detection is optionally supported by the following: A Read or a Write may report a validation error. Data is usually divided into validation blocks, over which sumchecks or CRCs are maintained. The size of validation data blocks is determined by the specific Service Object. A validation error informs the application that one or more of the validation blocks containing the data to be read or written may be invalid due to a hardware error. (An error on a Write can occur when only a portion of a validation block must be changed. The validation block must be read and the block validated before the portion is changed.) When a validation error is reported, it is recommended that the application read all of the data in the totals file. The application will want to determine which portions of data are invalid, and take action based on the results of the reads. RecalculateValidationData may be called to cause recalculation of all validation data within a totals file. This may be called after recovery has been performed as in the previous paragraph. ValidateData may be called to verify that all data within a totals file passes validation. Data Writes automatically cause recalculation of validation data for the validation block or blocks in which the written data resides. Since advanced error detection usually imposes a performance penalty, the application may choose to select this feature when each totals file is created.
Device Sharing
The hard totals device is sharable. Its device sharing rules are: After opening the device, most properties are readable. After opening and enabling the device, the application may access all properties and methods. If more than one application has opened and enabled the device, all applications may access its properties and methods. One application may claim the hard totals device. This restricts all other applications from reading, changing, or claiming any files on the device. One application may claim a hard totals file. This restricts all other applications from reading, changing, or claiming the file, and from claiming the hard totals device.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 76 of 330
Hard Totals
Properties
77
Properties
CapErrorDetection Property
Syntax Remarks BOOL CapErrorDetection; If TRUE, then advanced error detection is supported; otherwise it is FALSE. This property is initialized by the Open method.
CapSingleFile Property
Syntax Remarks BOOL CapSingleFile; If TRUE, then only a single file, identified by the empty string (), is supported; otherwise it is FALSE. This property is initialized by the Open method.
CapTransactions Property
Syntax Remarks BOOL CapTransactions; If TRUE, then transactions are supported; otherwise it is FALSE. This property is initialized by the Open method.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 77 of 330
78
Chapter 4
FreeData Property
Syntax Remarks LONG FreeData; Holds the number of bytes of unallocated data in the Hard Totals device. Its value is initialized to an appropriate value when the device is enabled and is updated as files are Created and Deleted. If creating a file requires some overhead to support the file information, then FreeData is reduced by this overhead amount. This guarantees that a new file of size FreeData may be created. Data writes within a transaction may temporarily reduce FreeData, since some Hard Totals space may need to be allocated to prepare for the transaction commit. Therefore, the application should ensure that sufficient FreeData is maintained to allow its maximally sized transactions to be performed. See Also Create Method; Write Method
NumberOfFiles Property
Syntax Remarks LONG NumberOfFiles; Holds the number of totals file currently in the Hard Totals device. This property is initialized and kept current while the device is enabled. See Also FreeData Property
TotalsSize Property
Syntax Remarks LONG TotalsSize; Holds the size of the Hard Totals area. This size is equal to the largest totals file that can be created if no other files exist. This property is initialized when the device is enabled. See Also FreeData Property
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 78 of 330
Hard Totals
Properties
79
TransactionInProgress Property
Syntax Remarks BOOL TransactionInProgress; If TRUE, then the application is within a transaction; otherwise it is FALSE. This property is initialized to FALSE by the Open method. See Also BeginTrans Method
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 79 of 330
80
Chapter 4
Methods
BeginTrans Method
Syntax Remarks Return LONG BeginTrans (); Marks the beginning of a series of Hard Totals writes that must either be applied as a group or not at all. One of the following values is returned by the method and placed in the ResultCode property: Value OPOS_SUCCESS OPOS_E_ILLEGAL Other Values See Also Meaning The method was successful. Transactions are not supported by this device. See ResultCode.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 80 of 330
Hard Totals
Methods
81
OPOS_E_TIMEOUT
See Also
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 81 of 330
82
Chapter 4
ClaimFile Method
Syntax LONG ClaimFile (LONG HTotalsFile, LONG Timeout); Parameter HTotalsFile Timeout Remarks Description Handle to the totals file that is to be claimed. The time in milliseconds to wait for the file to become available.
Attempts to gain exclusive access to a specific file for use by the claiming application. Once granted, the application maintains exclusive access until it explicitly releases access or until the device is closed. If any other applications have claimed exclusive access to this file by using ClaimFile, or if an application has claimed exclusive access to the entire totals area by using Claim, then this ClaimFile cannot be satisfied until those claims have been released. All claims are released when the application calls the Close method.
Return
One of the following values is returned by the method and placed in the ResultCode property: Value OPOS_SUCCESS OPOS_E_ILLEGAL OPOS_E_TIMEOUT Meaning The method was successful. The handle is invalid. The Timeout value expired before another application released exclusive access of either the requested totals file or the entire totals area.
See Also
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 82 of 330
Hard Totals
Methods
83
CommitTrans Method
Syntax Remarks Return LONG CommitTrans (); Ends the current transaction. All writes between the previous BeginTrans method and this method are saved to the Hard Totals areas. One of the following values is returned by the method and placed in the ResultCode property: Value OPOS_SUCCESS OPOS_E_ILLEGAL Other Values See Also Meaning The method was successful. Transactions are not supported by this device, or no transaction is in progress. See ResultCode.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 83 of 330
84
Chapter 4
Create Method
Syntax LONG Create (BSTR FileName, LONG* pHTotalsFile, LONG Size, BOOL ErrorDetection); Parameter FileName Description The name to be assigned to the file. Must be no longer than 10 characters. All displayable characters characters 20-hex are valid. Pointer to the handle of the newly created totals file. Set by the method. The length of the file in bytes. Once created, the file size cannot be changed totals files are fixed-length files. The level of error detection desired for this file: If TRUE, then the Service Object will enable advanced error detection if supported. If FALSE, then higher performance access is required, so advanced error detection need not be enabled for this file.
Remarks
Creates a totals file with the specified name, size, and error detection level. The data area is initialized to binary zeros. If CapSingleFile is TRUE, then only one file may be created, and its name must be the empty string (). Otherwise, the number of totals files that may be created is limited only by the free space available in the Hard Totals area.
Return
One of the following values is returned by the method and placed in the ResultCode property: Value OPOS_SUCCESS OPOS_E_CLAIMED OPOS_E_ILLEGAL OPOE_E_EXISTS Meaning The method was successful. Cannot create because the entire totals file area is claimed by another application. The FileName is too long or contains invalid characters. FileName already exists.
OPOS_E_EXTENDED ResultCodeExtended = OPOS_ETOT_NOROOM: There is insufficient room in the totals area to create the file. Other Values See ResultCode.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 84 of 330
Hard Totals
Methods
85
See Also
Delete Method
Syntax LONG Delete (BSTR FileName); The FileName parameter specifies the totals file to be deleted. Remarks Return Delete the named file. One of the following values is returned by the method and placed in the ResultCode property: Value OPOS_SUCCESS OPOS_E_CLAIMED OPOS_E_ILLEGAL OPOE_E_NOEXIST Other Values See Also Meaning The method was successful. Cannot delete because either the totals file or the entire totals area is claimed by another application. The FileName is too long or contains invalid characters. FileName was not found. See ResultCode.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 85 of 330
86
Chapter 4
Find Method
Syntax LONG Find (BSTR FileName, LONG* pHTotalsFile, LONG* pSize); Parameter FileName pHTotalsFile pSize Remarks Return Description The totals file name to be located. Pointer to the handle of the totals file. Set by the method. Pointer to the length of the file in bytes. Set by the method.
Locates an existing totals file. One of the following values is returned by the method and placed in the ResultCode property: Value OPOS_SUCCESS OPOS_E_CLAIMED OPOS_E_ILLEGAL OPOE_E_NOEXIST Other Values Meaning The method was successful. Cannot find because the entire totals file area is claimed by another application. The FileName is too long or contains invalid characters. FileName was not found. See ResultCode.
See Also
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 86 of 330
Hard Totals
Methods
87
FindByIndex Method
Syntax LONG FindByIndex (LONG Index, BSTR* pFileName); Parameter Index pFileName Remarks Description The index of the totals file name to be found. Pointer to the totals file name to be returned. Set by the method.
Returns the totals file name currently associated with the given index. This method provides a means for enumerating all of the totals files currently defined. An Index of zero will return the file name at the first file position, with subsequent indices returning additional file names. The largest valid Index value is one less than NumberOfFiles. The creation and deletion of files may change the relationship between indices and the file names, as the Control may compact or rearrange the data areas used to manage file names and attributes at these times. Therefore, the application may need to Claim the device to ensure that all file names are retrieved successfully.
Return
One of the following values is returned by the method and placed in the ResultCode property: Value OPOS_SUCCESS OPOS_E_CLAIMED OPOS_E_ILLEGAL Other Values Meaning The method was successful. Cannot find because the entire totals file area is claimed by another application. The Index is greater than the largest file index that is currently defined. See ResultCode.
See Also
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 87 of 330
88
Chapter 4
Read Method
Syntax LONG Read (LONG HTotalsFile, BSTR* pData, LONG Offset, LONG Count); Parameter HTotalsFile pData Offset Count Remarks Return Description Totals file handle returned from a Create or Find method. Pointer to the data buffer in which the totals data will be placed. Starting offset for the data to be read. Number of bytes of data to read.
Read data from a totals file. One of the following values is returned by the method and placed in the ResultCode property: Value OPOS_SUCCESS OPOS_E_CLAIMED OPOS_E_ILLEGAL Meaning The method was successful. Cannot read because either the totals file or the entire totals area is claimed by another application. The handle is invalid, or part of the data range is outside the bounds of the totals file.
OPOS_E_EXTENDED ResultCodeExtended = OPOS_ETOT_VALIDATION: A validation error has occurred while reading data. Other Values See Also Write Method See ResultCode.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 88 of 330
Hard Totals
Methods
89
RecalculateValidationData Method
Syntax LONG RecalculateValidationData (LONG HTotalsFile); The HTotalsFile parameter contains the handle of a totals file. Remarks Return Recalculates validation data for the specified totals file. One of the following values is returned by the method and placed in the ResultCode property: Value OPOS_SUCCESS OPOS_E_CLAIMED OPOS_E_ILLEGAL Other Values Meaning The method was successful. Cannot recalculate because either the totals file or the entire totals area is claimed by another application. The handle is invalid, or advanced error detection is either not supported by the ServiceObject or by this file. See ResultCode.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 89 of 330
90
Chapter 4
ReleaseFile Method
Syntax LONG ReleaseFile (LONG HTotalsFile); The HTotalsFile parameter contains the handle of the totals file to be released. Remarks Return Releases exclusive access to a specific file. One of the following values is returned by the method and placed in the ResultCode property: Value OPOS_SUCCESS OPOS_E_ILLEGAL See Also Meaning The method was successful. The handle is invalid, or the specified file is not claimed by this application.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 90 of 330
Hard Totals
Methods
91
Rename Method
Syntax LONG Rename (LONG HTotalsFile, BSTR FileName); Parameter HTotalsFile FileName Description Handle of the totals file to be renamed. The new name to be assigned to the file. The name must be no longer than 10 characters. All displayable characters characters 20-hex are valid.
Remarks
Renames a totals file. If CapSingleFile is TRUE, then this method will fail.
Return
One of the following values is returned by the method and placed in the ResultCode property: Value OPOS_SUCCESS OPOS_E_CLAIMED OPOS_E_ILLEGAL Meaning The method was successful. Cannot rename because either the totals file or the entire totals area is claimed by another application. The file handle is invalid, the FileName is too long or contains invalid characters, or the CapSingleFile property is TRUE. FileName already exists. See ResultCode.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 91 of 330
92
Chapter 4
Rollback Method
Syntax Remarks Return LONG Rollback (); Ends the current transaction. All w rites between the previous BeginTrans and this method are discarded; they are not saved to the Hard Totals areas. One of the following values is returned by the method and placed in the ResultCode property: Value OPOS_SUCCESS OPOS_E_ILLEGAL Other Values See Also Meaning The method was successful. Transactions are not supported by this device, or no transaction is in progress. See ResultCode.
SetAll Method
Syntax LONG SetAll (LONG HTotalsFile, LONG Value); Parameter HTotalsFile Value Remarks Return Description Handle of a totals file. Value to set is in the low byte.
Set all the data in a totals file to the specified value. One of the following values is returned by the method and placed in the ResultCode property: Value OPOS_SUCCESS OPOS_E_CLAIMED Other Values Meaning The method was successful. Cannot set because either the totals file or the entire totals area is claimed by another application. See ResultCode.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 92 of 330
Hard Totals
Methods
93
ValidateData Method
Syntax LONG ValidateData (LONG HTotalsFile); The HTotalsFile parameter contains the handle of a totals file. Remarks Return Verifies that all data in the specified totals file passes validation checks. One of the following values is returned by the method and placed in the ResultCode property: Value OPOS_SUCCESS OPOS_E_CLAIMED OPOS_E_ILLEGAL Other Values Meaning The method was successful. Cannot validate because either the totals file or the entire totals area is claimed by another application. The handle is invalid, or advanced error detection is either not supported by the ServiceObject or by this file. See ResultCode.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 93 of 330
94
Chapter 4
Write Method
Syntax LONG Write (LONG HTotalsFile, BSTR Data, LONG Offset, LONG Count); Parameter HTotalsFile Data Offset Count Remarks Write data to a totals file. If a transaction is in progress, then the write will be buffered until a CommitTrans or Rollback method is called. Return One of the following values is returned by the method and placed in the ResultCode property: Value OPOS_SUCCESS OPOS_E_CLAIMED OPOS_E_ILLEGAL Meaning The method was successful. Cannot write because either the totals file or the entire totals area is claimed by another application. The handle is invalid, or part of all of the data range is outside the bounds of the totals file. Description Totals file handle returned from a Create or Find method. Data buffer containing the totals data to be written. Starting offset for the data to be written. Number of bytes of data to write.
OPOS_E_EXTENDED ResultCodeExtended = OPOS_ETOT_NOROOM: Cannot write because a transaction is in progress, and there is not enough free space to prepare for the transaction commit. ResultCodeExtended = OPOS_ETOT_VALIDATION: A validation error has occurred while reading data. Other Values See Also See ResultCode.
Read Method; BeginTrans Method; CommitTrans Method; Rollback Method; FreeSpace Property
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 94 of 330
C H A P T E R
Keylock
Summary
Properties
Common CheckHealthText Claimed DataEventEnabled DeviceEnabled FreezeEvents OutputID ResultCode ResultCodeExtended State ControlObjectDescription ControlObjectVersion ServiceObjectDescription ServiceObjectVersion DeviceDescription DeviceName Specific KeyPosition PositionCount Long Long R R Open & Enable Open Type String Boolean Access R R Initialized After Open Open Not Supported Open Open Not Supported -Open ---Open Open Open Open
Boolean R/W Boolean R/W Boolean R/W Long Long Long Long String Long String Long String String R R R R R R R R R R
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 95 of 330
96
Chapter 5
Methods
Common Open Close Claim Release CheckHealth ClearInput ClearOutput DirectIO Specific WaitForKeylockChange Open & Enable May Use After -Open Open Open & Claim Open & Enable Not Supported Not Supported Open
Events
Name DataEvent DirectIOEvent ErrorEvent OutputCompleteEvent StatusUpdateEvent May Occur After Not Supported Open Not Supported Not Supported Open & Enable
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 96 of 330
Keylock
General Information
97
General Information
The Keylock Control OLE programmatic ID is OPOS.Keylock. s
Capabilities
The keylock has the following minimal set of capabilities: Supports at least three keylock positions. Supports reporting of keylock position changes, either by hardware or software detection.
Model
The keylock defines three keylock positions as constants. It is assumed that the keylock supports locked, normal, and supervisor positions. The constants for these keylock positions and their values are as follows: LOCK_KP_LOCK LOCK_KP_NORM LOCK_KP_SUPR 1 2 3
The KeyPosition property holds the value of the keylock position where the values range from one (1) to the total number of keylock positions contained in the PositionCount property.
Device Sharing
The keylock is sharable. Its device sharing rules are: After opening and enabling the device, the application may access all properties and methods and will receive status update events. If more than one application has opened and enabled the device, each of these applications may access its properties and methods. Status update events are fired to all of these applications. The keylock may not be claimed for exclusive access. If an application calls Claim, the method always return OPOS_E_ILLEGAL. See the Summary table for precise usage prerequisites.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 97 of 330
98
Chapter 5
Properties
KeyPosition Property
Syntax Remarks LONG KeyPosition; Holds a value which indicates the keylock position. This value is set by the Control whenever the keylock position is changed. In addition to the application receiving the StatusUpdateEvent, this value is changed to reflect the new keylock position. The KeyPosition property may hold one of the following values: Value LOCK_KP_LOCK LOCK_KP_NORM LOCK_KP_SUPR Other Values Meaning Keylock is in the locked position. Value is one (1). Keylock is in the normal position. Value is two (2). Keylock is in the supervisor position. Value is three (3). Keylock is in one of the auxiliary positions. This value may range from four (4) up to the total number of keylock positions indicated by the PositionCount property.
This property is initialized and kept current while the device is enabled.
PositionCount Property
Syntax Remarks LONG PositionCount; Holds the total number of keylock positions. Contains the total number of positions that are present on the keylock device. This property is initialized by the Open method.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 98 of 330
Keylock
Methods
99
Methods
WaitForKeylockChange Method
Syntax LONG WaitForKeylockChange (LONG KeyPosition, LONG Timeout); Parameter KeyPosition Timeout Description Requested keylock position. See values below. Maximum number of milliseconds to wait for the keylock before returning control back to the application.
The KeyPosition parameter may contain one of the following values: Value LOCK_KP_ANY LOCK_KP_LOCK LOCK_KP_NORM LOCK_KP_SUPR Other Values Meaning Wait for any keylock position change. Value is zero (0). Wait for keylock position to be set to the locked position. Value is one (1). Wait for keylock position to be set to the normal position. Value is two (2). Wait for keylock position to be set to the supervisor position. Value is three (3). Wait for keylock position to be set to one of the auxiliary positions. This value may range from four (4) up to the total number of keylock positions indicated by the PositionCount property.
Remarks
Call to wait for a specified keylock position to be set. If the keylock position specified by the KeyPosition parameter is the same as the current keylock position, then the method returns immediately.
Return
One of the following values is returned by the method and placed in the ResultCode property: Value OPOS_SUCCESS OPOS_E_TIMEOUT Meaning The keylock is in the specified position. If KeyPosition is LOCK_KP_ANY, then the keylock position has changed. The timeout period expired before the requested keylock positioning occurred.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 99 of 330
100
Chapter 5
Events
StatusUpdateEvent Event
Syntax void StatusUpdateEvent (LONG Data); The Data parameter contains the updated keylock position. The following keylock position values may be set: Value LOCK_KP_LOCK LOCK_KP_NORM LOCK_KP_SUPR Other Values Meaning Keylock is in the locked position. Value is one (1). Keylock is in the normal position. Value is two (2). Keylock is in the supervisor position. Value is three (3). Keylock is in one of the auxiliary positions. This value may range from four (4) to the total number of keylock positions indicated by the PositionCount property.
Remarks
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 100 of 330
C H A P T E R
Line Display
Summary
Properties
Common CheckHealthText Claimed DataEventEnabled DeviceEnabled FreezeEvents OutputID ResultCode ResultCodeExtended State
ControlObjectDescription ControlObjectVersion ServiceObjectDescription ServiceObjectVersion DeviceDescription DeviceName Type String Boolean Access R R Initialized After Open Open Not Supported Open & Claim Open Not Supported -Open ---Open Open Open Open
Boolean R/W Boolean R/W Boolean R/W Long Long Long Long String Long String Long String String R R R R R R R R R R
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 101 of 330
102
Chapter 6
Specific
CapBlink CapBrightness CapCharacterSet CapDescriptors CapHMarquee CapICharWait CapVMarquee DeviceWindows DeviceRows DeviceColumns DeviceDescriptors DeviceBrightness CharacterSet CharacterSetList CurrentWindow Rows Columns CursorRow CursorColumn CursorUpdate MarqueeType MarqueeFormat MarqueeUnitWait MarqueeRepeatWait InterCharacterWait
Type Long Boolean Long Boolean Boolean Boolean Boolean Long Long Long Long Long Long String Long Long Long Long Long
Initialized After Open Open Open Open Open Open Open Open Open Open Open Open, Claim, & Enable Open, Claim, & Enable Open Open Open Open Open Open Open Open Open Open Open Open
Boolean R/W Long Long Long Long Long R/W R/W R/W R/W R/W
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 102 of 330
Line Display
Summary
103
Methods
Common Open Close Claim Release CheckHealth ClearInput ClearOutput DirectIO Specific DisplayText DisplayTextAt ClearText ScrollText
SetDescriptor ClearDescriptors CreateWindow DestroyWindow RefreshWindow May Use After -Open Open Open & Claim Open, Claim, & Enable Not Supported Not Supported Open
Open, Claim, & Enable Open, Claim, & Enable Open, Claim, & Enable Open, Claim, & Enable Open, Claim, & Enable Open, Claim, & Enable Open, Claim, & Enable Open, Claim, & Enable Open, Claim, & Enable
Events
Name DataEvent DirectIOEvent ErrorEvent OutputCompleteEvent StatusUpdateEvent
May Occur After Not Supported Open Not Supported Not Supported Not Supported
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 103 of 330
104
Chapter 6
General Information
The Line Display Control OLE programmatic ID is OPOS.LineDisplay. s
Capabilities
The Line Display has the following capability: Supports text character display. The default mode (or perhaps only mode) of the display is character display output. The line display may also have the following additional capabilities: Supports windowing with marquee-like scrolling of the window. The display may support vertical or horizontal marquees, or both. Supports a waiting period between displaying characters, for a teletype effect. Supports character-level or device-level blinking. Supports one or more descriptors. Descriptors are small indicators with a fixed label, and are typically used to indicate transaction states such as item, total, and change. Supports device brightness control, with one or more levels of device dimming. All devices support brightness levels of normal and blank (at least through software support), but some devices also support one or more levels of dimming. The following capability is not addressed in this version of the OPOS specification: Support for graphical displays, where the line display is addressable by individual pixels or dots.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 104 of 330
Line Display
General Information
105
Model
The general model of a line display: Consists of one or more rows containing one or more columns of characters. The characters in the default character set will include at least one of the following, with a capability defining the character set: The digits through plus space, minus ( ), and period ( ). 0 9 - . The above set plus uppercase through A Z. All ASCII characters from 0x20 through 0x7F, which includes space, digits, uppercase, lowercase, and some special characters.
The rows and columns are numbered beginning with (0, 0) at the upper-left corner of the window. Window 0 is always defined as follows: Its viewport the portion of the display that is updated by the window covers the entire display. The size of the window matches the entire display.
Therefore, window 0, which is also called the device window, maps directly onto the display. Additional windows may be created. A created window has the following characteristics: Its viewport covers part or all of the display. The window may either match the size of the viewport, or it may be larger than the viewport in either the horizontal or vertical direction.In the second case, marquee scrolling of the window can be set. The window maintains its own values for rows and columns, current cursor row and column, cursor update flag, scroll type and format, and timers. All viewports behave transparently. If two viewports overlap, then the last character displayed at a position by either of the windows will be visible.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 105 of 330
106
Chapter 6
Display Modes
Immediate Mode In effect when MarqueeType is DISP_MT_NONE and InterCharacterWait is zero. If the window is bigger than the viewport, then only those characters which map into the viewport will be seen. Teletype Mode In effect when MarqueeType is DISP_MT_NONE and InterCharacterWait is not zero. DisplayText and DisplayTextAt requests are enqueued and processed in the order they are received. The InterCharacterWait timer specifies the time to wait between outputting each character. InterCharacterWait only applies to those characters within the viewport. Marquee Mode In effect when MarqueeType is not DISP_MT_NONE. The window must be bigger than the viewport. A marquee is typically initialized after entering Marquee Init Mode by setting MarqueeType to DISP_MT_INIT, then calling ClearText, DisplayText, and DisplayTextAt methods. Then, when MarqueeType is changed to an on value, Marquee On Mode is entered, and the marquee begins to be displayed in the viewport beginning at the start of the window (or end if the type is right or down). When the mode is changed from Marquee On Mode to off, the marquee stops in place. A subsequent transition from back to Marquee On Mode continues from the current position. When the mode is changed from Marquee On Mode to Marquee Init Mode, the marquee stops. Changes may be made to the window, then the window may be returned to Marquee On Mode to restart the marquee with the new data. It is illegal to use DisplayText, DisplayTextAt, ClearText, RefreshWindow, and ScrollText unless in Marquee Init Mode or marquees are off.
Device Sharing
The line display is an exclusive-use device. Its device sharing rules are: The application must claim the device before enabling it. The application must claim and enable the device before accessing some properties or calling methods that update the device. See the Summary table for precise usage prerequisites.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 106 of 330
Line Display
Properties
107
Properties
CapBlink Property
Syntax Remarks LONG CapBlink; Holds the character blink capability of the device. It may be one of the following: Value DISP_CB_NOBLINK Meaning Blinking is not supported. Value is 0.
DISP_CB_BLINKALL Blinking is supported. The entire contents of the display are either blinking or in a steady state. DISP_CB_BLINKEACHBlinking is supported. Each character may be individually set to blink or to be in a steady state. This property is initialized by the Open method.
CapBrightness Property
Syntax Remarks BOOL CapBrightness; If TRUE, the brightness control is supported; otherwise it is FALSE. This property is initialized by the Open method.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 107 of 330
108
Chapter 6
CapCharacterSet Property
Syntax Remarks LONG CapCharacterSet; Holds the default character set capability. It may be one of the following: Value Meaning
DISP_CCS_NUMERIC The default character set supports numeric data, plus space, minus, and period. DISP_CCS_ALPHA DISP_CCS_ASCII DISP_CCS_KANA The default character set supports uppercase alphabetic plus numeric, space, minus, and period. The default character set supports all ASCII characters between 20-hex and 7F-hex. The default character set supports partial code page 932, including ASCII characters 20-hex through 7F-hex and the Japanese Kana characters A1-hex through DF-hex, but excluding the Japanese Kanji characters. The default character set supports code page 932, including the Shift-JIS Kanji characters, Levels 1 and 2.
DISP_CCS_KANJI
The default character set may contain a superset of these ranges. The initial CharacterSet property may be examined for additional information. This property is initialized by the Open method.
CapDescriptors Property
Syntax Remarks BOOL CapDescriptors; If TRUE, then the display supports descriptors; otherwise it is FALSE. This property is initialized by the Open method.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 108 of 330
Line Display
Properties
109
CapHMarquee Property
Syntax Remarks BOOL CapHMarquee; If TRUE, the display supports horizontal marquee windows; otherwise it is FALSE. This property is initialized by the Open method.
CapICharWait Property
Syntax Remarks BOOL CapICharWait; If TRUE, the display supports intercharacter wait; otherwise it is FALSE. This property is initialized by the Open method.
CapVMarquee Property
Syntax Remarks BOOL CapVMarquee; If TRUE, the display supports vertical marquee windows; otherwise it is FALSE. This property is initialized by the Open method.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 109 of 330
110
Chapter 6
DISP_CS_WINDOWS The Windows ANSI character set. The value of this constant is 999. This is exactly equivalent to the Windows code page 1252. Range 1000 and higher Windows code page; matches one of the standard values.
This property is initialized to an appropriate value when the device is first enabled following the Open method. This value is guaranteed to support at least the set of characters specified by the CapCharacterSet capability. Return When this property is set, one of the following values is placed in the ResultCode property: Value OPOS_SUCCESS Other Values See Also Meaning The property was set successfully. See ResultCode.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 110 of 330
Line Display
Properties
111
CharacterSetList Property
Syntax Remarks BSTR CharacterSetList; A string of character set numbers. This property is initialized by the Open method. The string consists of ASCII numeric set numbers separated by commas. For example, if the string is 101,850,999, then the device supports a devicespecific character set, code page 850, and the Windows ANSI character set. See Also CharacterSet Property
Columns Property
Syntax Remarks LONG Columns; Holds the number of columns for this window. For window 0, Columns is the same as DeviceColumns. For other windows, it may be less or greater than DeviceColumns. This property is initialized to DeviceColumns by the Open method, and is updated when CurrentWindow is set and when CreateWindow or DestroyWindow are called. See Also Rows Property
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 111 of 330
112
Chapter 6
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 112 of 330
Line Display
Properties
113
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 113 of 330
114
Chapter 6
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 114 of 330
Line Display
Properties
115
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 115 of 330
116
Chapter 6
DeviceColumns Property
Syntax Remarks LONG DeviceColumns; Holds the number of columns on this device. This property is initialized by the Open method. See Also DeviceRows Property
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 116 of 330
Line Display
Properties
117
DeviceDescriptors Property
Syntax Remarks LONG DeviceDescriptors; Holds the number of descriptors on this device. If the capability CapDescriptors is TRUE, then DeviceDescriptors is non-zero; otherwise it is zero. This property is initialized by the Open method. See Also SetDescriptor Method; ClearDescriptors Method
DeviceRows Property
Syntax Remarks LONG DeviceRows; Holds the number of rows on this device. This property is initialized by the Open method. See Also DeviceColumns Property
DeviceWindows Property
Syntax Remarks LONG DeviceWindows; Holds the maximum window number supported by this device. A value of zero indicates that only the device window is supported, and that no windows may be created. This property is initialized by the Open method. See Also CurrentWindow Property
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 117 of 330
118
Chapter 6
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 118 of 330
Line Display
Properties
119
DISP_MF_PLACE
The value of MarqueeFormat is initialized to DISP_MF_WALK by the Open and CreateWindow methods, and is updated when CurrentWindow is set or DestroyWindow is called. MarqueeFormat is read when a transition is made to Marquee On Mode. It is not used when not in Marquee Mode.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 119 of 330
120
Chapter 6
When MarqueeFormat is DISP_MF_WALK, and a transition is made from Marquee Init Mode to Marquee On Mode, the following occurs: 1. Map the window to the viewport as follows: Marquee Type Window Viewport Left First Column = Last Column Up First Row = Last Row Right Last Column = First Column Down Last Row = First Row Fill the viewport with blanks. Continue to Step 2 without waiting. 2. Display the mapped portion of the window into the viewport, then wait MarqueeUnitWait milliseconds. Move the window mapping onto the viewport by one row or column in the marquee direction. Repeat until the viewport is full. 3. Refresh the viewport, then wait MarqueeUnitWait milliseconds. Move the window mapping by one row or column. Repeat until the the last row or column is scrolled into the viewport (in which case, omit the unit wait). 4. Wait MarqueeRepeatWait milliseconds. Then go to step back to Step 1. When MarqueeFormat is DISP_MF_PLACE, and a transition is made from Marquee Init Mode to Marquee On Mode, the following occurs: 1. Map the window to the viewport as follows: Viewport Marquee Type Window Left First Column = First Column Up First Row = First Row Right Last Column = Last Column Down Last Row = Last Row Fill the viewport with blanks. Continue to Step 2 without waiting. 2. Display a row or column into viewport, then wait MarqueeUnitWait milliseconds. Repeat until the viewport is full. 3. Move the window mapping onto the viewport by one row or column in the marquee direction, and refresh the viewport, then wait MarqueeUnitWait milliseconds. Repeat until the the last row or column is scrolled into the viewport (in which case, omit the unit wait). 4. Wait MarqueeRepeatWait milliseconds. Then go to step back to Step 1.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 120 of 330
Line Display
Properties
121
Return
When this property is set, one of the following values is placed in the ResultCode property: Value OPOS_SUCCESS OPOS_E_ILLEGAL Meaning The property was set successfully. An invalid property value was used, or attempted to change window 0.
See Also
MarqueeType Property; MarqueeUnitWait Property; MarqueeRepeatWait Property Marquee Walk format. - Assume a 2x20 display. - A Visual Basic application has a line display object named LD. - The application has performed: LD.CreateWindow(0, 3, 2, 3, 2, 5) 2x3 viewport of 2x5 window LD.DisplayText(0123456789, DISP_DT_NORMAL) The window contains:
0 0 1 1 2 3 4
Example 1
0 5
1 6
2 7
3 8
4 9
and the display contains (assuming the other windows are all blank):
0 0 1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
0 5
1 6
2 7
If the application performs the sequence: LD.MarqueeType = DISP_MT_INIT LD.MarqueeFormat = DISP_MF_WALK LD.DisplayTextAt(0, 4, AB, DISP_DT_NORMAL) the viewport is not changed (since we are in Marquee Init Mode), and the window becomes:
0 0 1 1 2 3 4
0 B
1 6
2 7
3 8
A 9
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 121 of 330
122
Chapter 6
If the application performs: LD.MarqueeType = DISP_MT_LEFT the window is not changed, and the viewport becomes:
0 0 1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
0 B
0 B
1 6
0 B
1 6
2 7
1 6
2 7
3 8
2 7
3 8
A 9
The marquee has scrolled to the end of the window. After MarqueeRepeatWait milliseconds, the marquee display restarts with the viewport changing to:
0 0 1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
0 B
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 122 of 330
Line Display
Properties
123
Example 2
Marquee Place format. - Assume a 2x20 display. - A Visual Basic application has a line display object named LD. - The application has performed: LD.CreateWindow(0, 3, 2, 3, 2, 5) 2x3 viewport of 2x5 window LD.DisplayText(0123456789, DISP_DT_NORMAL) The window contains:
0 0 1 1 2 3 4
0 5
1 6
2 7
3 8
4 9
and display contains (assuming the other windows are all blank):
0 0 1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
0 5
1 6
2 7
If the application performs the sequence: LD.MarqueeType = DISP_MT_INIT LD.MarqueeFormat = DISP_MF_PLACE LD.DisplayTextAt(0, 4, AB, DISP_DT_NORMAL) the viewport is not changed (since we are in Marquee Init Mode), and the window becomes:
0 0 1 1 2 3 4
0 B
1 6
2 7
3 8
A 9
If the application performs: LD.MarqueeType = DISP_MT_LEFT the window is not changed, and the viewport becomes:
0 0 1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
0 B
0 B
1 6
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 123 of 330
124
Chapter 6
0 B
1 6
2 7
From this point to the end of the window, the marquee action is the same as with marquee walking After MarqueeUnitWait milliseconds, the viewport is changed to:
0 0 1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
1 6
2 7
3 8
2 7
3 8
A 9
The marquee has scrolled to the end of the window. After MarqueeRepeatWait milliseconds, the marquee display restarts with the viewport changing to:
0 0 1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
0 B
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 124 of 330
Line Display
Properties
125
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 125 of 330
126
Chapter 6
DISP_MT_UP
DISP_MT_DOWN
DISP_MT_LEFT
DISP_MT_RIGHT
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 126 of 330
Line Display
Properties
127
A marquee is typically initialized after entering Marquee Init Mode by setting MarqueeType to DISP_MT_INIT, then calling ClearText and DisplayText(At) methods. Then, when MarqueeType is changed to an on value, Marquee On Mode is entered, and the marquee begins to be displayed in the viewport beginning at the start of the window (or end if the type is right or down). When the mode is changed from Marquee On Mode to off, the marquee stops in place. A subsequent transition from back to Marquee On Mode continues from the current position. When the mode is changed from Marquee On Mode to Marquee Init Mode, the marquee stops. Changes may be made to the window, then the window may be returned to Marquee On Mode to restart the marquee with the new data. MarqueeType is always DISP_MT_NONE for window 0 the device window. The value of MarqueeType is initialized to DISP_MT_NONE by the Open and CreateWindow methods, and is updated when CurrentWindow is set or DestroyWindow is called. Return When this property is set, one of the following values is placed in the ResultCode property: Value OPOS_SUCCESS OPOS_E_ILLEGAL See Also Meaning The property was set successfully. An invalid property value was used, or attempted to change window 0.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 127 of 330
128
Chapter 6
Rows Property
Syntax Remarks LONG Rows; Holds the number of rows for this window. For window 0, Rows is the same as DeviceRows. For other windows, it may be less or greater than DeviceRows. This property is initialized to DeviceRows by the Open method, and is updated when CurrentWindow is set or CreateWindow or DestroyWindow are called. See Also Columns Property
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 128 of 330
Line Display
Methods
129
Methods
ClearDescriptors Method
Syntax Remarks LONG ClearDescriptors (); Turns off all descriptors. This function is illegal if the capability CapDescriptors is FALSE. Return One of the following values is returned by the method and placed in the ResultCode property: Value OPOS_SUCCESS OPOS_E_ILLEGAL Other Values See Also Meaning The method was successful. The device does not support descriptors. See ResultCode.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 129 of 330
130
Chapter 6
ClearText Method
Syntax Remarks LONG ClearText (); Clears the current window to blanks, sets CursorRow and CursorColumn to zero, and resynchronizes the beginning of the window with the start of the viewport. If in Immediate Mode or Teletype Mode, the viewport is also cleared immediately. If in Marquee Init Mode, the viewport is not changed. If in Marquee On Mode, ClearText is illegal. Return One of the following values is returned by the method and placed in the ResultCode property: Value OPOS_SUCCESS OPOS_E_ILLEGAL Other Values See Also DisplayText Method Meaning The method was successful. In Marquee On Mode. See ResultCode.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 130 of 330
Line Display
Methods
131
CreateWindow Method
Syntax LONG CreateWindow (LONG ViewportRow, LONG ViewportColumn, LONG ViewportHeight, LONG ViewportWidth, LONG WindowHeight, LONG WindowWidth); Parameter ViewportRow ViewportColumn ViewportHeight ViewportWidth WindowHeight WindowWidth Remarks Description The viewport start device row. s The viewport start device column. s The number of device rows in the viewport. The number of device columns in the viewport. The number of rows in the window. The number of columns in the window.
Creates a viewport over the portion of the display given by the first four parameters. The window size is given by the last two parameters. Valid window row values range from (0) to (WindowHeight-1) and column values range from (0) to (WindowWidth-1). The window size must be at least as large as the viewport size. The window size may be larger than the viewport size in one direction. Using the window marquee properties MarqueeType, MarqueeFormat, MarqueeUnitWait, and MarqueeRepeatWait, such a window may be continuously scrolled in a marquee fashion. When successful, CreateWindow sets the CurrentWindow property to the window number assigned to this window. The following properties are maintained for each window, and are initialized as given: Property Rows Columns CursorRow CursorColumn CursorUpdate MarqueeType Value Set to WindowHeight. Set to WindowWidth. Set to 0. Set to 0. Set to TRUE. Set to DISP_MT_NONE.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 131 of 330
132
Chapter 6
One of the following values is returned by the method and placed in the ResultCode property: Value OPOS_SUCCESS OPOS_E_ILLEGAL Other Values Meaning The method was successful. One or more parameters are out of their valid ranges, or all available windows are already in use. See ResultCode.
See Also
DestroyWindow Method
Syntax Remarks LONG DestroyWindow (); Destroys the current window. The characters displayed in its viewport are not changed. CurrentWindow is set to window 0. The device window and the associated window properties are updated. Return One of the following values is returned by the method and placed in the ResultCode property: Value OPOS_SUCCESS OPOS_E_ILLEGAL Other Values See Also Meaning The method was successful. The current window is 0. This window may not be destroyed. See ResultCode.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 132 of 330
Line Display
Methods
133
DisplayText Method
Syntax LONG DisplayText (BSTR Data, LONG Attribute); Parameter Data Attribute Remarks Description The string of characters to display. The display attribute for the text. Must be either DISP_DT_NORMAL or DISP_DT_BLINK.
The characters in Data are processed beginning at the location specified by CursorRow and CursorColumn, and continue in succeeding columns. Character processing continues to the next row when the end of a window row is reached. If the end of the window is reached with additional characters to be processed, then the window is scrolled upward by one row and the bottom row is set to blanks. If CursorUpdate is TRUE, then CursorRow and CursorColumn are updated to point to the character following the last character of Data. Note Scrolling will not occur when the last character of Data is placed at the end of a row. In this case, when CursorUpdate is TRUE, then CursorRow is set to the row containing the last character, and CursorColumn is set to Columns (that is, to one more than the final character of the row). This stipulation ensures that the display does not scroll when a character is written into its last position. Instead, the Control will wait until another character is written before scrolling the window. The operation of DisplayText (and DisplayTextAt) varies for each mode: Immediate Mode (MarqueeType = DISP_MT_NONE and InterCharacterWait = 0): Updates the window and viewport immediately. Teletype Mode (MarqueeType = DISP_MT_NONE and InterCharacterWait not = 0): The Data is enqueued. Enqueued data requests are processed in order (typically by another thread within the Control), updating the window and viewport using a wait of InterCharacterWait milliseconds after each character is sent to the viewport. Marquee Init Mode (MarqueeType = DISP_MT_INIT): Updates the window, but doesn change the viewport. t Marquee On Mode (MarqueeType not = DISP_MT_INIT): Illegal.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 133 of 330
134
Chapter 6
If the capability CapBlink is DISP_CB_NOBLINK, then Attribute is ignored. If it is DISP_CB_BLINKALL, then the entire display will blink when one or more characters have been set to blink. If it is DISP_CB_BLINKEACH, then only those characters displayed with the blink attribute will blink. Special character values within Data are: Value New Line (13) Line Feed (10) Meaning Change the next character output position to the s beginning of the current row. Change the next character output position to the s beginning of the next row. Scroll the window if the current row is the last row of the window.
Return
One of the following values is returned by the method and placed in the ResultCode property: Value OPOS_SUCCESS OPOS_E_ILLEGAL Other Values Meaning The method was successful. Attribute is illegal, or the display is in Marquee On Mode. See ResultCode.
See Also
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 134 of 330
Line Display
Methods
135
DisplayTextAt Method
Syntax LONG DisplayTextAt (LONG Row, LONG Column, BSTR Data, LONG Attribute); Parameter Row Column Data Attribute Remarks Description The start row for the text. The start column for the text. The string of characters to display. The display attribute for the text. Must be either DISP_DT_NORMAL or DISP_DT_BLINK.
The characters in Data are processed beginning at the window location specified by the Row and Column parameters, and continuing in succeeding columns. This method has the same effect as setting the CursorRow to Row, setting CursorColumn to Column, and calling the DisplayText method.
Return
One of the following values is returned by the method and placed in the ResultCode property: Value OPOS_SUCCESS OPOS_E_ILLEGAL Other Values Meaning The method was successful. Row or Column are out or range, Attribute is illegal, or in Marquee On Mode. See ResultCode.
See Also
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 135 of 330
136
Chapter 6
RefreshWindow Method
Syntax LONG RefreshWindow (LONG Window); The Window parameter specifies which window must be refreshed. Remarks Changes the current window to Window, then redisplays its viewport. Neither the mapping of the window to its viewport nor the window cursor position is changed. s This function may be used to restore a window after another window has overwritten some of its viewport. Return One of the following values is returned by the method and placed in the ResultCode property: Value OPOS_SUCCESS OPOS_E_ILLEGAL Other Values Meaning The method was successful. Window is larger than DeviceWindows or has not been created, or in Marquee On Mode. See ResultCode.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 136 of 330
Line Display
Methods
137
ScrollText Method
Syntax LONG ScrollText (LONG Direction, LONG Units); The Direction parameter indicates the scrolling direction, which may be one of the following: Value DISP_ST_UP DISP_ST_DOWN DISP_ST_LEFT DISP_ST_RIGHT Meaning Scroll the window up. Scroll the window down. Scroll the window left. Scroll the window right.
The Units parameter indicates the number of columns or rows to scroll. Remarks Scroll the current window. ScrollText is only legal in Immediate Mode. If the window size for the scroll direction matches its viewport size, then the window data is scrolled, the last Units rows or columns are set to spaces, and the viewport is updated. If the window size for the scroll direction is larger than its viewport, then the window data is not changed. Instead, the mapping of the window into the viewport is moved in the specified direction. The window data is not altered, but the viewport is updated. If scrolling by Units would go beyond the beginning of the window data, then the window is scrolled so that the first viewport row or column contains the first window row or column. If scrolling by Units would go beyond the end of the window data, then the window is scrolled so that the last viewport row or column contains the last window row or column. Return One of the following values is returned by the method and placed in the ResultCode property: Value OPOS_SUCCESS OPOS_E_ILLEGAL Other Values See Also DisplayText Method Meaning The method was successful. Direction is illegal, or in Teletype Mode or Marquee Mode. See ResultCode.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 137 of 330
138
Chapter 6
Example 1
- Assume a 2x20 display. - A Visual Basic application has a line display object named LD. - The application has performed: LD.CreateWindow(0, 3, 2, 4, 2, 4) 2x4 viewport of 2x4 window LD.DisplayText(abcdABCD, DISP_DT_NORMAL) The window contains:
0 0 1 1 2 3
a A
b B
c d C D
a A
b B
c d C D
c d C D
c d C D
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 138 of 330
Line Display
Methods
139
Example 2
- Assume a 2x20 display. - A Visual Basic application has a line display object named LD. - The application has performed: LD.CreateWindow(0, 3, 2, 4, 2, 8) 2x4 viewport of 2x8 window LD.DisplayText(abcdefghABCDEFGH, DISP_DT_NORMAL) The window contains:
0 0 1 1 2 3 4 5 6 7
a A
b B
c d C D
e E
f F
g h G H
a A
b B
c d C D
If the method LD.ScrollText (DISP_ST_LEFT, 2) is called, the window data is unchanged, and the viewport becomes:
0 0 1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
c d C D
e E
f F
If the method LD.ScrollText (DISP_ST_UP, 1) is called next, the window data becomes:
0 0 1 1 2 3 4 5 6 7
C D
G H
C D
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 139 of 330
140
Chapter 6
SetDescriptor Method
Syntax LONG SetDescriptor (LONG Descriptor, LONG Attribute); The Descriptor parameter indicates which descriptor to change. The value may range between zero and one less than DeviceDescriptors. The Attribute parameter indicates the attribute for the descriptor. Values are: Value DISP_SD_ON DISP_SD_BLINK DISP_SD_OFF Remarks Meaning Turns the descriptor on. Sets the descriptor to blinking. Turns the descriptor off.
Sets the state of one of the descriptors, which are small indicators with a fixed label. This function is illegal if the capability CapDescriptors is FALSE. The device and its Service Object determine the mapping of Descriptor to its descriptors.
Return
One of the following values is returned by the method and placed in the ResultCode property: Value OPOS_SUCCESS OPOS_E_ILLEGAL Other Values Meaning The method was successful. The device does not support descriptors, or one of the parameters contained an illegal value. See ResultCode.
See Also
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 140 of 330
C H A P T E R
Boolean R/W Boolean R/W Boolean R/W Long Long Long Long String Long String Long String String R R R R R R R R R R
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 141 of 330
142
Chapter 7
Specific CapValidationDevice RawData AccountNumber Amount BankNumber EPC SerialNumber TransitNumber CheckType CountryCode
Type Boolean String String String String String String String Long Long
Access R R R R R R R R R R
Initialized After Open Open Open Open Open Open Open Open Open Open
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 142 of 330
Summary
143
Methods
Common Open Close Claim Release CheckHealth ClearInput ClearOutput DirectIO Specific BeginInsertion EndInsertion BeginRemoval EndRemoval Open, Claim, & Enable Open, Claim, & Enable Open, Claim, & Enable Open, Claim, & Enable May Use After -Open Open Open & Claim Open, Claim, & Enable Open & Claim Not Supported Open
Events
Name DataEvent DirectIOEvent ErrorEvent OutputCompleteEvent StatusUpdateEvent May Occur After Open, Claim, & Enable Open Open, Claim, & Enable Not Supported Not Supported
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 143 of 330
144
Chapter 7
General Information
The MICR Control OLE programmatic ID is OPOS.MICR. s
Capabilities
The MICR Control has the following minimal set of capabilities: Reads magnetic ink characters from a check. Has programmatic control of check insertion, reading, and removal. For some MICR devices, this will require no processing in the Control since the device may automate many of these functions. Parses the MICR data into the output properties provided by this Control. This release of OPOS specifies parsing of fields specified in the ANSI MICR standard used in North America. For other countries, the application may need to parse the MICR data from the data in RawData. The MICR may have the following additional capability: The MICR device may be physically attached to or incorporated into a check validation print device. If this is the case, once a check is inserted via MICR Control methods, the check can still be used by the Printer Control prior to check removal. Some MICR devices support exception tables, which cause non-standard parsing of the serial number for specific check routing numbers. Exception tables are not directly supported by this OPOS release. However, a Service Object may choose to support them, and could assign registry entries under its device name key to define the exception entries. (See the appendix OPOS Registry Usage, page 301.)
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 144 of 330
General Information
145
Model
The MICR Control follows the general Input Model (page 19). One point of difference is that the MICR Control requires the execution of methods to insert and remove the check for processing. Therefore, this Control requires more than simply setting the DataEventEnabled property to TRUE in order to receive data. The basic model is as follows: The MICR Control is opened, claimed, and enabled. When an application wishes to perform a MICR read, the application will call the BeginInsertion method, specifying a timeout value. This will result in the device being made ready to have a check inserted. The method will either return successfully if the check has been inserted before the timeout limit was expired, or a timeout status will be returned. In the event of a timeout, the MICR device will remain in a state allowing a check to be inserted while the application provides any additional prompting required and then reissues the BeginInsertion method. Once a check is inserted, the method returns successfully and the application will call the EndInsertion method, which will result in the MICR device being taken out of check insertion mode and the check, if present, actually being read. When the application sets the DataEventEnabled property to TRUE, the data will be sent to the application via the DataEvent. Following the DataEvent, the application should query the CapValidationDevice property to determine if validation printing can be performed on the check prior to check removal. If this property is true, the application may call the Printer Control BeginInsertion and EndInsertion s methods. This will position the check for validation printing. The Printer Control validation printing methods can then be used to perform validation s printing. When validation printing is complete, the application should call the Printer Control removal methods to remove the check. s Once the check is no longer needed in the device, the application must call the BeginRemoval method, also specifying a timeout value. This method will either return successfully if the check has been removed, or timeout if the check has not been removed. If a timeout is returned, the application may perform any additional prompting prior to calling the method again. Once the check is removed, the application should call the EndRemoval method to take the MICR device out of removal mode.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 145 of 330
146
Chapter 7
Many models of MICR devices do not require any check handling processing from the application. Such devices may always be capable of receiving a check and require no commands to actually read and eject the check. For these types of MICR devices, the BeginInsertion, EndInsertion, BeginRemoval and EndRemoval methods simply return an OPOS_SUCCESS status, and the Control will buffer the data until the DataEventEnabled property is set to TRUE. However, applications should still use these methods to ensure application portability across different MICR devices.
Device Sharing
The MICR is an exclusive-use device, as follows: The application must claim the device before enabling it. The application must claim and enable the device before the device begins reading input, or before calling methods that manipulate the device. See the Summary table for precise usage prerequisites.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 146 of 330
147
Amount
On-Us Dash
o -
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 147 of 330
148
Chapter 7
Properties
AccountNumber Property
Syntax Remarks BSTR AccountNumber; A string containing the account number parsed from the most recently read MICR data. This account number will not include a check serial number if a check serial number is able to be separately parsed, even if the check serial number is embedded in the account number portion of the Usfield. On If the account number cannot be identified successfully, the string will be empty (). Its value is set prior to a DataEvent being sent to the application. See Also RawData Property; DataEvent
Amount Property
Syntax Remarks BSTR Amount; A string containing the amount field parsed from the most recently read MICR data. The amount field on a check consists of ten digits bordered by Amount symbols. All non space digits will be represented in the test string including leading 0 s. If the amount is not present, the string will be empty (). Its value is set prior to a DataEvent being sent to the application. See Also RawData Property; DataEvent
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 148 of 330
Properties
149
BankNumber Property
Syntax Remarks BSTR BankNumber; A string containing the bank number portion of the transit field parsed from the most recently read MICR data. The bank number is contained in digits 5 through 8 of the transit field. If the bank number or transit field is not present or successfully identified, the string will be empty (). Its value is set prior to a DataEvent being sent to the application. See Also RawData Property; TransitNumber Property; DataEvent
CapValidationDevice Property
Syntax Remarks BOOL CapValidationDevice; Indicates if this device also performs validation printing via the POS Printer Control slip station. s If its value is TRUE, a check does not have to be removed from the MICR device prior to performing validation printing. For devices that are both a MICR device as well as a POS Printer, the device will automatically position the check for validation printing after successfully performing a MICR read. Either the MICR Control or the POS Printer Control BeginRemoval and EndRemoval methods s s may be called to remove the check once processing is complete. This property is initialized by the Open method.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 149 of 330
150
Chapter 7
CheckType Property
Syntax Remarks LONG CheckType; A number that represents the type of check parsed from the most recently read MICR data. Values are: Value Meaning
MICR_CT_PERSONAL The check is a personal check. MICR_CT_BUSINESS The check is a business or commercial check. MICR_CT_UNKNOWNUnknown type of check. Its value is set prior to a DataEvent being sent to the application. See Also RawData Property; DataEvent
CountryCode Property
Syntax Remarks LONG CountryCode; A number that represents the country of origin of the check parsed from the most recently read MICR data. Values are: Value MICR_CC_USA MICR_CC_CANADA MICR_CC_MEXICO Meaning The check is from America. The check is from Canada. The check is from Mexico.
MICR_CC_UNKNOWNCheck origination is unknown. Its value is set prior to a DataEvent being sent to the application. See Also RawData Property; DataEvent
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 150 of 330
Properties
151
EPC Property
Syntax Remarks BSTR EPC; A string containing the Extended Processing Code (EPC) field parsed from the most recently read MICR data. The string will contain a single character 0 though 9 if the field is present. If not, the string will be empty (). Its value is set prior to a DataEvent being sent to the application. See Also RawData Property; DataEvent
RawData Property
Syntax Remarks BSTR RawData; A string containing the MICR data from the most recent MICR read. The string contains any of the 15 MICR characters with appropriate substitution to represent non-ASCII characters (see MICR Character Substitution, page 147). No parsing or special processing is done to the data returned in this string. A sample value may look like the following:
2t123456789t123 4 567890o 123 a0000001957a
Note that the property value will include spaces to represent spaces in the MICR data. Its value is set prior to a DataEvent being sent to the application. See Also AccountNumber Property; Amount Property; BankNumber Property; CheckType Property; CountryCode Property; EPC Property; SerialNumber Property; TransitNumber Property; DataEvent
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 151 of 330
152
Chapter 7
SerialNumber Property
Syntax Remarks BSTR SerialNumber; A string containing the serial number of the check parsed from the most recently read MICR data. If the serial number cannot be successfully parsed, the value of this property will be empty (). Its value is set prior to a DataEvent being sent to the application. See Also RawData Property; DataEvent
TransitNumber Property
Syntax Remarks BSTR TransitNumber; A string containing the transit field of the check parsed from the most recently read MICR data. The transmit number consists of all the characters read between the Transit symbols on the check. It is a nine character string. Its value is set prior to a DataEvent being sent to the application. See Also RawData Property; DataEvent
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 152 of 330
Methods
153
Methods
BeginInsertion Method
Syntax LONG BeginInsertion (LONG Timeout); The Timeout parameter gives the number of milliseconds before failing the method. Remarks Called to initiate check insertion processing. When called, the MICR is made ready to receive a check by opening the MICR s check handling jaws or activating a MICR check insertion mode. This method s is paired with the EndInsertion method for controlling check insertion. For MICR devices that do not require this sort of processing, these methods will always return OPOS_SUCCESS. However, the application should still use these methods to ensure application portability across different MICR devices. If the MICR device cannot be placed into insertion mode, an error is returned to the application. Otherwise, the Control continues to monitor check insertion until either: The check is successfully inserted. In this case, the Control returns an OPOS_SUCCESS status. The check is not inserted before Timeout milliseconds have elapsed, or an error is reported by the MICR device. In this case, the Control either returns OPOS_E_TIMEOUT or another error. The MICR device remains in check insertion mode. This allows an application to perform some user interaction and reissue the BeginInsertion method without altering the MICR check handling mechanism. Return One of the following values is returned by the method and placed in the ResultCode property: Value OPOS_SUCCESS OPOS_E_BUSY OPOS_E_TIMEOUT Other Values See Also Meaning The method was initiated successfully. If the MICR is a combination device, the peer device may be busy. The specified time has elapsed without the check being properly inserted. See ResultCode.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 153 of 330
154
Chapter 7
BeginRemoval Method
Syntax LONG BeginRemoval (LONG Timeout); The Timeout property gives the number of milliseconds before failing the method. Remarks Called to initiate check removal processing. When called, the MICR is made ready to remove a check, by opening the MICR s check handling jaws or activating a MICR check ejection mode. This method is s paired with the EndRemoval method for controlling check removal. For MICR devices that do not require this sort of processing, these methods will always return OPOS_SUCCESS. However, the application should still use these methods to ensure application portability across different MICR devices. If the MICR device cannot be placed into removal or ejection mode, an error is returned to the application. Otherwise, the Control continues to monitor check removal until either: The check is successfully removed. In this case, the Control returns an OPOS_SUCCESS status. The check is not removed before Timeout milliseconds have elapsed, or an error is reported by the MICR device. In this case, the Control either returns OPOS_E_TIMEOUT or another error. The MICR device remains in check removal mode. This allows an application to perform some user interaction and reissue the BeginRemoval method without altering the MICR check handling mechanism. Return One of the following values is returned by the method and placed in the ResultCode property: Value OPOS_SUCCESS OPOS_E_BUSY OPOS_E_TIMEOUT Other Values See Also Meaning The method was initiated successfully. If the MICR is a combination device, the peer device may be busy. The specified time has elapsed without the check being properly removed. See ResultCode.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 154 of 330
Methods
155
EndInsertion Method
Syntax Remarks LONG EndInsertion (); Called to end check insertion processing. When called, the MICR is taken out of check insertion mode. If a check is detected in the device, a successful status of OPOS_SUCCESS is returned to the application. If no check is present, an extended error status OPOS_EMICR_NOCHECK is returned. Upon completion of this method, the check will be read by the MICR device, and data will be available as soon as the DataEventEnabled property is set to TRUE. This allows an application to prompt the user prior to calling this method to ensure that the form is correctly positioned. This method is paired with the BeginInsertion method for controlling check insertion. For MICR devices that do not require this sort of processing, these methods will always return OPOS_SUCCESS. However, the application should still use these methods to ensure application portability across different MICR devices. Return One of the following values is returned by the method and placed in the ResultCode property: Value OPOS_SUCCESS OPOS_E_ILLEGAL Meaning The method was initiated successfully. The printer is not in check insertion mode.
OPOS_E_EXTENDED ResultCodeExtended = OPOS_EMICR_NOCHECK: The device was taken out of insertion mode without a check being inserted. Other Values See Also See ResultCode.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 155 of 330
156
Chapter 7
EndRemoval Method
Syntax Remarks LONG EndRemoval (); Called to end check removal processing. When called, the MICR is taken out of check removal or ejection mode. If no check is detected in the device, a successful status of OPOS_SUCCESS is returned to the application. If a check is present, an extended error status OPOS_EMICR_CHECK is returned. This method is paired with the BeginRemoval method for controlling check removal. For MICR devices that do not require this sort of processing, these methods will always return OPOS_SUCCESS. However, the application should still use these methods to ensure application portability across different MICR devices. Return One of the following values is returned by the method and placed in the ResultCode property: Value OPOS_SUCCESS OPOS_E_ILLEGAL Meaning The method was initiated successfully. The printer is not in check removal mode.
OPOS_E_EXTENDED ResultCodeExtended = OPOS_EMICR_CHECK: The device was taken out of removal mode while a check is still present. Other Values See Also See ResultCode.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 156 of 330
Events
157
Events
DataEvent Event
Syntax VOID DataEvent (LONG Status); The Status parameter contains zero. Remarks Fired when MICR data is read from a check. Before firing this event, the MICR Control updates the RawData property and attempts to parse this data into the MICR data fields. See Also RawData Property; AccountNumber Property; Amount Property; BankNumber Property; CheckType Property; CountryCode Property; EPC Property; SerialNumber Property; TransitNumber Property
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 157 of 330
158
Chapter 7
ErrorEvent Event
Syntax void ErrorEvent (LONG ResultCode, LONG ResultCodeExtended, LONG ErrorLocus, LONG* pErrorResponse); Parameter ResultCode ResultCodeExtended ErrorLocus pErrorResponse Description Result code causing the error event. See ResultCode for values. Extended result code causing the error event. See ResultCodeExtended for values. Location of the error. See values below. Pointer to the error event response. See values below.
The ErrorLocus parameter may be one of the following: Value OPOS_EL_INPUT Meaning Error occurred while gathering or processing event-driven input. No input data is available.
OPOS_EL_INPUT_DATA Error occurred while gathering or processing eventdriven input, and some previously buffered data is available. The contents at the location pointed to by the pErrorResponse parameter is preset to a default value, based on the ErrorLocus. The application may change it to one of the following: Value OPOS_ER_CLEAR Meaning Clear the buffered input data. The error state is exited. Default when locus is OPOS_EL_INPUT.
OPOS_ER_CONTINUEINPUT Use only when locus is OPOS_EL_INPUT_DATA. Acknowledges the error and directs the Control to continue processing . The Control remains in the error state and will fire additional DataEvents as directed by the DataEventEnabled property. When all input has been fired and the DataEventEnabled property is again set to TRUE, then another ErrorEvent is fired with locus
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 158 of 330
Events
159
OPOS_EL_INPUT. Default when locus is OPOS_EL_INPUT_DATA. Remarks Fired when an error is detected while trying to read MICR data. Input error events are not fired until the DataEventEnabled property is TRUE, so that proper application sequencing occurs. See Also Status, Result Code, and State Model
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 159 of 330
C H A P T E R
Summary
Properties
Common CheckHealthText Claimed DataEventEnabled DeviceEnabled FreezeEvents OutputID ResultCode ResultCodeExtended State ControlObjectDescription ControlObjectVersion ServiceObjectDescription ServiceObjectVersion DeviceDescription DeviceName Type String Boolean Access R R Initialized After Open Open Open Open & Claim Open Not Supported -Open ---Open Open Open Open
Boolean R/W Boolean R/W Boolean R/W Long Long Long Long String Long String Long String String R R R R R R R R R R
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 161 of 330
162
Chapter 8
Specific CapISO CapJISOne CapJISTwo TracksToRead DecodeData ParseDecodeData Track1Data Track2Data Track3Data AccountNumber ExpirationDate Title FirstName MiddleInitial Surname Suffix ServiceCode Track1DiscretionaryData Track2DiscretionaryData
Access R R R R/W
Initialized After Open Open Open Open Open Open Open Open Open Open Open Open Open Open Open Open Open Open Open
Boolean R/W Boolean R/W String String String String String String String String String String String String String R R R R R R R R R R R R R
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 162 of 330
Summary
163
Methods
Common Open Close Claim Release CheckHealth ClearInput ClearOutput DirectIO May Use After -Open Open Open & Claim Open, Claim, & Enable Open, Claim, & Enable Not Supported Open
Events
Name DataEvent DirectIOEvent ErrorEvent OutputCompleteEvent StatusUpdateEvent May Occur After Open, Claim, & Enable Open Open, Claim, & Enable Not Supported Not Supported
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 163 of 330
164
Chapter 8
General Information
The MSR Control OLE programmatic ID is OPOS.MSR. s
Capabilities
The MSR Control has the following minimal set of capabilities: Reads encoded data from a magnetic stripe. Data is obtainable from any combination of tracks 1, 2, and 3. The alphanumeric data bytes may be decoded into their corresponding alphanumeric codes. Furthermore, this decoded alphanumeric data may be divided into specific fields accessed as device properties. The MSR may have the following additional capability: Support for specific card types: ISO, JIS Type I, and/or JIS Type 2.
Model
Three writable properties control MSR data handling: The TracksToRead property controls which combination of the three tracks should be read. It is not an error to swipe a card containing less than this set of tracks. Rather, this property should be set to the set of tracks that the Application may need to process. The DecodeData property controls decoding of track data from raw format into displayable data. The ParseDecodeData property controls parsing of decoded data into fields, based on common MSR standards.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 164 of 330
General Information
165
The MSR Control follows the general input model for event driven input: When input is received by the Control due to a card swipe, the Control generates a DataEvent, passing information about the swipe in the parameter Data. The actual card data is available by accessing the Track1Data, Track2Data, and Track3Data properties of the device. Based on applicationsettable properties, some data may be parsed into other properties. Just before firing the DataEvent, the Control disables further data events by setting the DataEventEnabled property to FALSE. This causes buffering of further input data at the Control while the application processes the current input and associated properties. When the application has finished the current input and is ready for more data, it reenables events by setting DataEventEnabled to TRUE. All buffered input may be deleted by calling the ClearInput method.
Device Sharing
The MSR is an exclusive-use device, as follows: The application must claim the device before enabling it. The application must claim and enable the device before the device begins reading input, or before calling methods that manipulate the device. See the Summary table for precise usage prerequisites.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 165 of 330
166
Chapter 8
Properties
AccountNumber Property
Syntax Remarks BSTR AccountNumber; The account number obtained from the most recently swiped card. Set to the empty string if: The field was not included in the track data obtained, or, The track data format was not one of those listed in the ParseDecodeData property section of this document, or, ParseDecodeData is FALSE.
CapISO Property
Syntax Remarks BOOL CapISO; If TRUE, the MSR device supports ISO cards; otherwise it is FALSE. This property is initialized by the Open method.
CapJISOne Property
Syntax Remarks BOOL CapJISOne; If TRUE, the MSR device supports JIS Type-I cards; otherwise it is FALSE. JIS-I cards are a superset of ISO cards. Therefore, if CapJISOne is TRUE, then it is implied that CapISO is also TRUE. This property is initialized by the Open method.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 166 of 330
Properties
167
CapJISTwo Property
Syntax Remarks BOOL CapJISTwo; If TRUE, the MSR device supports JIS Type-II cards; otherwise it is FALSE. This property is initialized by the Open method.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 167 of 330
168
Chapter 8
This property is initialized to TRUE by the Open method. Setting this property to FALSE automatically sets the ParseDecodeData property to FALSE. Return When this property is set, the following value is placed in the ResultCode property: Value OPOS_SUCCESS See Also Meaning The property was set successfully.
ParseDecodeData Property
ExpirationDate Property
Syntax Remarks BSTR ExpirationDate; The expiration date obtained from the most recently swiped card. Set to the empty string if: The field was not included in the track data obtained, or, The track data format was not one of those listed in the ParseDecodeData property section of this document, or, ParseDecodeData is FALSE.
FirstName Property
Syntax Remarks BSTR FirstName; The first name obtained from the most recently swiped card. Set to the empty string if: The field was not included in the track data obtained, or, The track data format was not one of those listed in the ParseDecodeData property section of this document, or, ParseDecodeData is FALSE.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 168 of 330
Properties
169
MiddleInitial Property
Syntax Remarks BSTR MiddleInitial; The middle initial obtained from the most recently swiped card. Set to the empty string if: The field was not included in the track data obtained, or, The track data format was not one of those listed in the ParseDecodeData property section of this document, or, ParseDecodeData is FALSE.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 169 of 330
170
Chapter 8
DecodeData Property; Surname Property; Suffix Property; AccountNumber Property; FirstName Property; MiddleInitial Property; Title Property; ExpirationDate Property; ServiceCode Property; Track1DiscretionaryData Property; Track2DiscretionaryData Property
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 170 of 330
Properties
171
ServiceCode Property
Syntax Remarks BSTR ServiceCode; The service code obtained from the most recently swiped card. Set to the empty string if: The field was not included in the track data obtained, or, The track data format was not one of those listed in the ParseDecodeData property section of this document, or, ParseDecodeData is FALSE.
Suffix Property
Syntax Remarks BSTR Suffix; The suffix obtained from the most recently swiped card. Set to the empty string if: The field was not included in the track data obtained, or, The track data format was not one of those listed in the ParseDecodeData property section of this document, or, ParseDecodeData is FALSE.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 171 of 330
172
Chapter 8
Surname Property
Syntax Remarks BSTR Surname; The surname obtained from the most recently swiped card. Set to the empty string if: The field was not included in the track data obtained, or, The track data format was not one of those listed in the ParseDecodeData property section of this document, or, ParseDecodeData is FALSE.
Title Property
Syntax Remarks BSTR Title; The title obtained from the most recently swiped card. Set to the empty string if: The field was not included in the track data obtained, or, The track data format was not one of those listed in the ParseDecodeData property section of this document, or, ParseDecodeData is FALSE.
Track1Data Property
Syntax Remarks BSTR Track1Data; Contains either the track 1 data from the previous card swipe or an empty string. The data returned by this property may also be parsed into other properties when the ParseDecodeData property is set. An empty string indicates that the track was not accessible. See Also TracksToRead Property
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 172 of 330
Properties
173
Track1DiscretionaryData Property
Syntax Remarks BSTR Track1DiscretionaryData; The track 1 discretionary data obtained from the most recently swiped card. Set to the empty string if: The field was not included in the track data obtained, or, The track data format was not one of those listed in the ParseDecodeData property section of this document, or, ParseDecodeData is FALSE. The amount of data contained in this property varies widely depending upon the format of the track 1 data.
Track2Data Property
Syntax Remarks BSTR Track2Data; Contains either the track 2 data from the previous card swipe or an empty string. The data returned by this property may also be parsed into other properties when the ParseDecodeData property is set. An empty string indicates that the track was not accessible. See Also TracksToRead Property
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 173 of 330
174
Chapter 8
Track2DiscretionaryData Property
Syntax Remarks BSTR Track2DiscretionaryData; The track 2 discretionary data obtained from the most recently swiped card. Set to the empty string if: The field was not included in the track data obtained, or, The track data format was not one of those listed in the ParseDecodeData property section of this document, or, ParseDecodeData is FALSE.
Track3Data Property
Syntax Remarks BSTR Track3Data; Contains either the track 3 data from the previous card swipe or an empty string. An empty string indicates that the track was not accessible. See Also TracksToRead Property
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 174 of 330
Properties
175
Decreasing the required number of tracks may provide a greater swipe success rate and somewhat greater responsiveness by removing the processing for unaccessed data. TracksToRead does not indicate a capability of the MSR hardware unit, but instead is an application configurable property representing which track(s) will have their data obtained, potentially decoded, and returned if possible. Cases such as an ISO type card being swiped through a JIS-II read head, cards simply not having data for particular tracks, and other factors may preclude desired data from being obtained. This property is initialized to MSR_TR_1_2_3 by the Open method.. Return When this property is set, one of the following values is placed in the ResultCode property: Value OPOS_SUCCESS OPOS_E_ILLEGAL Meaning The property was set successfully. An invalid track value was specified.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 175 of 330
176
Chapter 8
Events
DataEvent Event
Syntax VOID DataEvent (LONG Status); The Status parameter is divided into four bytes with three of the bytes representing information about the three tracks, while the fourth byte is unused. The diagram below indicates how the parameter Status is divided:
High Word High Byte Unused Low Byte Track 3 Track 2 Low Word High Byte Low Byte Track 1
A value of zero (0) for a track byte means that no data was obtained from the swipe for that particular track. This might be due to the hardware device simply not having a read head for the track, or perhaps the application intentionally precluded incoming data from the track via the TracksToRead property. A value greater than zero (> 0) indicates the length in bytes of the corresponding TrackxData property. Remarks Fired to indicate input data from the device to the application. Before firing the event, the swiped data is placed into Track1Data, Track2Data, and Track3Data. If DecodeData is TRUE, then this data is decoded. If ParseDecodedData is TRUE, then the data is parsed into several additional properties.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 176 of 330
Events
177
ErrorEvent Event
Syntax void ErrorEvent (LONG ResultCode, LONG ResultCodeExtended, LONG ErrorLocus, LONG* pErrorResponse); Parameter ResultCode ResultCodeExtended ErrorLocus pErrorResponse Description Result code causing the error event. See values below. Extended result code causing the error event. See values below. Location of the error. See values below. Pointer to the error event response. See values below.
OPOS_E_EXTENDED ResultCodeExtended = OPOS_EMSR_START: Start sentinel error. ResultCodeExtended = OPOS_EMSR_END: End sentinel error. ResultCodeExtended = OPOS_EMSR_PARITY: Parity error. ResultCodeExtended = OPOS_EMSR_LRC: LRC error. Other Values See ResultCode.
The ErrorLocus parameter may be one of the following: Value OPOS_EL_INPUT Meaning Error occurred while gathering or processing event-driven input. No input data is available.
OPOS_EL_INPUT_DATA Error occurred while gathering or processing eventdriven input, and some previously buffered data is available.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 177 of 330
178
Chapter 8
The contents at the location pointed to by the pErrorResponse parameter are preset to a default value, based on the ErrorLocus. The application may change it to one of the following: Value OPOS_ER_CLEAR Meaning Clear the buffered input data. The error state is exited. Default when locus is OPOS_EL_INPUT.
OPOS_ER_CONTINUEINPUT Use only when locus is OPOS_EL_INPUT_DATA. Acknowledges the error and directs the Control to continue processing . The Control remains in the error state and will fire additional DataEvents as directed by the DataEventEnabled property. When all input has been fired and the DataEventEnabled property is again set to TRUE, then another ErrorEvent is fired with locus OPOS_EL_INPUT. Default when locus is OPOS_EL_INPUT_DATA. Remarks Fired when an error is detected while trying to read MSR data. Input error events are not fired until the DataEventEnabled property is TRUE, so that proper application sequencing occurs. The particular track that caused the fault is not specified. However, this level of specificity is deemed irrelevant since this event will only be generated for a track or tracks that the application explicitly requested via TracksToRead. See Also Status, Result Code, and State Model
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 178 of 330
C H A P T E R
POS Keyboard
Summary
Properties
Common CheckHealthText Claimed DataEventEnabled DeviceEnabled FreezeEvents OutputID ResultCode ResultCodeExtended State
ControlObjectDescription ControlObjectVersion ServiceObjectDescription ServiceObjectVersion DeviceDescription DeviceName Type String Boolean Access R R Initialized After Open Open Open Open & Claim Open Not Supported -Open ---Open Open Open Open
Boolean R/W Boolean R/W Boolean R/W Long Long Long Long String Long String Long String String R R R R R R R R R R
Specific POSKeyData
String
Open
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 179 of 330
180
Chapter 9
Methods
Common Open Close Claim Release CheckHealth ClearInput ClearOutput DirectIO
May Use After -Open Open Open & Claim Open, Claim, & Enable Open, Claim, & Enable Not Supported Open
Events
Name DataEvent DirectIOEvent ErrorEvent OutputCompleteEvent StatusUpdateEvent
May Occur After Open, Claim, & Enable Open Open, Claim, & Enable Not Supported Not Supported
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 180 of 330
POS Keyboard
General Information
181
General Information
The POS Keyboard is defined in OPOS Release 1.1. The POS Keyboard Control OLE programmatic ID is OPOS.POSKeyboard. s
Capabilities
The POS Keyboard Control has the following capability: Reads keys from a POS keyboard. A POS keyboard is a secondary key entry device, separate from the primary keyboard recognized and supported by the operating system.
Model
The POS Keyboard Control follows the general Input Model for event-driven input: When input is received by the Control, it generates a DataEvent. Just before firing this event, the Control disables further data events by setting the DataEventEnabled property to FALSE. This causes buffering of further input data at the Control while the application processes the current input and associated properties. When the application has finished the current input and is ready for more data, it reenables events by setting DataEventEnabled to TRUE. All input buffered at the Control may be deleted by calling the ClearInput method.
Device Sharing
The POS keyboard is an exclusive-use device, as follows: The application must claim the device before enabling it. The application must claim and enable the device before the device begins reading input. See the Summary table for precise usage prerequisites.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 181 of 330
182
Chapter 9
Properties
POSKeyData Property
Syntax Remarks LONG POSKeyData; The data read from the POS keyboard. The upper 16 bits (HIWORD) of POSKeyData contain the logical key code, and the lower 16 bits (LOWORD) contain the scan code. The logical key code and scan code may match a standard PC keyboard value, but this is not required. That is, a POS keyboard may return PC-style data or proprietary data, depending upon its implementation. This property is set by the Control just before firing the DataEvent.
Events
DataEvent Event
Syntax void DataEvent (LONG Status); The Status parameter contains zero. Remarks Fired to present input data from the device to the application. The POS keyboard data is placed in the POSKeyData property before this event is fired.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 182 of 330
POS Keyboard
Events
183
ErrorEvent Event
Syntax void ErrorEvent (LONG ResultCode, LONG ResultCodeExtended, LONG ErrorLocus, LONG* pErrorResponse); Parameter ResultCode ResultCodeExtended ErrorLocus pErrorResponse Description Result code causing the error event. See ResultCode for values. Extended result code causing the error event. See ResultCodeExtended for values. Location of the error. See values below. Pointer to the error event response. See values below.
The ErrorLocus parameter may be one of the following: Value OPOS_EL_INPUT Meaning Error occurred while gathering or processing event-driven input. No input data is available.
OPOS_EL_INPUT_DATA Error occurred while gathering or processing eventdriven input, and some previously buffered data is available. The contents at the location pointed to by the pErrorResponse parameter is preset to a default value, based on the ErrorLocus. The application may change it to one of the following: Value OPOS_ER_CLEAR Meaning Clear the buffered input data. The error state is exited. Default when locus is OPOS_EL_INPUT.
OPOS_ER_CONTINUEINPUT Use only when locus is OPOS_EL_INPUT_DATA. Acknowledges the error and directs the Control to continue processing . The Control remains in the error state and will fire additional DataEvents as directed by the DataEventEnabled property. When all input has been fired and the DataEventEnabled property is again set to TRUE, then another ErrorEvent is fired with locus OPOS_EL_INPUT. Default when locus is OPOS_EL_INPUT_DATA.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 183 of 330
184
Chapter 9
Remarks
Fired when an error is detected while trying to read POS Keyboard data. Input error events are not fired until the DataEventEnabled property is TRUE, so that proper application sequencing occurs.
See Also
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 184 of 330
C H A P T E R
1 0
POS Printer
Summary
Properties
Common CheckHealthText Claimed DataEventEnabled DeviceEnabled FreezeEvents OutputID ResultCode ResultCodeExtended State
ControlObjectDescription ControlObjectVersion ServiceObjectDescription ServiceObjectVersion DeviceDescription DeviceName Type String Boolean Access R R Initialized After Open Open Not Supported Open & Claim Open Open -Open ---Open Open Open Open Initialized After Open Open Open Open Open Open
Boolean R/W Boolean R/W Boolean R/W Long Long Long Long String Long String Long String String R R R R R R R R R R
Specific
CapCharacterSet CapConcurrentJrnRec CapConcurrentJrnSlp CapConcurrentRecSlp CapCoverSensor CapTransaction 1.1 1.0 1.0 1.0 1.0 1.1
Type
Long Boolean Boolean Boolean Boolean Boolean
Access
R R R R R R
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 185 of 330
186
Chapter 10
Specific (continued)
CapJrnPresent CapJrn2Color CapJrnBold CapJrnDhigh CapJrnDwide CapJrnDwideDhigh CapJrnEmptySensor CapJrnItalic CapJrnNearEndSensor CapJrnUnderline CapRecPresent CapRec2Color CapRecBarCode CapRecBitmap CapRecBold CapRecDhigh CapRecDwide CapRecDwideDhigh CapRecEmptySensor CapRecItalic CapRecLeft90 CapRecNearEndSensor CapRecPapercut CapRecRight90 CapRecRotate180 CapRecStamp CapRecUnderline 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
Type Boolean Boolean Boolean Boolean Boolean Boolean Boolean Boolean Boolean Boolean Boolean Boolean Boolean Boolean Boolean Boolean Boolean Boolean Boolean Boolean Boolean Boolean Boolean Boolean Boolean Boolean Boolean
Access R R R R R R R R R R R R R R R R R R R R R R R R R R R
Initialized After Open Open Open Open Open Open Open Open Open Open Open Open Open Open Open Open Open Open Open Open Open Open Open Open Open Open Open
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 186 of 330
POS Printer
Summary
187
Specific (continued)
CapSlpPresent CapSlpFullslip CapSlp2Color CapSlpBarCode CapSlpBitmap CapSlpBold CapSlpDhigh CapSlpDwide CapSlpDwideDhigh CapSlpEmptySensor CapSlpItalic CapSlpLeft90 CapSlpNearEndSensor CapSlpRight90 CapSlpRotate180 CapSlpUnderline AsyncMode CharacterSet CharacterSetList CoverOpen ErrorLevel ErrorStation ErrorString FontTypefaceList FlagWhenIdle MapMode RotateSpecial 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.1 1.0 1.1 1.1 1.0 1.0 1.1
Type Boolean Boolean Boolean Boolean Boolean Boolean Boolean Boolean Boolean Boolean Boolean Boolean Boolean Boolean Boolean Boolean
Access R R R R R R R R R R R R R R R R
Initialized After Open Open Open Open Open Open Open Open Open Open Open Open Open Open Open Open Open Open, Claim, & Enable Open Open, Claim, & Enable Open Open Open Open Open Open Open
Boolean R/W Long String Boolean Long Long String String Long Long R/W R R R R R R R/W R/W
Boolean R/W
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 187 of 330
188
Chapter 10
Specific (continued)
JrnLineChars JrnLineCharsList JrnLineHeight JrnLineSpacing JrnLineWidth JrnLetterQuality JrnEmpty JrnNearEnd RecLineChars RecLineCharsList RecLineHeight RecLineSpacing RecLineWidth RecLetterQuality RecEmpty RecNearEnd RecSidewaysMaxLines RecSidewaysMaxChars RecLinesToPaperCut RecBarCodeRotationList SlpLineChars SlpLineCharsList SlpLineHeight SlpLineSpacing SlpLineWidth SlpLetterQuality SlpEmpty SlpNearEnd SlpSidewaysMaxLines SlpSidewaysMaxChars SlpMaxLines SlpLinesNearEndToEnd 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.1 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
Type Long String Long Long Long Boolean Boolean Long String Long Long Long Boolean Boolean Long Long Long String Long String Long Long Long Boolean Boolean Long Long Long Long
Access R/W R R/W R/W R R R R/W R R/W R/W R R R R R R R R/W R R/W R/W R R R R R R R
Initialized After Open, Claim, & Enable Open Open, Claim, & Enable Open, Claim, & Enable Open, Claim, & Enable Open, Claim, & Enable Open, Claim, & Enable Open, Claim, & Enable Open, Claim, & Enable Open Open, Claim, & Enable Open, Claim, & Enable Open, Claim, & Enable Open, Claim, & Enable Open, Claim, & Enable Open, Claim, & Enable Open, Claim, & Enable Open, Claim, & Enable Open, Claim, & Enable Open Open, Claim, & Enable Open Open, Claim, & Enable Open, Claim, & Enable Open, Claim, & Enable Open, Claim, & Enable Open, Claim, & Enable Open, Claim, & Enable Open, Claim, & Enable Open, Claim, & Enable Open, Claim, & Enable Open, Claim, & Enable
Boolean R/W
Boolean R/W
Boolean R/W
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 188 of 330
Summary
189
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 189 of 330
190
Chapter 10
Methods
Common Open Close Claim Release CheckHealth ClearInput ClearOutput DirectIO Specific PrintNormal PrintTwoNormal PrintImmediate
BeginInsertion EndInsertion BeginRemoval EndRemoval CutPaper RotatePrint PrintBarCode PrintBitmap TransactionPrint ValidateData SetBitmap SetLogo May Use After 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -Open Open Open & Claim Open, Claim, & Enable Not Supported Open, Claim, & Enable Open
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.1 1.1 1.0 1.0
Open, Claim, & Enable Open, Claim, & Enable Open, Claim, & Enable Open, Claim, & Enable Open, Claim, & Enable Open, Claim, & Enable Open, Claim, & Enable Open, Claim, & Enable Open, Claim, & Enable Open, Claim, & Enable Open, Claim, & Enable Open, Claim, & Enable Open, Claim, & Enable Open, Claim, & Enable Open, Claim, & Enable
Events
Name DataEvent DirectIOEvent ErrorEvent OutputCompleteEvent StatusUpdateEvent
May Occur After Not Supported Open Open, Claim, & Enable Open, Claim, & Enable Open, Claim, & Enable
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 190 of 330
POS Printer
General Information
191
General Information
The POS Printer Control OLE programmatic ID is OPOS.POSPrinter. s The printer OLE Control does not attempt to encapsulate the generic Windows graphics printer. Rather, for performance and ease of use considerations, the interfaces are defined to directly control a printer. Usually, an application will print one line to one station per method, for ease of use and accuracy in recovering from errors. The printer model defines three stations with the following general uses: Journal Used for simple text to log transaction and activity information. Kept by the store for audit and other purposes. Receipt Used to print transaction information. Usually given to the customer. Also often used for store reports. Contains either a knife to cut the paper between transactions, or a tear bar to manually cut the paper. Slip Used to print information on a form. Usually given to the customer. Also used to print validation information on a form. The form type is typically a check or credit card slip. Sometimes, limited forms-handling capability is integrated with the receipt or journal station to permit validation printing. Often this limits the number of print lines, due to the station forms-handling throat depth. The Printer s Control nevertheless addresses this printer functionality as a slip station.
Capabilities
The POS printer has the following capability: The default character set can print the ASCII characters 0x20 through 0x7F, which includes space, digits, uppercase, lowercase, and some special characters. (If the printer does not support all of these, then it should translate them to close approximations such as lowercase to uppercase.) The POS printer may have several additional capabilities. See the capabilities properties for specific information.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 191 of 330
192
Chapter 10
The following capabilities are not addressed in this version of the OPOS specification. A Service Object may choose to support them through the DirectIO mechanism. Downloadable character sets. Character substitution. General graphics printing, where each pixel of the printer line may be specified.
Model
The POS Printer follows the general output model, with some enhancements: The following methods are always performed synchronously: BeginInsertion, EndInsertion, BeginRemoval, EndRemoval, and CheckHealth. These methods will fail if asynchronous output is outstanding. The following method is also always performed synchronously: PrintImmediate. This method tries to print its data immediately (that is, as the very next printer operation). It may be called when asynchronous output is outstanding. PrintImmediate is primarily intended for use in exception conditions when asynchronous output is outstanding. The following methods are performed either synchronously or asynchronously, depending on the value of the AsyncMode property: PrintNormal, PrintTwoNormal, CutPaper, RotatePrint, PrintBarCode, and PrintBitmap. When AsyncMode is FALSE, then these methods print synchronously and return their completion status to the application. When AsyncMode is TRUE, then these methods operate as follows: The Control buffers the request, sets the OutputID property to an identifier for this request, and returns as soon as possible. When the device completes the request successfully, then the Control fires an OutputCompleteEvent. A parameter of this event contains the OutputID of the completed request. Asynchronous printer methods will not return an error status due to a printing problem, such as out of paper or printer fault. These errors will only be reported by an ErrorEvent. An error status is returned only if the printer is not claimed and enabled, a parameter is invalid, or the request cannot be enqueued. The first two error cases are due to an application error, while the last is a serious system resource exception.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 192 of 330
POS Printer
General Information
193
If an error occurs while performing an asynchronous request, an ErrorEvent is fired. The ErrorStation property is set to the station or stations that were printing when the error occurred. Beginning with Release 1.1, the ErrorLevel and ErrorString properties are also set. The event handler may call synchronous print methods (but not asynchronous methods), then can either retry the outstanding output or clear it.
OPOS guarantees that asynchronous output is performed on a first-in firstout basis. All output buffered by OPOS may be deleted by calling theClearOutput method. OutputCompleteEvents will not be fired for cleared output. This method also stops any output that may be in progress (when possible). The property FlagWhenIdle may be set to cause the Control to fire a StatusUpdateEvent when all outstanding outputs have finished, whether successfully or because they were cleared.
Beginning with Release 1.1, transaction mode printing is supported. A transaction is a sequence of print operations that are printed to a station as a unit. Print operations which may be included in a transaction are PrintNormal, CutPaper, RotatePrint, PrintBarCode, and PrintBitmap. During a transaction, the print operations are first validated. If valid, they are added to the transaction but not printed yet. Once the application has added as many operations as required, then the transaction print method is called. If the transaction is printed synchronously, then the returned status indicates either that the entire transaction printing successfully or that an error occurred during the print. If the transaction is printed asynchronously, then the asynchronous print rules listed above are followed. If an error occurs and the Error Event handler causes a retry, the entire transaction is retried. The printer error reporting model is as follows: Printer out-of-paper and cover open conditions are reported by setting the ResultCode to OPOS_E_EXTENDED and then setting ResultCodeExtended to one of the following error conditions: OPOS_EPTR_JRN_EMPTY, OPOS_EPTR_REC_EMPTY, OPOS_EPTR_SLP_EMPTY, or OPOS_EPTR_COVER_OPEN. Other printer errors are reported by setting the ResultCode to OPOS_E_FAILURE or another standard error status. These failures are typically due to a printer fault or jam, or to a more serious error.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 193 of 330
194
Chapter 10
Device Sharing
The POS Printer is an exclusive-use device, as follows: The application must claim the device before enabling it. The application must claim and enable the device before accessing many printer-specific properties. The application must claim and enable the device before calling methods that manipulate the device. See the Summary table for precise usage prerequisites.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 194 of 330
POS Printer
195
ESC |#fP
ESC |#sP
Fire stamp
ESC |sL
Print bitmap
ESC |#B
ESC |tL
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 195 of 330
196
OLE for Retail POS Application Guide Print bottom logo Feed lines
Chapter 10 ESC |bL ESC |#lF Prints the pre-stored bottom logo. Feed the paper forward by lines. The character is replaced by an ASCII # decimal string telling the number of lines to be fed. If is omitted, then # one line is fed. Feed the paper forward by mapping mode units. The character is # replaced by an ASCII decimal string telling the number of units to be fed. If is omitted, then one unit is fed. # Feed the paper backward. The character is replaced by an ASCII # decimal string telling the number of lines to be fed. If is omitted, then # one line is fed.
Feed units
ESC |#uF
Feed reverse
ESC |#rF
Print Line Characteristics that are reset at the end of each print method or by a Normal sequence.
Name Bold Underline Data ESC |bC ESC |#uC Remarks Prints in bold or double-strike. Prints with underline. The character is replaced by an ASCII decimal # string telling the width of the underline in printer dot units. If is # omitted, then a printer-specific default width is used. Prints in italics.
Italic
ESC |iC
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 196 of 330
POS Printer Alternate color (Red) Reverse video Shading ESC |rC ESC |rvC
Data Characters and Escape Sequences Prints in alternate color. Prints in a reverse video format. Prints in a shaded manner. The character is replaced by an ASCII # decimal string telling the percentage shading desired. If is omitted, # then a printer-specific default level of shading is used. Prints normal size. Prints double-wide characters. Prints double-high characters. Prints double-high/double-wide characters. Prints with the width scaled times # the normal size, where is replaced # by an ASCII decimal string. Prints with the height scaled times # the normal size, where is replaced # by an ASCII decimal string. Aligns following text in the center. Aligns following text at the right. Restores printer characteristics to normal condition.
197
ESC |#sC
Single high & wide Double wide Double high Double high & wide Scale horizontally
ESC |1C ESC |2C ESC |3C ESC |4C ESC |#hC
Scale vertically
ESC |#vC
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 197 of 330
198
Chapter 10
Properties
AsyncMode Property R/W
Syntax Remarks BOOL AsyncMode; If TRUE, then the print methods PrintNormal, PrintTwoNormal, CutPaper, RotatePrint, PrintBarCode, and PrintBitmap will be performed asynchronously. If FALSE, they will be printed synchronously. This property is initialized to FALSE by the Open method. Return When this property is set, the following value is placed in the ResultCode property: Value OPOS_SUCCESS Meaning The property was set successfully.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 198 of 330
POS Printer
Properties
199
CapCharacterSet Property
Syntax Remarks
LONG CapCharacterSet; Holds the default character set capability. It may be one of the following: Value PTR_CCS_ALPHA PTR_CCS_ASCII PTR_CCS_KANA Meaning The default character set supports uppercase alphabetic plus numeric, space, minus, and period. The default character set supports all ASCII characters between 20-hex and 7F-hex. The default character set supports partial code page 932, including ASCII characters 20-hex through 7F-hex and the Japanese Kana characters A1-hex through DF-hex, but excluding the Japanese Kanji characters. The default character set supports code page 932, including the Shift-JIS Kanji characters, Levels 1 and 2.
PTR_CCS_KANJI
The default character set may contain a superset of these ranges. The initial CharacterSet property may be examined for additional information. This property is initialized by the Open method.
CapConcurrentJrnRec Property
Syntax Remarks BOOL CapConcurrentJrnRec; If TRUE, then the Journal and Receipt stations can print at the same time. The PrintTwoNormal method may be used with the PTR_S_JOURNAL_RECEIPT station parameter. If FALSE, the application should print to only one of the stations at a time, and minimize transitions between the stations. This will result in better performance, better reliability (such as less jams), or both. This property is initialized by the Open method.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 199 of 330
200
Chapter 10
CapConcurrentJrnSlp Property
Syntax Remarks BOOL CapConcurrentJrnSlp; If TRUE, then the Journal and Slip stations can print at the same time. The PrintTwoNormal method may be used with the PTR_S_JOURNAL_SLIP station parameter. If FALSE, the application should insert form / print / remove form before printing to the journal station. This property is initialized by the Open method.
CapConcurrentRecSlp Property
Syntax Remarks BOOL CapConcurrentRecSlp; If TRUE, then the Receipt and Slip stations can print at the same time. The PrintTwoNormal method may be used with the PTR_S_RECEIPT_SLIP station parameter. If FALSE, the application should insert form / print / remove form before printing to the receipt station. This property is initialized by the Open method.
CapCoverSensor Property
Syntax Remarks BOOL CapCoverSensor; If TRUE, then the printer has a cover open sensor; otherwise it is FALSE. This property is initialized by the Open method.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 200 of 330
POS Printer
Properties
201
CapJrn2Color Property
Syntax Remarks BOOL CapJrn2Color; If TRUE, then the journal can print dark plus an alternate color; otherwise it is FALSE. This property is initialized by the Open method.
CapJrnBold Property
Syntax Remarks BOOL CapJrnBold; If TRUE, then the journal can print bold characters; otherwise it is FALSE. This property is initialized by the Open method.
CapJrnDhigh Property
Syntax Remarks BOOL CapJrnDhigh; If TRUE, then the journal can print double high characters; otherwise it is FALSE. This property is initialized by the Open method.
CapJrnDwide Property
Syntax Remarks BOOL CapJrnDwide; If TRUE, then the journal can print double wide characters; otherwise it is FALSE. This property is initialized by the Open method.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 201 of 330
202
Chapter 10
CapJrnDwideDhigh Property
Syntax Remarks BOOL CapJrnDwideDhigh; If TRUE, then the journal can print double high / double wide characters; otherwise it is FALSE. This property is initialized by the Open method.
CapJrnEmptySensor Property
Syntax Remarks BOOL CapJrnEmptySensor; If TRUE, then the journal has an out-of-paper sensor; otherwise it is FALSE. This property is initialized by the Open method.
CapJrnItalic Property
Syntax Remarks BOOL CapJrnItalic; If TRUE, then the journal can print italic characters; otherwise it is FALSE. This property is initialized by the Open method.
CapJrnNearEndSensor Property
Syntax Remarks BOOL CapJrnNearEndSensor; If TRUE, then the journal has a low paper sensor; otherwise it is FALSE. This property is initialized by the Open method.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 202 of 330
POS Printer
Properties
203
CapJrnPresent Property
Syntax Remarks BOOL CapJrnPresent; If TRUE, then the journal print station is present; otherwise it is FALSE. This property is initialized by the Open method.
CapJrnUnderline Property
Syntax Remarks BOOL CapJrnUnderline; If TRUE, then the journal can underline characters; otherwise it is FALSE. This property is initialized by the Open method.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 203 of 330
204
Chapter 10
CapRec2Color Property
Syntax Remarks BOOL CapRec2Color; If TRUE, then the receipt can print dark plus an alternate color; otherwise it is FALSE. This property is initialized by the Open method.
CapRecBarCode Property
Syntax Remarks BOOL CapRecBarCode; If TRUE, then the receipt has bar code printing capability; otherwise it is FALSE. This property is initialized by the Open method.
CapRecBitmap Property
Syntax Remarks BOOL CapRecBitmap; If TRUE, then the receipt can print bitmaps; otherwise it is FALSE. This property is initialized by the Open method.
CapRecBold Property
Syntax Remarks BOOL CapRecBold; If TRUE, then the receipt can print bold charac ters; otherwise it is FALSE. This property is initialized by the Open method.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 204 of 330
POS Printer
Properties
205
CapRecDhigh Property
Syntax Remarks BOOL CapRecDhigh; If TRUE, then the receipt can print double high characters; otherwise it is FALSE. This property is initialized by the Open method.
CapRecDwide Property
Syntax Remarks BOOL CapRecDwide; If TRUE, then the receipt can print double wide characters; otherwise it is FALSE. This property is initialized by the Open method.
CapRecDwideDhigh Property
Syntax Remarks BOOL CapRecDwideDhigh; If TRUE, then the receipt can print double high / double wide characters; otherwise it is FALSE. This property is initialized by the Open method.
CapRecEmptySensor Property
Syntax Remarks BOOL CapRecEmptySensor; If TRUE, then the receipt has an out-of-paper sensor; otherwise it is FALSE. This property is initialized by the Open method.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 205 of 330
206
Chapter 10
CapRecItalic Property
Syntax Remarks BOOL CapRecItalic; If TRUE, then the receipt can print italic characters; otherwise it is FALSE. This property is initialized by the Open method.
CapRecLeft90 Property
Syntax Remarks BOOL CapRecLeft90; If TRUE, then the receipt can print in rotated 90 left mode; otherwise it is FALSE. This property is initialized by the Open method.
CapRecNearEndSensor Property
Syntax Remarks BOOL CapRecNearEndSensor; If TRUE, then the receipt has a low paper sensor; otherwise it is FALSE. This property is initialized by the Open method.
CapRecPapercut Property
Syntax Remarks BOOL CapRecPapercut; If TRUE, then the receipt can perform paper cuts; otherwise it is FALSE. This property is initialized by the Open method.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 206 of 330
POS Printer
Properties
207
CapRecPresent Property
Syntax Remarks BOOL CapRecPresent; If TRUE, then the receipt print station is present; otherwise it is FALSE. This property is initialized by the Open method.
CapRecRight90 Property
Syntax Remarks BOOL CapRecRight90; If TRUE, then the receipt can print in a rotated 90 right mode; otherwise it is FALSE. This property is initialized by the Open method.
CapRecRotate180 Property
Syntax Remarks BOOL CapRecRotate180; If TRUE, then the receipt can print in a rotated upside down mode; otherwise it is FALSE. This property is initialized by the Open method.
CapRecStamp Property
Syntax Remarks BOOL CapRecStamp; If TRUE, then the receipt has a stamp capability; otherwise it is FALSE. This property is initialized by the Open method.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 207 of 330
208
Chapter 10
CapRecUnderline Property
Syntax Remarks BOOL CapRecUnderline; If TRUE, then the receipt can underline characters; otherwise it is FALSE. This property is initialized by the Open method.
CapSlp2Color Property
Syntax Remarks BOOL CapSlp2Color; If TRUE, then the slip can print dark plus an alternate color; otherwise it is FALSE. This property is initialized by the Open method.
CapSlpBarCode Property
Syntax Remarks BOOL CapSlpBarCode; If TRUE, then the slip has bar code printing capability; otherwise it is FALSE. This property is initialized by the Open method.
CapSlpBitmap Property
Syntax Remarks BOOL CapSlpBitmap; If TRUE, then the slip can print bitmaps; otherwise it is FALSE. This property is initialized by the Open method.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 208 of 330
POS Printer
Properties
209
CapSlpBold Property
Syntax Remarks BOOL CapSlpBold; If TRUE, then the slip can print bold characters; otherwise it is FALSE. This property is initialized by the Open method.
CapSlpDhigh Property
Syntax Remarks BOOL CapSlpDhigh; If TRUE, then the slip can print double high characters; otherwise it is FALSE. This property is initialized by the Open method.
CapSlpDwide Property
Syntax Remarks BOOL CapSlpDwide; If TRUE, then the slip can print double wide characters; otherwise it is FALSE. This property is initialized by the Open method.
CapSlpDwideDhigh Property
Syntax Remarks BOOL CapSlpDwideDhigh; If TRUE, then the slip can print double high / double wide characters; otherwise it is FALSE. This property is initialized by the Open method.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 209 of 330
210
Chapter 10
CapSlpEmptySensor Property
Syntax Remarks BOOL CapSlpEmptySensor; If TRUE, then the slip has a slip in sensor; otherwise it is FALSE. This property is initialized by the Open method.
CapSlpFullslip Property
Syntax Remarks BOOL CapSlpFullslip; If TRUE, then the slip is a full slip station. It can print full-length forms.. If FALSE, then the slip is a validation type station. This usually limits the number of print lines, and disables access to the receipt and/or journal stations while the validation slip is being used. This property is initialized by the Open method.
CapSlpItalic Property
Syntax Remarks BOOL CapSlpItalic; If TRUE, then the slip can print italic characters; otherwise it is FALSE. This property is initialized by the Open method.
CapSlpLeft90 Property
Syntax Remarks BOOL CapSlpLeft90; If TRUE, then the slip can print in a rotated 90 left mode; otherwise it is FALSE. This property is initialized by the Open method.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 210 of 330
POS Printer
Properties
211
CapSlpNearEndSensor Property
Syntax Remarks BOOL CapSlpNearEndSensor; If TRUE, then the slip has a slip near end sensor; otherwise it is FALSE. This property is initialized by the Open method.
CapSlpPresent Property
Syntax Remarks BOOL CapSlpPresent; If TRUE, then the slip print station is present; otherwise it is FALSE. This property is initialized by the Open method.
CapSlpRight90 Property
Syntax Remarks BOOL CapSlpRight90; If TRUE, then the slip can print in a rotated 90 right mode; otherwise it is FALSE. This property is initialized by the Open method.
CapSlpRotate180 Property
Syntax Remarks BOOL CapSlpRotate180; If TRUE, then the slip can print in a rotated upside down mode; otherwise it is FALSE. This property is initialized by the Open method.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 211 of 330
212
Chapter 10
CapSlpUnderline Property
Syntax Remarks BOOL CapSlpUnderline; If TRUE, then the slip can underline characters; otherwise it is FALSE. This property is initialized by the Open method.
CapTransaction Property
Syntax Remarks
BOOL CapTransaction; If TRUE, then printer transactions are supported by each station; otherwise it is FALSE. This property is initialized by the Open method.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 212 of 330
POS Printer
Properties
213
PTR_CS_WINDOWS
When this property is set, one of the following values is placed in the ResultCode property: Value OPOS_SUCCESS OPOS_E_ILLEGAL Other Values Meaning The property was set successfully. An invalid property value was used. See ResultCode.
See Also
CharacterSetList Property
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 213 of 330
214
Chapter 10
CharacterSetList Property
Syntax Remarks BSTR CharacterSetList; A string of character set numbers. This property is initialized by the Open method. The string consists of ASCII numeric set numbers separated by commas. For example, if the string is 101,850,999, then the device supports a devicespecific character set, code page 850, and the Windows ANSI character set. See Also CharacterSet Property
CoverOpen Property
Syntax Remarks BOOL CoverOpen; If TRUE, then the printer cover is open; s otherwise it is FALSE. If the CapCoverSensor property is FALSE, then the printer does not have a cover open sensor, and this property always returns FALSE. This property is initialized and kept current while the device is enabled.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 214 of 330
POS Printer
Properties
215
ErrorLevel Property
Syntax Remarks LONG ErrorLevel;
The severity of the error condition. Values are: Value PTR_EL_NONE Meaning No error condition is present.
PTR_EL_RECOVERABLE A recoverable error has occurred. (Example: Out of paper.) PTR_EL_FATAL A non-recoverable error has occurred. (Example: Internal printer failure.)
This property is set by the Control just before firing an ErrorEvent. When the error is cleared, then the property is changed to PTR_EL_NONE.
ErrorStation Property
Syntax Remarks LONG ErrorStation; Holds the station or stations that were printing when an error was detected. This property will be set to one of the following values: PTR_S_JOURNAL, PTR_S_RECEIPT, PTR_S_SLIP, PTR_S_JOURNAL_RECEIPT, PTR_S_JOURNAL_SLIP, or PTR_S_RECEIPT_SLIP. This property is set just before an ErrorEvent is fired.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 215 of 330
216
Chapter 10
ErrorString Property
Syntax Remarks BSTR ErrorString;
A vendor-supplied description of the current error. This property is set by the Control just before firing an ErrorEvent. If no description is available, the property is set to an empty string. When the error is cleared, then the property is changed to an empty string.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 216 of 330
POS Printer
Properties
217
FontTypefaceList Property
Syntax Remarks
BSTR FontTypefaceList; A string that specifies the fonts and/or typefaces that are supported by the printer. This property is initialized by the Open method. The string consists of font or typeface names separated by commas. The application selects a font or typeface for a printer station by using the font typeface selection escape sequence (ESC |#fT). The # character is replaced by the number of the font or typeface within the list: 1, 2, and so on. In Japan, this property will frequently include the fonts Mincho and Gothic. Other fonts or typefaces may be commonly supported in other countries. An empty string indicates that only the default typeface is supported.
See Also
JrnEmpty Property
Syntax Remarks BOOL JrnEmpty; If TRUE, the journal is out of paper. If FALSE, journal paper is present. If the capability CapJrnEmptySensor is FALSE, then the value of this property is always FALSE. This property is initialized and kept current while the device is enabled. See Also JNearEnd Property
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 217 of 330
218
Chapter 10
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 218 of 330
POS Printer
Properties
219
JrnLineCharsList Property
JrnLineCharsList Property
Syntax Remarks BSTR JrnLineCharsList; A string containing the line character widths supported by the journal station. This property is initialized by the Open method. The string consists of ASCII numeric set numbers separated by commas. For example, if the string is 32,36,40, then the station supports line widths of 32, 36, and 40 characters. See Also JrnLineChars Property
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 219 of 330
220
Chapter 10
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 220 of 330
POS Printer
Properties
221
JrnLineWidth Property
Syntax Remarks LONG JrnLineWidth; The width of a line of JrnLineChars characters. Expressed in the unit of measure given by MapMode. Setting JrnLineChars may also update JrnLineWidth. The value of JrnLineWidth is initialized to the printer default line width when s the device is first enabled following the Open method.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 221 of 330
222
Chapter 10
JrnNearEnd Property
Syntax Remarks BOOL JrnNearEnd; If TRUE, the journal paper is low. If FALSE, journal paper is not low. If the capability CapJrnNearEndSensor is FALSE, then the value of this property is always FALSE. This property is initialized and kept current while the device is enabled. See Also JrnEmpty Property
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 222 of 330
POS Printer
Properties
223
Setting MapMode may also change JrnLineHeight, JrnLineSpacing, JrnLineWidth, RecLineHeight, RecLineSpacing, RecLineWidth, SlpLineHeight, SlpLineSpacing, and SlpLineWidth. The value of MapMode is initialized to PTR_MM_DOTS when the device is first enabled following the Open method. Return When this property is set, the following value is placed in the ResultCode property: Value OPOS_SUCCESS OPOS_E_ILLEGAL Meaning The property was set successfully. An invalid mapping mode was specified.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 223 of 330
224
Chapter 10
For example, if the string is 0,180, then the printer can print normal bar codes and upside down bar codes. See Also RotateSpecial Property; PrintBarCode Method
RecEmpty Property
Syntax Remarks BOOL RecEmpty; If TRUE, the receipt is out of paper. If FALSE, receipt paper is present. If the capability CapRecEmptySensor is FALSE, then the value of this property is always FALSE. This property is initialized and kept current while the device is enabled. See Also RecNearEnd Property
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 224 of 330
POS Printer
Properties
225
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 225 of 330
226
Chapter 10
RecLineCharsList Property
RecLineCharsList Property
Syntax Remarks BSTR RecLineCharsList; A string containing the line character widths supported by the receipt station. This property is initialized by the Open method. The string consists of ASCII numeric set numbers, separated by commas. For example, if the string is 32,36,40, then the station supports line widths of 32, 36, and 40 characters. See Also RecLineChars Property
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 226 of 330
POS Printer
Properties
227
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 227 of 330
228
Chapter 10
RecLinesToPaperCut Property
Syntax Remarks LONG RecLinesToPaperCut; Holds the number of lines that must be advanced before the receipt paper is cut. If the capability CapRecPapercut is TRUE, then this is the line count before reaching the paper cut mechanism. Otherwise, this is the line count before the manual tear-off bar. Changing the properties RecLineChars, RecLineHeight, and RecLineSpacing may cause this property to change. This property is initialized when the device is first enabled following the Open method.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 228 of 330
POS Printer
Properties
229
RecLineWidth Property
Syntax Remarks LONG RecLineChars; The width of a line of RecLineChars characters. Expressed in the unit of measure given by MapMode. Setting RecLineChars may also update RecLineWidth. The value of RecLineWidth is initialized to the printer default line width when s the device is first enabled following the Open method.
RecNearEnd Property
Syntax Remarks BOOL RecNearEnd; If TRUE, the receipt paper is low. If FALSE, receipt paper is not low. If the capability CapRecNearEndSensor is FALSE, then the value of this property is always FALSE. This property is initialized and kept current while the device is enabled. See Also RecEmpty Property
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 229 of 330
230
Chapter 10
RecSidewaysMaxChars Property
Syntax Remarks LONG RecSidewaysMaxChars; Holds the maximum number of characters that may be printed on each line in sideways mode. If the capabilities CapRecLeft90 and CapRecRight90 are both FALSE, then RecSidewaysMaxChars is zero. Changing the properties RecLineHeight, RecLineSpacing, and RecLineChars may cause this property to change. This property is initialized when the device is first enabled following the Open method. See Also RecSidewaysMaxLines Property
RecSidewaysMaxLines Property
Syntax Remarks LONG RecSidewaysMaxLines; Holds the maximum number of lines that may be printed in sideways mode. If the capabilities CapRecLeft90 and CapRecRight90 are both FALSE, then RecSidewaysMaxLines is zero. Changing the properties RecLineHeight, RecLineSpacing, and RecLineChars may cause this property to change. This property is initialized when the device is first enabled following the Open method. See Also RecSidewaysMaxChars Property
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 230 of 330
POS Printer
Properties
231
The rotation orientation for bar codes. This property is initialized to PTR_RP_NORMAL by the Open method. Values are: Value PTR_RP_NORMAL PTR_RP_RIGHT90 PTR_RP_LEFT90 Meaning Print subsequent bar codes in normal orientation. Rotate printing 90 to the right (clockwise). Rotate printing 90 to the left (counter-clockwise).
PTR_RP_ROTATE180 Rotate printing 180, that is, print upside-down. Return When this property is set, one of the following values is placed in the ResultCode property: Value OPOS_SUCCESS OPOS_E_ILLEGAL See Also PrintBarCode Method Meaning The property was set successfully. An invalid property value was used.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 231 of 330
232
Chapter 10
For example, if the string is 0,180, then the printer can print normal bar codes and upside down bar codes. See Also RotateSpecial Property; PrintBarCode Method
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 232 of 330
POS Printer
Properties
233
SlpEmpty Property
Syntax Remarks BOOL SlpEmpty; If TRUE, a slip form is not present. If FALSE, a slip form is present. If the capability CapSlpEmptySensor is FALSE, then the value of this property is always FALSE. This property is initialized and kept current while the device is enabled. Note The slip empty sensor should be used primarily to determine whether a form has been inserted before printing, and can be monitored to determine whether a form is still in place. This sensor is usually placed one or more print lines above the slip print head. However, the slip near end sensor (when present) should be used to determine when nearing the end of the slip. This sensor is usually placed one or more print lines below the slip print head. See Also SlpNearEnd Property
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 233 of 330
234
Chapter 10
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 234 of 330
POS Printer
Properties
235
SlpLineCharsList Property
SlpLineCharsList Property
Syntax Remarks BSTR SlpLineCharsList; A string containing the line character widths supported by the slip station. This property is initialized by the Open method. The string consists of ASCII numeric set numbers, separated by commas. For example, if the string is 32,36,40, then the station supports line widths of 32, 36, and 40 characters. See Also SlpLineChars Property
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 235 of 330
236
Chapter 10
SlpLinesNearEndToEnd Property
Syntax Remarks LONG SlpLinesNearEndToEnd; Holds the number of lines that may be printed after the slip near end sensor is TRUE but before the printer reaches the end of the slip. This property may be used to optimize the use of the slip, so that the maximum number of lines may be printed. Changing the SlpLineHeight, SlpLineSpacing, or SlpLineChars properties may cause this property to change. This property is initialized when the device is first enabled following the Open method. See Also SlpEmpty Property; SlpNearEnd Property
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 236 of 330
POS Printer
Properties
237
SlpLineWidth Property
Syntax Remarks LONG SlpLineWidth; The width of a line of SlpLineChars characters. Expressed in the unit of measure given by MapMode. Setting SlpLineChars may also update SlpLineWidth. The value of SlpLineWidth is initialized to the printer default line width when s the device is first enabled following the Open method.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 237 of 330
238
Chapter 10
SlpMaxLines Property
Syntax Remarks LONG SlpMaxLines; Holds the maximum number of lines that can be printed on a form. When the capability CapSlpFullslip is TRUE, then this value will be zero, indicating an unlimited maximum slip length. When the capability is FALSE, then this value will be non-zero. Changing the SlpLineHeight, SlpLineSpacing, or SlpLineChars properties may cause this property to change. The value of SlpMaxLines is initialized when the device is first enabled following the Open method.
SlpNearEnd Property
Syntax Remarks BOOL SlpNearEnd; If TRUE, the slip form is near its end. If FALSE, the slip form is not near its end. The near end sensor is also sometimes called the trailing edge sensor, referring to the bottom edge of the slip. If the capability CapSlpNearEndSensor is FALSE, then the value of this property is always FALSE. This property is initialized and kept current while the device is enabled. Note The slip empty sensor should be used primarily to determine whether a form has been inserted before printing, and can be monitored to determine whether a form is still in place. This sensor is usually placed one or more print lines above the slip print head. However, the slip near end sensor (when present) should be used to determine when nearing the end of the slip. This sensor is usually placed one or more print lines below the slip print head. See Also SlpEmpty Property; SlpLinesNearEndToEnd Property
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 238 of 330
POS Printer
Properties
239
SlpSidewaysMaxChars Property
Syntax Remarks LONG SlpSidewaysMaxChars; Holds the maximum number of characters that may be printed on each line in sideways mode. If the capabilities CapSlpLeft90 and CapSlpRight90 are both FALSE, then SlpSidewaysMaxChars is zero. Changing the properties SlpLineHeight, SlpLineSpacing, and SlpLineChars may cause this property to change. This property is initialized when the device is first enabled following the Open method. See Also SlpSidewaysMaxLines Property
SlpSidewaysMaxLines Property
Syntax Remarks LONG SlpSidewaysMaxLines; Holds the maximum number of lines that may be printed in sideways mode. If the capabilities CapSlpLeft90 and CapSlpRight90 are both FALSE, then SlpSidewaysMaxLines is zero. Changing the properties SlpLineHeight, SlpLineSpacing, and SlpLineChars may cause this property to change. This property is initialized when the device is first enabled following the Open method. See Also SlpSidewaysMaxChars Property
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 239 of 330
240
Chapter 10
Methods
BeginInsertion Method
Syntax LONG BeginInsertion (LONG Timeout); The Timeout parameter gives the number of milliseconds before failing the method. Remarks Called to initiate slip processing. When called, the slip station is made ready to receive a form by opening the form s handling jaws or activating a form insertion mode. This method is paired with the EndInsertion method for controlling form insertion. If the printer device cannot be placed into insertion mode, an error is returned to the application. Otherwise, the Control continues to monitor form insertion until either: The form is successfully inserted. In this case, the Control returns an OPOS_SUCCESS status. The form is not inserted before Timeout milliseconds have elapsed, or an error is reported by the printer device. In this case, the Control either returns OPOS_E_TIMEOUT or another error. The printer device remains in form insertion mode. This allows an application to perform some user interaction and reissue the BeginInsertion method without altering the form handling mechanism. Return One of the following values is returned by the method and placed in the ResultCode property: Value OPOS_SUCCESS OPOS_E_BUSY OPOS_E_ILLEGAL OPOS_E_TIMEOUT Other Values See Also Meaning The method was initiated successfully. Cannot perform while output is in progress. The slip station does not exist (see the CapSlpPresent property). The specified time has elapsed without the form being properly inserted. See ResultCode.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 240 of 330
POS Printer
Methods
241
BeginRemoval Method
Syntax LONG BeginRemoval (LONG Timeout); The Timeout property gives the number of milliseconds before failing the method. Remarks Called to initiate form removal processing. When called, the printer is made ready to remove a form by opening the form handling jaws or activating a form ejection mode. This method is paired with the EndRemoval method for controlling form removal. If the printer device cannot be placed into removal or ejection mode, an error is returned to the application. Otherwise, the Control continues to monitor form removal until either: The form is successfully removed. In this case, the Control returns an OPOS_SUCCESS status. The form is not removed before Timeout milliseconds have elapsed, or an error is reported by the printer device. In this case, the Control either returns OPOS_E_TIMEOUT or another error. The printer device remains in form removal mode. This allows an application to perform some user interaction and reissue the BeginRemoval method without altering the form handling mechanism. Return One of the following values is returned by the method and placed in the ResultCode property: Value OPOS_SUCCESS OPOS_E_BUSY OPOS_E_ILLEGAL OPOS_E_TIMEOUT Other Values See Also Meaning The method was initiated successfully. Cannot perform while output is in progress. The printer does not have a slip station (see the CapSlpPresent property). The specified time has elapsed without the form being properly removed. See ResultCode.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 241 of 330
242
Chapter 10
EndInsertion Method
Syntax Remarks LONG EndInsertion (); Called to end form insertion processing. When called, the printer is taken out of form insertion mode. If the slip device has forms jaws, they are closed by this method. If a form is detected in the device, a successful status of OPOS_SUCCESS is returned to the application. If no form is present, an extended error status OPOS_EPTR_NOFORM is returned. This method is paired with the BeginInsertion method for controlling form insertion. The application may choose to call this method immediately after a successful BeginInsertion if it wants to use the printer sensors to determine when a form is positioned within the slip printer. Alternatively, the application may prompt the user and wait for a key press before calling this method. Return One of the following values is returned by the method and placed in the ResultCode property: Value OPOS_SUCCESS OPOS_E_ILLEGAL Meaning The method was initiated successfully. The printer is not in slip insertion mode.
OPOS_E_EXTENDED ResultCodeExtended = OPOS_EPTR_COVER_OPEN: The device was taken out of insertion mode while the printer cover was open. ResultCodeExtended = OPOS_EPTR_SLP_EMPTY: The device was taken out of insertion mode without a form being inserted. Other Values See Also See ResultCode.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 242 of 330
POS Printer
Methods
243
EndRemoval Method
Syntax Remarks LONG EndRemoval (); Called to end form removal processing. When called, the printer is taken out of form removal or ejection mode. If no form is detected in the device, a successful status of OPOS_SUCCESS is returned to the application. If a form is present, an extended error status OPOS_EPTR_FORM is returned. This method is paired with the BeginRemoval method for controlling form removal. The application may choose to call this method immediately after a successful BeginRemoval if it wants to use the printer sensors to determine when the form has been removed. Alternatively, the application may prompt the user and wait for a key press before calling this method. Return One of the following values is returned by the method and placed in the ResultCode property: Value OPOS_SUCCESS OPOS_E_ILLEGAL Meaning The method was initiated successfully. The printer is not in slip removal mode.
OPOS_E_EXTENDED ResultCodeExtended = OPOS_EPTR_SLP_FORM: The device was taken out of removal mode while a form was still present. Other Values See Also See ResultCode.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 243 of 330
244
Chapter 10
CutPaper Method
Syntax LONG CutPaper (LONG Percentage); The Percentage parameter indicates the percentage of paper to cut. The constant identifier PTR_CP_FULLCUT or the value 100 causes a full paper cut. Other values request a partial cut percentage. Remarks Call to cut the receipt paper. This method is performed synchronously if AsyncMode is FALSE, and asynchronously if AsyncMode is TRUE. Many printers with paper cut capability can perform both full and partial cuts. Some offer gradations of partial cuts, such as a perforated cut and an almost-full cut. Although the exact type of cut will vary by printer capabilities, the following general guide may be used: Value 100 90 70 Meaning Full cut. Leave only a small portion of paper for very easy final separation. Perforate the paper for final separation that is somewhat more difficult and unlikely to occur by accidental handling. Partial perforation of the paper.
50
The Service Object will select an appropriate type of cut based on the capabilities of its device and these general guidelines. An escape sequence embedded in a PrintNormal or PrintImmediate method call may also be used to cause a paper cut.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 244 of 330
POS Printer
Methods
245
Return
One of the following values is returned by the method and placed in the ResultCode property: Value OPOS_SUCCESS OPOS_E_BUSY OPOS_E_ILLEGAL Meaning The method was successful. Cannot perform while output is in progress. (Can only be returned if AsyncMode is FALSE.) An invalid percentage was specified, the receipt station does not exist (see the CapRecPresent property), or the receipt printer does not have paper cutting ability (see the CapRecPapercut property).
OPOS_E_EXTENDED ResultCodeExtended = OPOS_EPTR_COVER_OPEN: The printer cover is open. (Can only be returned if AsyncMode is FALSE.) ResultCodeExtended = OPOS_EPTR_REC_EMPTY: The receipt station is out of paper. (Can only be returned if AsyncMode is FALSE.) Other Values See Also See ResultCode.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 245 of 330
246
Chapter 10
PrintBarCode Method
Syntax LONG PrintBarCode (LONG Station, BSTR Data, LONG Symbology, LONG Height, LONG Width, LONG Alignment, LONG TextPosition); Parameter Station Data Symbology Description The printer station to be used. May be either PTR_S_RECEIPT or PTR_S_SLIP. Character string to be bar coded. Bar code symbol type to use. The Printer Control header file (OPOSPTR.H) defines several symbologies with constant names beginning with PTR_BCS. This parameter will be passed to the Service Object without validation, so that a Service Object may support additional symbologies than those specified in the header file. Bar code height. Expressed in the unit of measure given by MapMode. Bar code width. Expressed in the unit of measure given by MapMode. Placement of the bar code. See values below. Placement of the readable character string.
The Alignment parameter values are: Value PTR_BC_LEFT PTR_BC_CENTER PTR_BC_RIGHT Other Values Meaning Align with the left-most print column. Align in the center of the station. Align with the right-most print column. Distance from the left-most print column to the start of the bar code. Expressed in the unit of measure given by MapMode.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 246 of 330
POS Printer
Methods
247
The TextPosition parameter values are: Value PTR_BC_TEXT_NONE PTR_BC_TEXT_ABOVE PTR_BC_TEXT_BELOW Remarks Meaning No text is printed. Only print the bar code. Print the text above the bar code. Print the text below the bar code.
Call to print a bar code on the specified printer station. This method is performed synchronously if AsyncMode is FALSE, and asynchronously if AsyncMode is TRUE. If the property RotateSpecial indicates that the bar code is to be rotated, then perform the rotation. The Height, Width, and TextPosition parameters are applied to the bar code before the rotation. For example, if PTR_BC_TEXT_BELOW is specified and the bar code is rotated left, then the text will appear on the paper to the right of the bar code.
Return
One of the following values is returned by the method and placed in the ResultCode property: Value OPOS_SUCCESS OPOS_E_ILLEGAL Meaning The method was successful. One of the following errors occurred: * Station does not exist * Station does not support bar code printing * Height or Width are zero or too big * Alignment is invalid or too big * TextPosition is invalid * The RotateSpecial rotation is not supported Cannot perform while output is in progress. (Can only be returned if AsyncMode is FALSE.)
OPOS_E_BUSY
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 247 of 330
248
Chapter 10
OPOS_E_EXTENDED ResultCodeExtended = OPOS_EPTR_COVER_OPEN: The printer cover is open. (Can only be returned if AsyncMode is FALSE.) ResultCodeExtended = OPOS_EPTR_REC_EMPTY: The receipt station was specified but is out of paper. (Can only be returned if AsyncMode is FALSE.) ResultCodeExtended = OPOS_EPTR_SLP_EMPTY: The slip station was specified, but a form is not inserted. (Can only be returned if AsyncMode is FALSE.) Other Values See ResultCode.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 248 of 330
POS Printer
Methods
249
PrintBitmap Method
Syntax LONG PrintBitmap (LONG Station, BSTR FileName, LONG Width, LONG Alignment); Parameter Station FileName Width Alignment Description The printer station to be used. May be either PTR_S_RECEIPT or PTR_S_SLIP. Name of Windows bitmap file. The file must be in uncompressed format. Printed width of the bitmap to be performed. See values below. Placement of the bitmap. See values below.
The Width parameter values are: Value PTR_BM_ASIS Other Values Meaning Print the bitmap with one bitmap pixel per printer dot. Bitmap width expressed in the unit of measure given by MapMode.
The Alignment parameter values are: Value PTR_BM_LEFT PTR_BM_CENTER PTR_BM_RIGHT Other Values Meaning Align with the left-most print column. Align in the center of the station. Align with the right-most print column. Distance from the left-most print column to the start of the bitmap. Expressed in the unit of measure given by MapMode.
Remarks
Call to print a bitmap on the specified printer station. This method is performed synchronously if AsyncMode is FALSE, and asynchronously if AsyncMode is TRUE.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 249 of 330
250
Chapter 10
The Width parameter controls transformation of the bitmap. If Width is PTR_BM_ASIS, then no transformation is performed. The bitmap is printed with one bitmap pixel per printer dot. Advantages of this option are that it: Provides the highest performance bitmap printing. Works well for bitmaps tuned for a specific printer aspect ratio between s horizontal dots and vertical dots. If Width is non-zero, then the bitmap will be transformed by stretching or compressing the bitmap such that its width is the specified width and the aspect ratio is unchanged. Advantages of this option are that it: Sizes a bitmap to fit a variety of printers. Maintains the bitmap aspect ratio. s Disadvantages are: Lower performance than untransformed data. Some lines and images that are smooth in the original bitmap may show some ratcheting. Return One of the following values is returned by the method and placed in the ResultCode property: Value OPOS_SUCCESS OPOS_E_BUSY OPOS_E_ILLEGAL Meaning The method was successful. Cannot perform while output is in progress. (Can only be returned if AsyncMode is FALSE.) One of the following errors occurred: * Station does not exist * Station does not support bitmap printing * Width is too big * Alignment is invalid or too big FileName was not found.
OPOE_E_NOEXIST OPOS_E_EXTENDED
ResultCodeExtended = OPOS_EPTR_TOOBIG: The bitmap is either too wide to print without transformation, or it is too big to transform.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 250 of 330
POS Printer
Methods
251
ResultCodeExtended = OPOS_EPTR_COVER_OPEN: The printer cover is open. (Can only be returned if AsyncMode is FALSE.) ResultCodeExtended = OPOS_EPTR_BADFORMAT: The specified file is either not a bitmap file, or it is in an unsupported format. ResultCodeExtended = OPOS_EPTR_REC_EMPTY: The receipt station was specified but is out of paper. (Can only be returned if AsyncMode is FALSE.) ResultCodeExtended = OPOS_EPTR_SLP_EMPTY: The slip station was specified, but a form is not inserted. (Can only be returned if AsyncMode is FALSE.) Other Values See ResultCode.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 251 of 330
252
Chapter 10
PrintImmediate Method
Syntax LONG PrintImmediate (LONG Station, BSTR Data); Station The printer station to be used. May be PTR_S_JOURNAL, PTR_S_RECEIPT, or PTR_S_SLIP. Data The characters to be printed. May consist of printable characters, escape sequences, carriage returns (13 decimal), and line feeds (10 decimal). Remarks Call to print Data on the printer Station immediately. This method tries to print its data immediately that is, as the very next printer operation. It may be called when asynchronous output is outstanding. PrintImmediate is primarily intended for use in exception conditions when asynchronous output is outstanding, such as within an error event handler. Special character values within Data are: Value Line Feed (10) Meaning Print any data in the line buffer, and feed to the next print line. (A Carriage Return is not required in order to cause the line to be printed.) If a Carriage Return immediately precedes a Line Feed, or if the line buffer is empty, then it is ignored. Otherwise, the line buffer is printed and the printer does not feed to the next print line. On some printers, print without feed may be directly supported. On others, a print may always feed to the next line, in which case the Service Object will print the line buffer and perform a reverse line feed if supported. If the printer does not support either of these features, then Carriage Return acts like a Line Feed. The ValidateData method may be used to determine whether a Carriage Return without Line Feed is possible, and whether a reverse line feed is required to support it.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 252 of 330
POS Printer
Methods
253
Return
One of the following values is returned by the method and placed in the ResultCode property: Value OPOS_SUCCESS OPOS_E_ILLEGAL Meaning The method was successful. The specified Station does not exist. (See the CapJrnPresent, CapRecPresent, and CapSlpPresent properties.)
OPOS_E_EXTENDED ResultCodeExtended = OPOS_EPTR_COVER_OPEN: The printer cover is open. ResultCodeExtended = OPOS_EPTR_JRN_EMPTY: The journal station was specified but is out of paper. ResultCodeExtended = OPOS_EPTR_REC_EMPTY: The receipt station was specified but is out of paper. ResultCodeExtended = OPOS_EPTR_SLP_EMPTY: The slip station was specified, but a form is not inserted. Other Values See Also See ResultCode.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 253 of 330
254
Chapter 10
PrintNormal Method
Syntax LONG PrintNormal (LONG Station, BSTR Data); Station The printer station to be used. May be PTR_S_JOURNAL, PTR_S_RECEIPT, or PTR_S_SLIP. Data The characters to be printed. May consist of printable characters, escape sequences, carriage returns (13 decimal), and line feeds (10 decimal). Remarks Call to print Data on the printer Station. This method is performed synchronously if AsyncMode is FALSE, and asynchronously if AsyncMode is TRUE. Special character values within Data are: Value Line Feed (10) Meaning Print any data in the line buffer, and feed to the next print line. (A Carriage Return is not required in order to cause the line to be printed.) If a Carriage Return immediately precedes a Line Feed, or if the line buffer is empty, then it is ignored. Otherwise, the line buffer is printed and the printer does not feed to the next print line. On some printers, print without feed may be directly supported. On others, a print may always feed to the next line, in which case the Service Object will print the line buffer and perform a reverse line feed if supported. If the printer does not support either of these features, then Carriage Return acts like a Line Feed. The ValidateData method may be used to determine whether a Carriage Return without Line Feed is possible, and whether a reverse line feed is required to support it.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 254 of 330
POS Printer
Methods
255
Return
One of the following values is returned by the method and placed in the ResultCode property: Value OPOS_SUCCESS OPOS_E_ILLEGAL Meaning The method was successful. The specified Station does not exist. (See the CapJrnPresent, CapRecPresent, and CapSlpPresent properties.) Cannot perform while output is in progress. (Can only be returned if AsyncMode is FALSE.)
OPOS_E_BUSY
OPOS_E_EXTENDED ResultCodeExtended = OPOS_EPTR_COVER_OPEN: The printer cover is open. (Can only be returned if AsyncMode is FALSE.) ResultCodeExtended = OPOS_EPTR_JRN_EMPTY: The journal station was specified but is out of paper. (Can only be returned if AsyncMode is FALSE.) ResultCodeExtended = OPOS_EPTR_REC_EMPTY: The receipt station was specified but is out of paper. (Can only be returned if AsyncMode is FALSE.) ResultCodeExtended = OPOS_EPTR_SLP_EMPTY: The slip station was specified, but a form is not inserted. (Can only be returned if AsyncMode is FALSE.) Other Values See Also See ResultCode.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 255 of 330
256
Chapter 10
PrintTwoNormal Method
Syntax LONG PrintTwoNormal (LONG Stations, BSTR Data1, BSTR Data2); Parameter Stations Description The printer stations to be used. May be PTR_S_JOURNAL_RECEIPT, PTR_S_JOURNAL_SLIP, or PTR_S_RECEIPT_SLIP. The characters to be printed on the first station. May consist of printable characters and escape sequences. The characters must all fit on one printed line, so that the printer may attempt to print on both stations simultaneously. The characters to be printed on the second station. (Restrictions are the same as Data1.) If this string is the empty string (), then print the same data as Data1. On some printers, using this format may give additional increased print performance.
Data1
Data2
Remarks
Call to print two strings on two print stations simultaneously. When supported, this may give increased print performance. This method is performed synchronously if AsyncMode is FALSE, and asynchronously if AsyncMode is TRUE.
Return
One of the following values is returned by the method and placed in the ResultCode property: Value OPOS_SUCCESS OPOS_E_ILLEGAL Meaning The method was successful. The specified Stations do not support concurrent printing. (See the CapConcurrentJrnRec, CapConcurrentJrnSlp, and CapConcurrentRecSlp properties.) Cannot perform while output is in progress. (Can only be returned if AsyncMode is FALSE.)
OPOS_E_BUSY
OPOS_E_EXTENDED ResultCodeExtended = OPOS_EPTR_COVER_OPEN: The printer cover is open. (Can only be returned if AsyncMode is FALSE.)
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 256 of 330
POS Printer
Methods
257
ResultCodeExtended = OPOS_EPTR_JRN_EMPTY: The journal station was specified but is out of paper. (Can only be returned if AsyncMode is FALSE.) ResultCodeExtended = OPOS_EPTR_REC_EMPTY: The receipt station was specified but is out of paper. (Can only be returned if AsyncMode is FALSE.) ResultCodeExtended = OPOS_EPTR_SLP_EMPTY: The slip station was specified, but a form is not inserted. (Can only be returned if AsyncMode is FALSE.) Other Values See Also PrintNormal Method See ResultCode.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 257 of 330
258
Chapter 10
RotatePrint Method
Syntax LONG RotatePrint (LONG Station, LONG Rotation); Parameter Station Rotation Value PTR_RP_RIGHT90 PTR_RP_LEFT90 Description The printer station to be used. May be PTR_S_RECEIPT or PTR_S_SLIP. Direction of rotation. See values below. Meaning Rotate printing 90 to the right (clockwise). Rotate printing 90 to the left (counter-clockwise).
PTR_RP_ROTATE180 Rotate printing 180, that is, print upside-down. PTR_RP_NORMAL Remarks End rotated printing.
Enters or exits rotated print mode. This method is performed synchronously if AsyncMode is FALSE, and asynchronously if AsyncMode is TRUE. If Rotation is PTR_RP_ROTATE180, then upside-down print mode is entered. Subsequent calls to PrintNormal or PrintImmediate will print the data upsidedown until RotatePrint is called with the Rotation parameter set to PTR_RP_NORMAL. Each print line is rotated by 180 Lines are printed in the order that they are sent . to the Control, with the start of each line justified at the right margin of the printer station. Only print methods PrintNormal and PrintImmediate may be used while in upside-down print mode. If Rotation is PTR_RP_RIGHT90 or PTR_RP_LEFT90, then sideways print mode is entered. Subsequent calls to PrintNormal will buffer the print data (either at the printer or the Service Object, depending on the printer capabilities) until RotatePrint is called with the Rotation parameter set to PTR_RP_NORMAL. (In this case, PrintNormal only buffers the data it does not initiate printing. Also, the value of the AsyncMode property does not affect its operation: No OutputID will be assigned to the request, nor will an OutputCompleteEvent be fired.) Each print line is rotated by 90 If the lines are not all the same length, then they . are justified at the start of each line. Only PrintNormal may be used while in sideways print mode.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 258 of 330
POS Printer
Methods
259
If Rotation is PTR_RP_NORMAL, then rotated print mode is exited. If sidewaysrotated print mode was in effect and some data was buffered by calls to the PrintNormal method, then the buffered data is printed. The entire rotated block of lines are treated as one message. Changing the rotation mode may also change the station line height, line spacing, s line width, and other metrics. Calling the ClearOutput method cancels rotated print mode. Any buffered sideways rotated print lines are also cleared. Return One of the values in the following table is returned by the method and placed in the ResultCode property: Value OPOS_SUCCESS OPOS_E_ILLEGAL Meaning The method was successful. The specified Station does not exist (see the CapJrnPresent, CapRecPresent, and CapSlpPresent properties), or the Station does not support the specified rotation (see the station rotation capability properties). s Cannot perform while output is in progress. (Can only be returned if AsyncMode is FALSE.)
OPOS_E_BUSY
OPOS_E_EXTENDED ResultCodeExtended = OPOS_EPTR_COVER_OPEN: The printer cover is open. (Can only be returned if AsyncMode is FALSE.) ResultCodeExtended = OPOS_EPTR_REC_EMPTY: The receipt station was specified but is out of paper. (Can only be returned if AsyncMode is FALSE.) ResultCodeExtended = OPOS_EPTR_SLP_EMPTY: The slip station was specified, but a form is not inserted. (Can only be returned if AsyncMode is FALSE.) Other Values See Also See ResultCode.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 259 of 330
260
Chapter 10
SetBitmap Method
Syntax LONG SetBitmap (LONG BitmapNumber, LONG Station, BSTR FileName, LONG Width, LONG Alignment); Parameter BitmapNumber Station FileName Description The number to be assigned to this bitmap. Two bitmaps, numbered 1 and 2, may be set. The printer station to be used. May be either PTR_S_RECEIPT or PTR_S_SLIP. Name of Windows bitmap file. The file must be in uncompressed format. If set to an empty string (), then the bitmap is unset. Printed width of the bitmap to be performed. See PrintBitmap for values. Placement of the bitmap. See PrintBitmap for values.
Call to save information about a bitmap for later printing. The bitmap may then be printed by calling the PrintNormal or PrintImmediate method with the print bitmap escape sequence in the print data. The print bitmap escape sequence will typically be included in a string for printing top and bottom transaction headers. A Service Object may choose to cache the bitmap for later use to provide better performance. Regardless, the bitmap file and parameters are validated for correctness by this method. The application must ensure that the printer station metrics, such as character width, line height, and line spacing are set for the Station before calling this method. The Service Object may perform transformations on the bitmap in preparation for later printing based upon the current values.
Return
One of the following values is returned by the method and placed in the ResultCode property: Value OPOS_SUCCESS Meaning The method was successful.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 260 of 330
POS Printer
Methods
261
OPOS_E_ILLEGAL
One of the following errors occurred: * BitmapNumber is invalid * Station does not exist * Station does not support bitmap printing * Width is too big * Alignment is invalid or too big FileName was not found.
OPOE_E_NOEXIST
OPOS_E_EXTENDED ResultCodeExtended = OPOS_EPTR_TOOBIG: The bitmap is either too wide to print without transformation, or it is too big to transform. ResultCodeExtended = OPOS_EPTR_BADFORMAT: The specified file is either not a bitmap file, or it is in an unsupported format. Other Values See Also See ResultCode.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 261 of 330
262
Chapter 10
SetLogo Method
Syntax LONG SetLogo (LONG Location, BSTR Data); Parameter Location Data Description The logo to be set. May be PTR_L_TOP or PTR_L_BOTTOM. The characters that produce the logo. May consist of printable characters, escape sequences, carriage returns (13 decimal), and line feeds (10 decimal).
Remarks
Call to save a data string as the top or bottom logo. A logo may then be printed by calling the PrintNormal, PrintTwoNormal, or PrintImmediate method with the print top logo or print bottom logo escape sequence in the print data.
Return
One of the following values is returned by the method and placed in the ResultCode property: Value OPOS_SUCCESS OPOS_E_ILLEGAL Other Values Meaning The method was successful. An invalid Location was specified. See ResultCode.
See Also
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 262 of 330
POS Printer
Methods
263
TransactionPrint Method
Syntax
LONG TransactionPrint (LONG Station, LONG Control); Parameter Station Description The printer station to be used. May be PTR_S_JOURNAL, PTR_S_RECEIPT, or PTR_S_SLIP. Transaction control. See values below. Meaning
Control Value
PTR_TP_TRANSACTION Begin a transaction. PTR_TP_NORMAL Remarks End a transaction by printing the buffered data.
Enters or exits transaction mode. If Control is PTR_TP_TRANSACTION, then transaction mode is entered. Subsequent calls to PrintNormal, CutPaper, RotatePrint, PrintBarCode, and PrintBitmap will buffer the print data (either at the printer or the Service Object, depending on the printer capabilities) until TransactionPrint is called with the Control parameter set to PTR_TP_NORMAL. (In this case, the print methods only validate the method parameters and buffer the data they do not initiate printing. Also, the value of the AsyncMode property does not affect their operation: No OutputID will be assigned to the request, nor will an OutputCompleteEvent be fired.) If Control is PTR_TP_NORMAL, then transaction mode is exited. If some data was buffered by calls to the methods PrintNormal, CutPaper, RotatePrint, PrintBarCode, and PrintBitmap, then the buffered data is printed. The entire transaction is treated as one message. This method is performed synchronously if AsyncMode is FALSE, and asynchronously if AsyncMode is TRUE. Calling the ClearOutput method cancels transaction mode. Any buffered print lines are also cleared.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 263 of 330
264
Chapter 10
Return
One of the values in the following table is returned by the method and placed in the ResultCode property: Value OPOS_SUCCESS OPOS_E_ILLEGAL Meaning The method was successful. The specified Station does not exist (see the CapJrnPresent, CapRecPresent, and CapSlpPresent properties), or CapTransaction is FALSE. Cannot perform while output is in progress. (Can only be returned if AsyncMode is FALSE.)
OPOS_E_BUSY
OPOS_E_EXTENDED ResultCodeExtended = OPOS_EPTR_COVER_OPEN: The printer cover is open. (Can only be returned if AsyncMode is FALSE.) ResultCodeExtended = OPOS_EPTR_JRN_EMPTY: The journal station was specified but is out of paper. (Can only be returned if AsyncMode is FALSE.) ResultCodeExtended = OPOS_EPTR_REC_EMPTY: The receipt station was specified but is out of paper. (Can only be returned if AsyncMode is FALSE.) ResultCodeExtended = OPOS_EPTR_SLP_EMPTY: The slip station was specified, but a form is not inserted. (Can only be returned if AsyncMode is FALSE.) Other Values See ResultCode.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 264 of 330
POS Printer
Methods
265
ValidateData Method
Syntax
LONG ValidateData (LONG Station, BSTR Data); Parameter Station Description The printer station to be used. May be PTR_S_JOURNAL, PTR_S_RECEIPT, or PTR_S_SLIP. The data to be validated. May include printable data and escape sequences.
Data Remarks
Call to determine whether a data sequence, possibly including one or more escape sequences, is valid for the specified station, before calling the PrintImmediate, PrintNormal, or PrintTwoNormal methods. This method does not cause any printing, but is used to determine the capabilities of the station.
Return
One of the following values is returned by the method and placed in the ResultCode property: Value OPOS_SUCCESS OPOS_E_ILLEGAL OPOS_E_FAILURE Meaning The data is valid. Some of data is not precisely supported by the printer station, but the Control can select valid alternatives. Some of the data is not supported. No alternatives can be selected.
Cases which cause OPOS_E_ILLEGAL to be returned are: Escape Sequence Paper cut Feed and Paper cut Condition The percentage is not precisely supported: Control # will select the closest supported value. The percentage is not precisely supported: Control # will select the closest supported value.
Feed, Paper cut, and Stamp The percentage is not precisely supported: # Control will select the closest supported value.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 265 of 330
266
Chapter 10
Feed units Feed reverse Shading Scale horizontally Scale vertically Data data1CRdata2LF
The unit count is not precisely supported: Control # will select the closest supported value. The line count is too large: Control will select the # maximum supported value. The percentage is not precisely supported: Control # will select the closest supported value. The scaling factor is not supported: Control will # select the closest supported value. The scaling factor is not supported: Control will # select the closest supported value. Condition (Where CR is a Carriage Return and LF is a Line Feed) In order to print data data1 and remain on the same line, the Service Object will print with a line advance, then perform a reverse line feed. The data data2 will then overprint data1.
Cases which will cause OPOS_E_FAILURE to be returned are: Escape Sequence (General) Paper cut Feed and Paper cut Condition The escape sequence format is not valid. Not supported. Not supported. Not supported.
Feed, Paper cut, and Stamp Fire stamp Print bitmap Feed reverse Font typeface
Not supported. Bitmap printing is not supported, or the bitmap number is out of range. # Not supported. The typeface is not supported: #
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 266 of 330
POS Printer
Methods
267
Bold Underline Italic Alternate color Reverse video Shading Single high & wide Double wide Double high Double high & wide Data data1CRdata2LF
Not supported. Not supported. Not supported. Not supported. Not supported. Not supported. Not supported. Not supported. Not supported. Not supported. Condition (Where CR is a Carriage Return and LF is a Line Feed) Not able to print data and remain on the same line. The data data1 will print on one line, and the data data2 will print on the next line.
See Also
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 267 of 330
268
Chapter 10
Events
ErrorEvent Event
Syntax void ErrorEvent (LONG ResultCode, LONG ResultCodeExtended, LONG ErrorLocus, LONG* pErrorResponse); Parameter ResultCode ResultCodeExtended ErrorLocus pErrorResponse Description Result code causing the error event. See ResultCode for values. Extended result code causing the error event. See values below. Set to OPOS_EL_OUTPUT: Error occurred while processing asynchronous output. Pointer to the error event response. See values below.
If ResultCode is OPOS_E_EXTENDED, then ResultCodeExtended is set to one of the following values: Value OPOS_EPTR_COVER_OPEN OPOS_EPTR_JRN_EMPTY OPOS_EPTR_REC_EMPTY OPOS_EPTR_SLP_EMPTY Meaning The printer cover is open. The journal station is out of paper. The receipt station is out of paper. A form is not inserted in the slip station.
The contents at the location pointed to by the pErrorResponse parameter are preset to the default value of OPOS_ER_RETRY. The application may set the value to one of the following: Value OPOS_ER_RETRY OPOS_ER_CLEAR Remarks Meaning Retry the asynchronous output. The error state is exited. Clear the asynchronous output. The error state is exited.
Fired when an error is detected and the Control State transitions into the error s state.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 268 of 330
POS Printer
Events
269
See Also
StatusUpdateEvent Event
Syntax void StatusUpdateEvent (LONG Data); The Data parameter may be one of the following: Value PTR_SUE_COVER_OPEN PTR_SUE_COVER_OK PTR_SUE_JRN_EMPTY Meaning Printer cover is open. Printer cover is closed. No journal paper.
PTR_SUE_JRN_NEAREMPTY Journal paper is low. PTR_SUE_JRN_PAPEROK PTR_SUE_REC_EMPTY Journal paper is ready. No receipt paper.
PTR_SUE_REC_NEAREMPTY Receipt paper is low. PTR_SUE_REC_PAPEROK PTR_SUE_SLP_EMPTY Receipt paper is ready. No slip form.
PTR_SUE_SLP_NEAREMPTY Almost at the bottom of the slip form. PTR_SUE_SLP_PAPEROK PTR_SUE_IDLE Slip form is inserted. All asynchronous output has finished, either successfully or because output has been cleared. The printer State is now OPOS_S_IDLE. The FlagWhenIdle property must be TRUE for this event to be fired, and the Control automatically resets the property to FALSE just before firing the event.
Remarks
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 269 of 330
270
Chapter 11
C H A P T E R
1 1
Scale
Summary
Properties
Common CheckHealthText Claimed DataEventEnabled DeviceEnabled FreezeEvents OutputID ResultCode ResultCodeExtended State ControlObjectDescription ControlObjectVersion ServiceObjectDescription ServiceObjectVersion DeviceDescription DeviceName Specific WeightUnits MaximumWeight Long Long R R Open Open Type String Boolean Access R R Initialized After Open Open Not Supported Open & Claim Open Not Supported -Open ---Open Open Open Open
Boolean R/W Boolean R/W Boolean R/W Long Long Long Long String Long String Long String String R R R R R R R R R R
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 270 of 330
Scale
Summary
271
Methods
Common Open Close Claim Release CheckHealth ClearInput ClearOutput DirectIO May Use After -Open Open Open & Claim Open, Claim, & Enable Not Supported Not Supported Open
Specific ReadWeight
Events
Name DataEvent DirectIOEvent ErrorEvent OutputCompleteEvent StatusUpdateEvent May Occur After Not Supported Open Not Supported Not Supported Not Supported
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 271 of 330
272
Chapter 11
General Information
The Scale Control OLE programmatic ID is OPOS.Scale. s
Model
The Scale Control has the following functionality: Provides item weight to the application. The application may specify the measure of weight to be in grams, kilograms, ounces, or pounds. The Scale Control returns weight from a synchronous method. No event-driven model is provided due to the typical usage of the device.
Device Sharing
The scale is an exclusive-use device, as follows: After opening the device, properties are readable. The application must claim the device before enabling it. The application must claim and enable the device before calling methods that manipulate the device. See the Summary table for precise usage prerequisites.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 272 of 330
Scale
Properties
273
Properties
MaximumWeight Property
Syntax Remarks LONG MaximumWeight; Holds the maximum weight measurement possible from the scale. The measurement unit is available via the WeightUnit property. MaxWeight has an assumed decimal place located after the thousands digit position. For example, an actual value of 12345 represents 12.345, and an actual value of 5 represents 0.005. Changing the property WeightUnit will also cause this property to change. This property is initialized by the Open method.
WeightUnit Property
Syntax Remarks LONG WeightUnit; Holds the unit of weight of scale data. Valid units are: Value SCAL_WU_GRAM Meaning Unit is a gram.
SCAL_WU_KILOGRAM Unit is a kilogram (= 1000 grams). SCAL_WU_OUNCE SCAL_WU_POUND Unit is an ounce. Unit is a pound (= 16 ounces).
This property is initialized to the scale weight unit by the Open method. s
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 273 of 330
274
Chapter 11
Methods
ReadWeight Method
Syntax LONG ReadWeight (LONG* pWeightData, LONG Timeout); Parameter pWeightData Timeout Remarks Description Points to the number where the weight is returned. The number of milliseconds to wait for a settled weight before failing the method.
Call to read a weight from the scale. The weight returned at pWeightData has an assumed decimal place located after the thousands digit position. For example, an actual value of 12345 represents 12.345, and an actual value of 5 represents 0.005.
Return
One of the following values is returned by the method and placed in the ResultCode property: Value OPOS_SUCCESS OPOS_E_TIMEOUT Meaning A valid weight was read and placed into the specified location. A stable non-zero weight was not available before Timeout milliseconds elapsed.
OPOS_E_EXTENDED ResultCodeExtended = OPOS_ESCAL_OVERWEIGHT: The weight was over MaximumWeight. Other Values See ResultCode.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 274 of 330
Scale
Methods
275
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 275 of 330
C H A P T E R
1 2
Summary
Properties
Common CheckHealthText Claimed DataEventEnabled DeviceEnabled FreezeEvents OutputID ResultCode ResultCodeExtended State
ControlObjectDescription ControlObjectVersion ServiceObjectDescription ServiceObjectVersion DeviceDescription DeviceName Type String Boolean Access R R Initialized After Open Open Open Open & Claim Open Not Supported -Open ---Open Open Open Open
Boolean R/W Boolean R/W Boolean R/W Long Long Long Long String Long String Long String String R R R R R R R R R R
Specific ScanData
String
Open
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 277 of 330
278
Chapter 12
Methods
Common Open Close Claim Release CheckHealth ClearInput ClearOutput DirectIO
May Use After -Open Open Open & Claim Open, Claim, & Enable Open, Claim, & Enable Not Supported Open
Events
Name DataEvent DirectIOEvent ErrorEvent OutputCompleteEvent StatusUpdateEvent
May Occur After Open, Claim, & Enable Open Open, Claim, & Enable Not Supported Not Supported
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 278 of 330
General Information
279
General Information
The Scanner Control OLE programmatic ID is OPOS.Scanner. s
Capabilities
The Scanner Control has the followingcapability: Reads encoded data from a label.
Model
The Scanner Control follows the general Input Model for event-driven input: When input is received by the Control, it generates a DataEvent. Just before firing this event, the Control disables further data events by setting the DataEventEnabled property to FALSE. This causes buffering of further input data at the Control while the application processes the current input and associated properties. When the application has finished the current input and is ready for more data, it reenables events by setting DataEventEnabled to TRUE. All input buffered at the Control may be deleted by calling the ClearInput method.
Device Sharing
The scanner is an exclusive-use device, as follows: The application must claim the device before enabling it. The application must claim and enable the device before the device begins reading input. See the Summary table for precise usage prerequisites.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 279 of 330
280
Chapter 12
Properties
ScanData Property
Syntax Remarks BSTR ScanData; The data read from the scanner. Scan data is, in general, in the format as delivered from the scanner. Message header and trailer information should be removed, however, since they do not contain useful information for an application and are likely to be scanner-specific. Common header information is a prefix character (such as an STX character). Common trailer information is a terminator character (such as an ETX or CR character) and a block check character if one is generated by the scanner. ScanData should include a symbology character if one is returned by the scanner (such as an for UPC-A). ScanData should also include check digits if they are A present in the label and returned by the scanner. (Note that both symbology characters and check digits may or may not be present, depending upon the scanner configuration. The Scanner Control will return them if present, but will not generate or calculate them if they are absent.) If a barcode is read that contains a supplemental code or multiple labels, the supplemental code or additional labels are delivered to the application as separate labels. This is necessary due to the current lack of standardization of these barcode types. One is not able to determine all variations based upon the individual barcode data. Therefore, the application will need to determine when a supplemental code or multiple label barcode has been read based upon the data returned. This property is set by the Control just before firing the DataEvent.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 280 of 330
Events
281
Events
DataEvent Event
Syntax void DataEvent (LONG Status); The Status parameter contains zero. Remarks Fired to present input data from the device to the application. The scanner data is placed in the ScanData property before this event is fired.
ErrorEvent Event
Syntax void ErrorEvent (LONG ResultCode, LONG ResultCodeExtended, LONG ErrorLocus, LONG* pErrorResponse); Parameter ResultCode ResultCodeExtended ErrorLocus pErrorResponse Description Result code causing the error event. See ResultCode for values. Extended result code causing the error event. See ResultCodeExtended for values. Location of the error. See values below. Pointer to the error event response. See values below.
The ErrorLocus parameter may be one of the following: Value OPOS_EL_INPUT Meaning Error occurred while gathering or processing event-driven input. No input data is available.
OPOS_EL_INPUT_DATA Error occurred while gathering or processing eventdriven input, and some previously buffered data is available.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 281 of 330
282
Chapter 12
The contents at the location pointed to by the pErrorResponse parameter are preset to a default value, based on the ErrorLocus. The application may change the value to one of the following: Value OPOS_ER_CLEAR Meaning Clear the buffered input data. The error state is exited. Default when locus is OPOS_EL_INPUT.
OPOS_ER_CONTINUEINPUT Use only when locus is OPOS_EL_INPUT_DATA. Acknowledges the error and directs the Control to continue processing . The Control remains in the error state, and will fire additional DataEvents as directed by the DataEventEnabled property. When all input has been fired and the DataEventEnabled property is again set to TRUE, then another ErrorEvent is fired with locus OPOS_EL_INPUT. Default when locus is OPOS_EL_INPUT_DATA. Remarks Fired when an error is detected while trying to read scanner data. Input error events are not fired until the DataEventEnabled property is TRUE, so that proper application sequencing occurs. See Also Status, Result Code, and State Model
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 282 of 330
C H A P T E R
1 3
Signature Capture
Summary
Properties
Common CheckHealthText Claimed DataEventEnabled DeviceEnabled FreezeEvents OutputID ResultCode ResultCodeExtended State
ControlObjectDescription ControlObjectVersion ServiceObjectDescription ServiceObjectVersion DeviceDescription DeviceName Type String Boolean Access R R Initialized After Open Open Open Open & Claim Open Not Supported -Open ---Open Open Open Open
Boolean R/W Boolean R/W Boolean R/W Long Long Long Long String Long String Long String String R R R R R R R R R R
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 283 of 330
284
Chapter 13
Access R R R R R R R
Initialized After Open Open Open Open Open, Claim, & Enable Open, Claim, & Enable Open, Claim, & Enable
Methods
Common Open Close Claim Release CheckHealth ClearInput ClearOutput DirectIO Specific BeginCapture EndCapture
May Use After -Open Open Open & Claim Open, Claim, & Enable Open, Claim, & Enable Not Supported Open
Events
Name
DataEvent DirectIOEvent ErrorEvent OutputCompleteEvent StatusUpdateEvent May Occur After Open, Claim, & Enable Open Open, Claim, & Enable Not Supported Not Supported
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 284 of 330
Signature Capture
General Information
285
General Information
The Signature Capture Control OLE programmatic ID is OPOS.SigCap. s
Capabilities
The Signature Capture Control has the following capability: Obtains a signature captured by a signature capture device. The captured signature data is in the form of lines consisting of a series of points. Each point lies within the coordinate system defined by the resolution of the device, where (0,0) is the upper-left point of the device, and (MaximumX,MaximumY) is the lower-right point. The Signature Capture Control may have the following additional capabilities: Provides a way for the user to terminate signature capture that is, to tell the device that she or he has completed the signature. Displays form/data on the signature capture device.
Model
The signature capture device usage model is: Open and claim the device. Enable the device and set DataEventEnabled to TRUE. Begin capturing a signature by calling the BeginCapture method. This method displays a form or data screen (if the device has a display) and enables the stylus. If the device provides a way for the user to terminate the signature, then when the user terminates, the Control fires a DataEvent. Otherwise, the application must call the EndCapture method to terminate the signature. Disable the device. If the device has a display, this also clears the display.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 285 of 330
286
Chapter 13
The Signature Capture Control follows the general Input Model for event-driven input: The capture of signature data begins when the BeginCapture method is called. When input is received by the Control, it generates a DataEvent. Just before firing this event, the Control disables further data events by setting the DataEventEnabled property to FALSE. If signature capture is terminated by calling EndCapture, then no DataEvent is fired. All input buffered at the Control may be deleted by calling the ClearInput method.
Device Sharing
The signature capture device is an exclusive-use device, as follows: The application must claim the device before enabling it. The application must claim and enable the device before calling methods that manipulate the device or before changing some writable properties. See the Summary table for precise usage prerequisites.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 286 of 330
Signature Capture
Properties
287
Properties
CapDisplay Property
Syntax Remarks BOOL CapDisplay; Set to TRUE if the device is able to display a form or data entry screen; otherwise it is FALSE. This property is initialized by the Open method.
CapUserTerminated Property
Syntax Remarks BOOL CapUserTerminated; Set to TRUE if the user is able to terminate signature capture by checking a completion box, pressing a completion button, or performing some other interaction with the device. Contains FALSE if the application must end signature capture by calling the EndCapture method. This property is initialized by the Open method.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 287 of 330
288
Chapter 13
MaximumX Property
Syntax Remarks LONG MaximumX; Contains the maximum horizontal coordinate of the signature capture device. It must be less than 65,536. This property is initialized by the Open method.
MaximumY Property
Syntax Remarks LONG MaximumY; Contains the maximum vertical coordinate of the signature capture device. It must be less than 65,536. This property is initialized by the Open method.
RawData Property
Syntax Remarks BSTR RawData; Contains the signature captured from the device in a device-specific format. This data is often in a compressed form to minimize signature storage requirements. Reconstruction of the signature from this data requires device-specific processing. This property is set by the Control just before firing the DataEvent or by the EndCapture method. See Also TotalPoints Property; PointArray Property
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 288 of 330
Signature Capture
Properties
289
TotalPoints Property
Syntax Remarks LONG TotalPoints; Contains the total number of signature points in the last captured signature. This property is set by the Control just before firing the DataEvent or by the EndCapture method. It includes the line drawing terminators (see PointArray).
PointArray Property
Syntax Remarks BSTR PointArray; Contains the signature captured from the device. It consists of an array of (x,y) coordinate points with the number of array entries specified in TotalPoints. Each point is represented by four characters: x (low 8 bits), x (high 8 bits), y (low 8 bits), y (high 8 bits).
Reconstruction of the signature using the points is accomplished by beginning with a line drawn from the first point in PointArray to the second point, then to the third, and so on. Each line is terminated when the end of PointArray is reached or when a line terminator point with the values ( x=0xFFFF, y=0xFFFF) is encountered. The next point is the first point for a new line. Almost all signatures are comprised of more than one line. This property is set by the Control just before firing the DataEvent or by the EndCapture method. See Also RawData Property
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 289 of 330
290
Chapter 13
Methods
BeginCapture Method
Syntax LONG BeginCapture (BSTR FormName); The FormName parameter contains the registry subkey name for obtaining form or data screen information for display on the device screen. Remarks Call to start capturing a signature. If CapDisplay is TRUE, then FormName is used to find information about the form or data screen to be displayed. The operating system registry key
\HKEY_LOCAL_MACHINE\SOFTWARE\OLEforRetail\ServiceOPOS\ SignatureCapture\DeviceName\FormName
is accessed to get this information. DeviceName is the Service Object Device s Name key. The format and features of each signature capture device form/data screen varies s widely and is often built with proprietary tools. Therefore, this key data and s additional values and data under this key contain information that varies by Service Object. Typically, the registry key data is set to a form/data screen file name, and s extra registry values and data are set as needed to control its display. (See the appendix OPOS Registry Usage, page 301.) After displaying the form or data screen, when applicable, the signature capture stylus is enabled. Return One of the following values is returned by the method and placed in the ResultCode property: Value OPOS_SUCCESS OPOS_E_NOEXIST Other Values Meaning Signature capture successfully started. FormName was not found. See ResultCode.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 290 of 330
Signature Capture
Methods
291
EndCapture Method
Syntax Remarks LONG EndCapture (); Call to stop capturing a signature. Terminates signature capture. If a signature was captured, then it is placed in the properties TotalPoints, PointArray, and RawData. If no signature was captured, then TotalPoints is set to zero, and PointArray and RawData are set to the empty string (). Return One of the following values is returned by the method and placed in the ResultCode property: Value OPOS_SUCCESS OPOS_E_ILLEGAL Other Values See Also DataEvent Meaning Signature capture successfully stopped. Signature capture was not in progress. See ResultCode.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 291 of 330
292
Chapter 13
Events
DataEvent Event
Syntax Remarks void DataEvent (LONG Status); Fired to signal input data from the device to the application . This event can only be fired if the user can terminate signature capture that is, if CapUserTerminated is TRUE. The Status parameter contains TRUE if the user has entered a signature before terminating capture. It contains FALSE if the user terminated capture with no signature. Before firing the event, the properties TotalPoints, PointArray, and RawData are set to appropriate values. See Also EndCapture Method
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 292 of 330
Signature Capture
Events
293
ErrorEvent Event
Syntax void ErrorEvent (LONG ResultCode, LONG ResultCodeExtended, LONG ErrorLocus, LONG* pErrorResponse); Parameter ResultCode ResultCodeExtended ErrorLocus pErrorResponse Description Result code causing the error event. See ResultCode for values. Extended result code causing the error event. See ResultCodeExtended for values. Location of the error. See values below. Pointer to the error event response. See values below.
The ErrorLocus parameter may be one of the following: Value OPOS_EL_INPUT Meaning Error occurred while gathering or processing event-driven input. No input data is available.
OPOS_EL_INPUT_DATA Error occurred while gathering or processing eventdriven input, and some previously buffered data is available. (Very unlikely see Remarks.) The contents at the location pointed to by the pErrorResponse parameter are preset to a default value, based on the ErrorLocus. The application may change the value to one of the following: Value OPOS_ER_CLEAR Meaning Clear the buffered input data. The error state is exited. Default when locus is OPOS_EL_INPUT.
OPOS_ER_CONTINUEINPUT Use only when locus is OPOS_EL_INPUT_DATA. Acknowledges the error and directs the Control to continue processing . The Control remains in the error state, and will fire additional DataEvents as directed by the DataEventEnabled property. When all input has been fired and the DataEventEnabled property is again set to TRUE, then another ErrorEvent is fired with locus
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 293 of 330
294
Chapter 13
OPOS_EL_INPUT. Default when locus is OPOS_EL_INPUT_DATA. Remarks Fired when an error is detected while trying to read signature capt ure data. Input error events are not fired until the DataEventEnabled property is TRUE, so that proper application sequencing occurs. With proper programming, an ErrorEvent with locus OPOS_EL_INPUT_DATA will not occur. This is because each signature requires an explicit BeginCapture method, which can generate at most one DataEvent. The application would need to defer the DataEvent by setting DataEventEnabled to FALSE and request another signature before an OPOS_EL_INPUT_DATA would be possible. See Also Status, Result Code, and State Model
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 294 of 330
295
A P P E N D I X
Change History
Release 1.01
Release 1.01 mostly adds clarifications and corrections, but the Line Display and Signature Capture chapters received substantive changes to correct deficiencies in their definition. Release 1.01 replaces Release 1.0. The ControlObjectVersion for a compliant Control Object is 1000xxx, where xxx is a vendor-specific build number. The ServiceObjectVersion for a compliant Service Object is 1000xxx, where xxx is a vendor-specific build number. Section Second Page Add name of Microsoft Web site for OPOS information. Introduction When Properties May Be Accessed Update to say that capabilities are initialized at Open, others may not be initialized until DeviceEnabled = TRUE, and properties remain initialized until the Control is closed. Introduction Device Sharing Model If an exclusive device is Released, then reClaimed, settable device characteristics are restored to their state at Release. Common Release method If device is enabled, then disable before releasing. Cash Drawer WaitForDrawerClose method BeepFrequency is in hertz. Change
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 295 of 330
296
APPENDIX A
Hard Totals General Information Recommend claiming necessary files before a BeginTrans, to ensure that CommitTrans does not fail. Keylock General Information Claim will return OPOS_E_ILLEGAL, not success. Line Display General Information Major clarification of line display usage modes; including intercharacter wait and marquees. Line Display MarqueeFormat property Add this property. Line Display MarqueeType property Add DISP_MT_INIT value. Line Display ClearText and RefreshWindow methods Clarify their functionality. POS Printer XxxLetterQuality properties Add initialization information. POS Printer XxxLineWidth properties Clarify these properties. POS Printer CapConcurrentXxxXxx properties Clarify that if a concurrent capability is false, then the application should print to only one of the stations at a time, and not alternate print lines between them. POS Printer CapXxxNearendSensor properties Rename to CapXxxNearEndSensor for consistency with XxxNearEnd properties. POS Printer CapXxxBarcode properties Rename to CapXxxBarCode for consistency with PrintBarCode method. Scale Summary Change ClearInput method to Not Supported. Scale input is not event-driven. Scale WeightUnit property Change to read-only property. Signature Capture MaximumX and MaximumY properties Clarify that maximum value is 65,535.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 296 of 330
Change History
Release 1.01
297
Signature Capture TotalVectors and VectorArray properties Rename to TotalPoints and PointArray. Update the General Information and the property remarks sections for consistency. Signature Capture PointArray property Clarify that each point is represented by four characters: x (low 8 bits), x (high 8 bits), y (low 8 bits), y (high 8 bits). Throughout Update the property initialization details. OPOSDISP.H header file Add DISP_MT_INIT constant and MarqueeFormat constants. Appendix C Technical Details Add this appendix, with the sections: - System strings and binary data. - Event Handler Restrictions.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 297 of 330
298
APPENDIX A
Release 1.1
Release 1.1 adds APIs based on requirements from OPOS-J, the Japanese OPOS consortium. Release 1.1 is a superset of Release 1.01. The ControlObjectVersion for a compliant Control Object is 1001xxx, where xxx is a vendor-specific build number. A Release 1.1 compliant Control Object will function correctly with Service Objects of either Release 1.01 or Release 1.1. If the application attempts to access a property or method that is new to Release 1.1 through a Release 1.01 Service Object, the Control Object will return a ResultCode value of OPOS_E_NOSERVICE. The ServiceObjectVersion for a compliant Service Object is 1001xxx, where xxx is a vendor-specific build number. A Release 1.1 compliant Service Object will function correctly with Control Objects of either Release 1.01 or Release 1.1. Of course, the application will not be able to access access a property or method that is new to Release 1.1 through a Release 1.01 Control Object. Section Second Page Remove CompuServe reference. POS Keyboard New device: Add information in several locations, plus POS Keyboard chapter. Change
Line Display CapCharacterSet property Add values for Kana and Kanji. Line Display CharacterSet property Add Windows code page information.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 298 of 330
Change History
Release 1.1
299
POS Printer Data Characters and Escape Sequences Add new sequences for: Feed and Paper cut Feed, Paper cut, and Stamp Feed lines Feed units Feed reverse Font typeface selection Reverse video Shading Scale horizontally Scale vertically Add width selection for underline sequence. POS Printer: Add the following properties and methods: CapCharacterSet property CapTransaction property ErrorLevel property ErrorString property FontTypefaceList property RecBarCodeRotationList property RotateSpecial property SlpBarCodeRotationList property TransactionPrint method ValidateData method POS Printer CharacterSet property Add Windows code page information. POS Printer PrintBarCode method Add information on effects of the RotateSpecial property. POS Printer PrintImmediate and PrintNormal methods Clarify the effects of Carriage Return and Line Feed. Scanner ScanData property Clarify the data that is present in this property. OPOSDISP.H header file Add CapCharacterSet values for Kana and Kanji.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 299 of 330
300
APPENDIX A
OPOSPTR.H header file Add CapCharacterSet values. Add ErrorLevel values. Add TransactionPrint Control values.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 300 of 330
301
A P P E N D I X
OPOS Controls require some data in the system registry in order for the Control Objects to locate the proper Service Object and initialize it for the device. The registry is organized in a hierarchical structure, in which each level is named a key. Each key may contain: Additional keys (sometimes called subkeys). Zero or more named values. A value is assigned data of type string, binary, or double-word. One default value that may be assigned data of type string. OPOS only defines string data.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 301 of 330
302
APPENDIX B
Other values may be defined as needed by the Service Object. Values might contain information such as: Communications Port Baud Rate Serial Line Characteristics Interrupt Request (IRQ) Values Input/Output (I/O) Ports
A Programmatic ID, or Prog ID, is the name of a key that must appear in the HKEY_CLASSES_ROOT section of the registry. This key must have a subkey named CLSID, which is the Class ID associated with the Prog ID. The Class ID must be a key within the HKEY_CLASSES_ROOT\CLSID registry section. This key contains subkeys that specify the OLE Automation Server type and that instruct OLE how to start the Server.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 302 of 330
303
Example
In this example, keys are listed in
italics.
Comments appear as
comment.
Two device classes are given: POSPrinter and CashDrawer. The POSPrinter class contains two Device Names. Also, two Logical Device Names are present, which point to the Device Names. The CashDrawer class contains one Device Name and one Logical Device Name. The Service Object has a unique Prog ID but uses the same executable as one of the printers. This Service Object could use the example value Uses to point to some registry values of the printer device that can be used for the cash drawer parameters.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 303 of 330
304
APPENDIX B
\HKEY_LOCAL_MACHINE \SOFTWARE \OLEforRetail \ServiceOPOS \POSPrinter Device Class Key \NCR7156=NCR.Ptr7156.1 Device Name Key Service=C:\OPOS\NCR\PTR7156.DLL Description=NCR 7156 Serial Printer Version=1.0.12 ...Service Object-specific values. Might include: Port=COM3 BaudRate=9600 \Epson950=Epson.PtrTMU950.1 Device Name Key Service=TMU950.EXE Description=Epson TM-U950 Printer Version=1.0.7 ...Service Object-specific values could go here. PSI.Ptr.1=NCR7156 Logical Device Name PSI.Ptr.2=Epson950 Logical Device Name \CashDrawer Device Class Key \EpsonCash=Epson.CD.1 Device Name Key Service=TMU950.EXE Description=Epson Cash Drawer Kickout on TM-U950 Version=1.0.7 ...Service Object-specific values. Might include: Uses=POSPrinter\Epson950 PSI.CD.1=EpsonCash Logical Device Name \ServiceInfo \EPSON InstallDir=C:\OPOS\EPSON InstallDate=1995/11/13
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 304 of 330
305
A P P E N D I X
///////////////////////////////////////////////////////////////////// // OPOS "State" Property Constants ///////////////////////////////////////////////////////////////////// const const const const LONG LONG LONG LONG OPOS_S_CLOSED OPOS_S_IDLE OPOS_S_BUSY OPOS_S_ERROR = = = = 1; 2; 3; 4;
///////////////////////////////////////////////////////////////////// // OPOS "ResultCode" Property Constants ///////////////////////////////////////////////////////////////////// const LONG OPOSERR = 100; const LONG OPOSERREXT = 200; const const const const const const const const const const const LONG LONG LONG LONG LONG LONG LONG LONG LONG LONG LONG OPOS_SUCCESS OPOS_E_CLOSED OPOS_E_CLAIMED OPOS_E_NOTCLAIMED OPOS_E_NOSERVICE OPOS_E_DISABLED OPOS_E_ILLEGAL OPOS_E_NOHARDWARE OPOS_E_OFFLINE OPOS_E_NOEXIST OPOS_E_EXISTS = 0; = 1 + = 2 + = 3 + = 4 + = 5 + = 6 + = 7 + = 8 + = 9 + = 10 +
OPOSERR; OPOSERR; OPOSERR; OPOSERR; OPOSERR; OPOSERR; OPOSERR; OPOSERR; OPOSERR; OPOSERR;
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 305 of 330
306
APPENDIX C
= = = = 11 12 13 14 + + + + OPOSERR; OPOSERR; OPOSERR; OPOSERR;
///////////////////////////////////////////////////////////////////// // "CheckHealth" Method: "Level" Parameter Constants ///////////////////////////////////////////////////////////////////// const LONG OPOS_CH_INTERNAL const LONG OPOS_CH_EXTERNAL const LONG OPOS_CH_INTERACTIVE = 1; = 2; = 3;
///////////////////////////////////////////////////////////////////// // "ErrorEvent" Event: "ErrorLocus" Parameter Constants ///////////////////////////////////////////////////////////////////// const LONG OPOS_EL_OUTPUT const LONG OPOS_EL_INPUT const LONG OPOS_EL_INPUT_DATA = 1; = 2; = 3;
///////////////////////////////////////////////////////////////////// // "ErrorEvent" Event: "ErrorResponse" Constants ///////////////////////////////////////////////////////////////////// const LONG OPOS_ER_RETRY = 11; const LONG OPOS_ER_CLEAR = 12; const LONG OPOS_ER_CONTINUEINPUT= 13;
#endif
// !defined(OPOS_H)
#include "opos.h"
#endif
// !defined(OPOSCASH_H)
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 306 of 330
307
#include "opos.h"
///////////////////////////////////////////////////////////////////// // "DispenserStatus" Property Constants // "StatusUpdateEvent" Event: "Data" Parameter Constants ///////////////////////////////////////////////////////////////////// const const const const LONG LONG LONG LONG COIN_STATUS_OK = COIN_STATUS_EMPTY = COIN_STATUS_NEAREMPTY= COIN_STATUS_JAM = 1; 2; 3; 4;
#endif
// !defined(OPOSCOIN_H)
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 307 of 330
308
APPENDIX C
#include "opos.h"
///////////////////////////////////////////////////////////////////// // "ResultCodeExtended" Property Constants for Hard Totals ///////////////////////////////////////////////////////////////////// const LONG OPOS_ETOT_NOROOM = 1 + OPOSERREXT; // Create, Write const LONG OPOS_ETOT_VALIDATION = 2 + OPOSERREXT; // Read, Write
#endif
// !defined(OPOSTOT_H)
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 308 of 330
309
#include "opos.h"
///////////////////////////////////////////////////////////////////// // "CapBlink" Property Constants ///////////////////////////////////////////////////////////////////// const LONG DISP_CB_NOBLINK const LONG DISP_CB_BLINKALL const LONG DISP_CB_BLINKEACH = 0; = 1; = 2;
///////////////////////////////////////////////////////////////////// // "CapCharacterSet" Property Constants ///////////////////////////////////////////////////////////////////// const const const const const LONG LONG LONG LONG LONG DISP_CCS_NUMERIC DISP_CCS_ALPHA DISP_CCS_ASCII DISP_CCS_KANA DISP_CCS_KANJI = 0; = 1; = 998; = 10; = 11;
///////////////////////////////////////////////////////////////////// // "CharacterSet" Property Constants ///////////////////////////////////////////////////////////////////// const LONG DISP_CS_ASCII const LONG DISP_CS_WINDOWS = 998; = 999;
///////////////////////////////////////////////////////////////////// // "MarqueeType" Property Constants ///////////////////////////////////////////////////////////////////// const LONG DISP_MT_NONE const LONG DISP_MT_UP const LONG DISP_MT_DOWN = 0; = 1; = 2;
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 309 of 330
310
APPENDIX C
= 3; = 4; = 5;
///////////////////////////////////////////////////////////////////// // "MarqueeFormat" Property Constants ///////////////////////////////////////////////////////////////////// const LONG DISP_MF_WALK const LONG DISP_MF_PLACE = 0; = 1;
///////////////////////////////////////////////////////////////////// // "DisplayText" Method: "Attribute" Property Constants // "DisplayTextAt" Method: "Attribute" Property Constants ///////////////////////////////////////////////////////////////////// const LONG DISP_DT_NORMAL const LONG DISP_DT_BLINK = 0; = 1;
///////////////////////////////////////////////////////////////////// // "ScrollText" Method: "Direction" Parameter Constants ///////////////////////////////////////////////////////////////////// const const const const LONG LONG LONG LONG DISP_ST_UP DISP_ST_DOWN DISP_ST_LEFT DISP_ST_RIGHT = = = = 1; 2; 3; 4;
///////////////////////////////////////////////////////////////////// // "SetDescriptor" Method: "Attribute" Parameter Constants ///////////////////////////////////////////////////////////////////// const LONG DISP_SD_OFF const LONG DISP_SD_ON const LONG DISP_SD_BLINK = 0; = 1; = 2;
#endif
// !defined(OPOSDISP_H)
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 310 of 330
311
#include "opos.h"
///////////////////////////////////////////////////////////////////// // "KeyPosition" Property Constants // "WaitForKeylockChange" Method: "KeyPosition" Parameter // "StatusUpdateEvent" Event: "Data" Parameter ///////////////////////////////////////////////////////////////////// const const const const LONG LONG LONG LONG LOCK_KP_ANY LOCK_KP_LOCK LOCK_KP_NORM LOCK_KP_SUPR = = = = 0; 1; 2; 3; // WaitForKeylockChange Only
#endif
// !defined(OPOSLOCK_H)
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 311 of 330
312
APPENDIX C
#include "opos.h"
///////////////////////////////////////////////////////////////////// // "CheckType" Property Constants ///////////////////////////////////////////////////////////////////// const LONG MICR_CT_PERSONAL const LONG MICR_CT_BUSINESS const LONG MICR_CT_UNKNOWN = 1; = 2; = 99;
///////////////////////////////////////////////////////////////////// // "CountryCode" Property Constants ///////////////////////////////////////////////////////////////////// const const const const LONG LONG LONG LONG MICR_CC_USA MICR_CC_CANADA MICR_CC_MEXICO MICR_CC_UNKNOWN = 1; = 2; = 3; = 99;
///////////////////////////////////////////////////////////////////// // "ResultCodeExtended" Property Constants for MICR ///////////////////////////////////////////////////////////////////// const LONG OPOS_EMICR_NOCHECK const LONG OPOS_EMICR_CHECK = 1 + OPOSERREXT; // EndInsertion = 2 + OPOSERREXT; // EndRemoval
#endif
// !defined(OPOSMICR_H)
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 312 of 330
313
#include "opos.h"
///////////////////////////////////////////////////////////////////// // "TracksToRead" Property Constants ///////////////////////////////////////////////////////////////////// const LONG MSR_TR_1 const LONG MSR_TR_2 const LONG MSR_TR_3 const LONG MSR_TR_1_2 const LONG MSR_TR_1_3 const LONG MSR_TR_2_3 const LONG MSR_TR_1_2_3 = 1; = 2; = 4; = MSR_TR_1 | MSR_TR_2; = MSR_TR_1 | MSR_TR_3; = MSR_TR_2 | MSR_TR_3; = MSR_TR_1 | MSR_TR_2 | MSR_TR_3;
///////////////////////////////////////////////////////////////////// // "ErrorEvent" Event: "ResultCodeExtended" Parameter Constants ///////////////////////////////////////////////////////////////////// const const const const LONG LONG LONG LONG OPOS_EMSR_START OPOS_EMSR_END OPOS_EMSR_PARITY OPOS_EMSR_LRC = = = = 1 2 3 4 + + + + OPOSERREXT; OPOSERREXT; OPOSERREXT; OPOSERREXT;
#endif
// !defined(OPOSMSR_H)
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 313 of 330
314
APPENDIX C
#include "opos.h"
#endif
// !defined(OPOSKBD_H)
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 314 of 330
315
#include "opos.h"
///////////////////////////////////////////////////////////////////// // Printer Station Constants ///////////////////////////////////////////////////////////////////// const LONG PTR_S_JOURNAL const LONG PTR_S_RECEIPT const LONG PTR_S_SLIP = 1; = 2; = 4;
const LONG PTR_S_JOURNAL_RECEIPT= PTR_S_JOURNAL | PTR_S_RECEIPT; const LONG PTR_S_JOURNAL_SLIP = PTR_S_JOURNAL | PTR_S_SLIP ; const LONG PTR_S_RECEIPT_SLIP = PTR_S_RECEIPT | PTR_S_SLIP ;
///////////////////////////////////////////////////////////////////// // "CapCharacterSet" Property Constants ///////////////////////////////////////////////////////////////////// const const const const LONG LONG LONG LONG PTR_CCS_ALPHA PTR_CCS_ASCII PTR_CCS_KANA PTR_CCS_KANJI = 1; = 998; = 10; = 11;
///////////////////////////////////////////////////////////////////// // "CharacterSet" Property Constants ///////////////////////////////////////////////////////////////////// const LONG PTR_CS_ASCII const LONG PTR_CS_WINDOWS = 998; = 999;
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 315 of 330
316
APPENDIX C
= 2; = 3;
///////////////////////////////////////////////////////////////////// // "MappingMode" Property Constants ///////////////////////////////////////////////////////////////////// const const const const LONG LONG LONG LONG PTR_MM_DOTS PTR_MM_TWIPS PTR_MM_ENGLISH PTR_MM_METRIC = = = = 1; 2; 3; 4;
///////////////////////////////////////////////////////////////////// // "PrintBarCode" Method Constants: ///////////////////////////////////////////////////////////////////// // // // "Alignment" Parameter Either the distance from the left-most print column to the start of the bar code, or one of the following: = -1; = -2; = -3;
const LONG PTR_BC_LEFT const LONG PTR_BC_CENTER const LONG PTR_BC_RIGHT // "TextPosition" Parameter
const LONG PTR_BC_TEXT_NONE const LONG PTR_BC_TEXT_ABOVE const LONG PTR_BC_TEXT_BELOW // // const const const const const const const "Symbology" Parameter: One LONG LONG LONG LONG LONG LONG LONG
dimensional symbologies PTR_BCS_UPCA = 101; PTR_BCS_UPCE = 102; PTR_BCS_JAN8 = 103; PTR_BCS_JAN13 = 104; PTR_BCS_TF = 105; PTR_BCS_ITF = 106; PTR_BCS_Codabar = 107;
= 108;
= 109; = 110;
// // // // // // // // // // // // // //
Digits Digits (EAN) (EAN) (Discrete 2 of 5) Digits (Interleaved 2 of 5) Digits Digits, -, $, :, /, ., +; 4 start/stop characters (a, b, c, d) Alpha, Digits, Space, -, ., $, /, +, %; start/stop (*) Also has Full Ascii feature Same characters as Code 39 128 data characters
// Two dimensional symbologies const LONG PTR_BCS_PDF417 = 201; const LONG PTR_BCS_MAXICODE = 202; // Start of Printer-Specific bar code symbologies
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 316 of 330
317
///////////////////////////////////////////////////////////////////// // "PrintBitMap" Method Constants: ///////////////////////////////////////////////////////////////////// // // "Width" Parameter Either bitmap width or: = -11; // One pixel per printer dot
"Alignment" Parameter Either the distance from the left-most print column to the start of the bitmap, or one of the following: = -1; = -2; = -3;
///////////////////////////////////////////////////////////////////// // "RotatedPrint" Method: "Rotation" Parameter Constants // "RotateSpecial" Property Constants (PTR_RP_NORMAL_ASYNC not legal) ///////////////////////////////////////////////////////////////////// const LONG PTR_RP_NORMAL const LONG PTR_RP_NORMAL_ASYNC const LONG PTR_RP_RIGHT90 const LONG PTR_RP_LEFT90 const LONG PTR_RP_ROTATE180 = 0x0001; = 0x0002; = 0x0101; = 0x0102; = 0x0103;
///////////////////////////////////////////////////////////////////// // "SetLogo" Method: "Location" Parameter Constants ///////////////////////////////////////////////////////////////////// const LONG PTR_L_TOP const LONG PTR_L_BOTTOM = 1; = 2;
///////////////////////////////////////////////////////////////////// // "TransactionPrint" Method: "Control" Parameter Constants ///////////////////////////////////////////////////////////////////// const LONG PTR_TP_TRANSACTION const LONG PTR_TP_NORMAL = 11; = 12;
///////////////////////////////////////////////////////////////////// // "StatusUpdateEvent" Event: "Data" Parameter Constants ///////////////////////////////////////////////////////////////////// const LONG PTR_SUE_COVER_OPEN const LONG PTR_SUE_COVER_OK = = 11; 12; 21; 22; 23; 24;
const LONG PTR_SUE_JRN_EMPTY = const LONG PTR_SUE_JRN_NEAREMPTY= const LONG PTR_SUE_JRN_PAPEROK = const LONG PTR_SUE_REC_EMPTY =
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 317 of 330
318
APPENDIX C
25; 26; 27; 28; 29;
const LONG PTR_SUE_REC_NEAREMPTY= const LONG PTR_SUE_REC_PAPEROK = const LONG PTR_SUE_SLP_EMPTY = const LONG PTR_SUE_SLP_NEAREMPTY= const LONG PTR_SUE_SLP_PAPEROK = const LONG PTR_SUE_IDLE
= 1001;
///////////////////////////////////////////////////////////////////// // "ResultCodeExtended" Property Constants for Printer ///////////////////////////////////////////////////////////////////// const const const const const const const LONG LONG LONG LONG LONG LONG LONG OPOS_EPTR_COVER_OPEN OPOS_EPTR_JRN_EMPTY OPOS_EPTR_REC_EMPTY OPOS_EPTR_SLP_EMPTY OPOS_EPTR_SLP_FORM OPOS_EPTR_TOOBIG OPOS_EPTR_BADFORMAT = = = = = = = 1 2 3 4 5 6 7 + + + + + + + OPOSERREXT; OPOSERREXT; OPOSERREXT; OPOSERREXT; OPOSERREXT; OPOSERREXT; OPOSERREXT; // // // // // // // (Several) (Several) (Several) (Several) EndRemoval PrintBitmap PrintBitmap
#endif
// !defined(OPOSPTR_H)
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 318 of 330
319
#include "opos.h"
///////////////////////////////////////////////////////////////////// // "WeightUnit" Property Constants ///////////////////////////////////////////////////////////////////// const const const const LONG LONG LONG LONG SCAL_WU_GRAM SCAL_WU_KILOGRAM SCAL_WU_OUNCE SCAL_WU_POUND = = = = 1; 2; 3; 4;
///////////////////////////////////////////////////////////////////// // "ResultCodeExtended" Property Constants for Scale ///////////////////////////////////////////////////////////////////// const LONG OPOS_ESCAL_OVERWEIGHT= 1 + OPOSERREXT; // ReadWeight
#endif
// !defined(OPOSSCAL_H)
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 319 of 330
320
APPENDIX C
#include "opos.h"
#endif
// !defined(OPOSSCAN_H)
#include "opos.h"
#endif
// !defined(OPOSSIG_H)
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 320 of 330
321
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 321 of 330
323
A P P E N D I X
Technical Details
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 323 of 330
324
APPENDIX D
BSTR Return Type (used for getting properies) Calling Function An OLE automation method returning a BSTR result is automatically converted by MFC into a CString. Called Function An automation method returns a BSTR result by placing the data into an MFC CString object, and returning the result of the CString's AllocSysString member function. If the VC++ ANSI option is used, then this function automatically converts the string from ANSI into Unicode.
BSTR* can be a little more difficult to use in ANSI mode, since the string remains in Unicode format. To get the string, it must be converted from Unicode to MBCS. Some macros are available that make this conversion easier, such as T2OLE and OLE2T. (These do no handle NUL characters embedded in the string, however.) To set the string, place the data into an MFC CString object, and use CString's SetSysString member function.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 324 of 330
Technical Details
325
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 325 of 330
326
APPENDIX D
BSTR Return Type (used for getting properies) Calling Function The automatic conversion by MFC into a CString properly handles binary data. Called Function The CString AllocSysString member function properly handles binary data.
BSTR* handling for ANSI is as follows: To get the string, it must be converted from Unicode to MBCS. The conversion macros, such as T2OLE and OLE2T, stop on the first NUL character. Therefore, the function WideCharToMultiByte must be used. To set the string, place the data into an MFC CString object, and use CString's SetSysString member function.
Add the following overloaded function to the class declaration header file:
long SendBstring(const CString& String);
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 326 of 330
Technical Details
327
and add the following definition to the class definition source file:
long xxx::SendBstring(const CString& String); { long result; static BYTE parms[] = VTS_VARIANT; VARIANT VarString; VariantInit(&VarString); VarString.vt = VT_BSTR; VarString.bstrVal = String.AllocSysString(); InvokeHelper(???, // ??? is the dispatch ID for the method. DISPATCH_METHOD, VT_I4, (void*)&result, // Returns a 4-byte integer. parms, &VarString); // Sends one VARIANT parameter. VariantClear(&VarString); return result; }
To call the method with binary data, use a sequence such as:
CString s; .... Put string (which may contain NULs) into s .... .... Then, assuming that bs is an instance of the class xxx: long r = bs.SendBstring(s);
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 327 of 330
328
APPENDIX D
Event Handlers
Event Characteristics
Events require some special consideration, due to the environment in which they are fired into the application: OPOS events are fired by a thread created by the Service Object, and not by one of the application threads. (The Service Object ensures s that it calls at most one event handler at a time.) A separate event thread is used for two reasons: Events should be delivered to the application as soon as possible. Waiting for an application thread to become idle so that it can fire events might delay the event for an indefinite period of time. Timeliness is especially important for the ErrorEvent. Events may be delayed by the DataEventEnabled property being FALSE (for DataEvent and input ErrorEvent), by the container freezing events, or by the application setting FreezeEvents to TRUE. A separate event firing thread can enqueue events and fire them as soon as these conditions are cleared. On the other hand, a separate thread introduces some complexities due to the asynchronous nature of fired events: They may compete with application threads for access to the Control, user interface objects, and so on. In most cases, problems may be avoided by restricting event handlers both in Control access and user interface. Event handlers usually may be limited to manipulating application flags and variables and returning from the event. Occasionally, the event handling may need to be more robust. Most notably, the POS printer ErrorEvent handler may need to prompt for reinsertion of slips, replacement of paper, and so on.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 328 of 330
Technical Details
Event Handlers
329
Writable Properties
DataEventEnable All class-specific Properties DataEventEnable All class-specific Properties None None
The Class-specific restrictions on ErrorEvent callable methods are: Printer: May call all class-specific methods plus ClearOutput. MICR: May call all class-specific methods plus ClearInput. MSR, Scanner, and Signature Capture: May call ClearInput. An event handler must use extreme care if it needs to manipulate or access windows created by an application thread. Win32 requires that the thread which created the window is the only thread that manipulates it. If the thread of the event handler accesses a window created by the application, then interthread messages are sent to the window and will be processed when that window thread accesses its message s queue. Since the application thread continues running while the event handler runs, some synchronization may be needed. Notice that if the application thread is waiting in its message loop, there is no issue. However, if the thread is actively updating the display, then contention occurs. A better and safer alternative for getting user input may be for the event handler to create a user-interface thread which creates and processes a dialog window for user input, then destroys the window and thread before returning from the handler. (This applies to Visual C++ applications rather than Visual Basic.) Also, the event handler may be able to use a message box with Retry and Cancel options. In general, the application developer must carefully design the interaction between the main application thread(s) and event handlers, so that conflicts between them may be avoided.
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 329 of 330
330
APPENDIX D
Document: OLE for Retail POS Application Guide - Rel. 1.1 Filename: OPOS-APG-(Rel-1.1).doc Author: crm/NCR Page: 330 of 330