Honeywell Frozen Dessert Maker 5080 User Manual

5X80 Series  
Software Development Kit (SDK) for 5080, 5180, and 5380  
Decoded Miniature Image Scan Engines  
User’s Guide  
 
Table of Contents  
i
 
ii  
 
iv  
 
1
Introduction  
The 5X10/5X80 Software Development Kit (5X00 Series) provides a set of libraries, tools, and sample source code to help soft-  
ware developers create an interface between their host system and a Honeywell miniature image scan engine. The 5X00 Series  
consists of:  
The API Definition and Documentation  
API Libraries  
Sample Code  
Features of the 5X00 Series  
The 5X00 Series contains software libraries that interact with image/data capture engines using a documented API  
(Application Programming Interface). The API functions are defined on a higher level so they can be easily understood and  
integrated into your applications, so you don’t have to learn minute details of the engine interface protocol. You simply compile  
your code with the library header files and link in the library for your platform. Afterward, all engine functionality is at your  
disposal.  
The image/data capture engine is easily integrated into a variety of host platforms.  
The 5X00 Series captures images and returns them as unformatted data, or as one of the standard file formats (BMP, TIFF,  
and JPG). Captured images can then be saved to disk and easily imported into a variety of common tools and applications.  
A single API is used for all Honeywell decoding engines. The libraries for all engines are identical for a given host platform.  
There are different libraries for each platform, but the API interface is the same for all of them, so you only need to learn a  
single API.  
®
®
®
Libraries are available for the Microsoft Windows family of operating systems. This includes both the Windows CE  
®
®
operating system, Windows 9x, and Windows NT derivatives.  
Sample code is included that demonstrate how to use specific aspects of the 5X00 Series, as well as the buildable source  
and executable code for a demo application.  
The communication driver library is separate from the main engine API library.  
Target Operating Systems for the 5X00 Series  
The 5X00 Series is designed for use with the following operating systems:  
®
®
Windows CE versions WinCE 4.2, WinCE 5.0, Windows Pocket PC 2000, and Pocket PC 2002 supporting the following  
processors:  
Pocket PC 2000ARM, MIPS, SH3  
PocketPC 2002ARM  
PocketPC 2003ARMV4  
CE.Net Standard SDK ARMV4, ARMV4I, ARMV4T, SH3, SH4, X86  
®
®
®
®
Windows 9x, Windows NT 4.0, Windows 2000 and Windows XP  
1 - 1  
 
     
Interface Diagram  
The following diagram shows the interface between the 5X00 Series and the Image Engine:  
User Application  
SDK Driver Interface Layer - hhpImgrSdk.dll  
SDK API Interface Layer - commDrv.dll  
OS Communications Driver  
Physical Connection: RS-232, USB, etc.  
Image Engine  
5X00 Series Library Files  
The SDK API and SDK communications layers are provided in the dynamic link libraries, hhpImgrSdk.dll and commDrv.dll,  
respectively. The library link file hhpImgrSdk.lib and the include files hhpImgrSdk.h, hhpSymCfg.h and hhpImgrCfg.h are also  
provided. In order to use the 5X00 Series, you must include hhpImgrSdk.h in any source files that call the SDK functions. The  
library include files must be in the include path for the application’s project. This means that the files must either be in the  
source file build directory, or in the developer’s Studio include path. Also, the library link file, hhpImgrSdk.lib, must be added to  
the application project link list and link path. Since the .dll and .lib files are operating system and processor type dependent,  
care must be taken to use the proper files for the chosen target environment.  
SDK Library  
Where Resides Function  
File  
Target Device  
Windows Folder  
Sends commands from API to the appropriate OS driver. Handles low level  
communications protocols.  
commDrv.dll  
Target Device  
Windows Folder  
Contains the exported SDK API. Formats requests into imager commands,  
then calls commDrv layer.  
hhpImgrSdk.dll  
hhpImgrSdk.lib  
hhpSymCfg.h  
Library exports file. Allows your application to link without actually including  
the SDK code at link time.  
Project Link Path  
Definitions, structures, and enumerated types related to symbology setup.  
Automatically included when hhpImgrSdk.h is included.  
Project Include Path  
Definitions, structures, and enumerated types for imaging as well as all  
other imager configurations, except communications. Automatically  
included when hhpImgrSdk.h is included.  
hhpImgrCfg.h  
Project Include Path  
Include file that must be included in application code. Contains definitions,  
structures, and enumerated types for communication configuration, as well  
as the SDK error codes and SDK function API prototypes.  
hhpImgrSdk.h  
OemDll.h  
Project Include Path  
Project Include Path  
Only necessary if you create a helper dll for the SDK to provide access to  
the imager hardware sleep and trigger lines.  
1 - 2  
 
   
5X00 Series API Library Summary  
The following is a summary of the API functions. The full description of each function is found on the page noted.  
Core Functions  
Page  
Core Function  
Error Management Function  
Summary  
Returns a descriptive text string for the specified SDK error code.  
Connection Functions  
These functions open, close, and verify a connection to an imager.  
Establishes and initializes a connection to the imager at the specified port and  
connection settings.  
Closes down the open imager connection.  
Checks if the connection to the imager is valid.  
Establishes and initializes a connection to the imager at the specified driver  
name and connection settings.  
Asynchronous Notification and Control Functions  
Image and barcode capture can be either blocking (synchronous) or non-blocking (asynchronous).  
In blocking (synchronous) mode, the SDK function call does not return until the barcode or image is received, the request times  
out, or an error occurs. In non-blocking (asynchronous) mode, the capture call returns immediately. Your application is notified  
of the completion when either a barcode or an image was received, the time-out for the call was reached, or an error was detected.  
You can specify which notification methods you wish to receive.  
Your application can subscribe to one or more of the following notification methods: Windows Event, Windows Message, and/or  
Callback Function. When notification is received, your application can call hhpGetAsyncResult (see page 2-4) to retrieve the  
return code as well as the image, barcode, or text data. The asynchronous interface is also the manor in which imager-initiated  
barcode capture data, such as from a hardware trigger, is returned.  
aware that when the callback function method is used, any processing done during the callback is run within the context of the  
SDK’s asynchronous read thread. This means that the SDK is unable to receive images or barcodes until the callback returns.  
Cancels any synchronous or asynchronous I/O in process.  
Retrieves the results (image/barcode, etc.) of an asynchronous  
I/O event.  
Allows the application to select how it wishes to be notified on completion of  
an asynchronous I/O event.  
Imaging and General Configuration Functions  
The imaging and configuration functions provide a simplified API for modifying the imager setup, image/barcode capture  
configuration, and symbology configuration. In order to limit the number of functions a developer must master, the design  
philosophy is to allow configuration control using only a small number of setup functions. The imager configuration is broken down  
into functional groups with structures containing the configurable items for each. Individual configuration items are specified within  
structures by use of a bit field mask. In this way, single configuration items can be read or written using minimal communication  
traffic. There are functions for reading and writing parts or all of the HHP_CONFIG imager configuration structure as well as  
writing the setup/configuration for individual symbologies. If the specified symbology is not available in the imager’s version of  
the symbol decoder, (e.g., Data Matrix in a linear and PDF417 decoder), the symbology functions return  
RESULT_ERR_UNSUPPORTED. Finally, to facilitate easy configuration management from device to device and application to  
application, the 5X00 Series also provides methods for retrieving and setting the whole imager configuration as a single stream  
so it can be saved to disk and restored at a later time.  
Retrieves a single configuration group or whole imager configuration from the  
imager.  
Retrieves the current whole imager configuration as a single buffer. This  
buffer can be saved to a file and later restored.  
1 - 3  
 
   
Core Functions (Continued)  
Page  
Core Function  
Summary  
Retrieves the imager settings (fixed) for image size, image bit depth, and  
maximum message length.  
Reads information about the image engine contained in the image engine  
PSOC.  
Sets a selected symbology, or all symbology configurations, to their default  
values.  
Writes some or all of the configuration items for a single configuration group or  
for all configuration groups, with the exception of version and communication  
groups.  
Writes an entire data stream of programmable parameters from a previous  
call to hhpReadConfigStream.  
Symbology Configuration Functions  
These functions allow you to read and set the symbology configurations.  
Enables or disables a single symbology, or all symbologies.  
Retrieves the current or default symbology configuration for a specified  
symbology, or for all symbologies.  
Returns the specified symbology range maximum and minimum values.  
Defaults a single symbology, or all symbologies.  
Writes some or all of a single symbology, or all symbologies’ configuration  
items.  
Barcode Capture Functions  
The 5X00 Series captures barcodes from imagers that have hardware triggers or some other non-SDK initiated barcode captures  
without having to poll the imager to see if there is any data to read. This allows the imager to be put into low power mode without  
having to wake up to answer the polling message.  
All barcode result strings are returned in TCHAR arrays, which, if running on a WinCE device or if using a Unicode Desktop build,  
are 2 bytes per character. You can specify a Unicode code page other than the default ANSI code page (CP_ACP).  
Initiates a synchronous (wait for finish before returning from call) or  
asynchronous (return immediately) barcode capture. Decoded data returned  
is translated by code page and locale.  
Specifies the code page used to convert the barcode characters to Windows  
text. The default is the ANSI code page.  
Initiates a synchronous (wait for finish before returning from call) or  
asynchronous (return immediately) barcode capture. Decoded data returned  
is unmodified 8 bit (ASCII) data.  
Image Capture Functions  
The image capture functions provide both synchronous and asynchronous operation.  
A synchronous capture is specified by setting the bWait parameter of hhpAcquireImage or hhpGetLastImage to TRUE. For  
synchronous operation, the function will not return until an image has been captured and transferred (hhpAcquireImage), just  
transferred (hhpGetLastImage), or an error has occurred.  
Asynchronous captures are specified by setting bWait to FALSE. The function call returns immediately and the caller is notified  
on request completion as long as at least one of the event notification methods has been enabled. You can receive transfer  
progress updates by Windows messages or by providing a pointer to a DWORD. Both hhpAcquireImage and hhpGetLastImage  
allow the caller to override the current imager transfer configuration in the imager.  
Initiates a synchronous (wait for finish before returning from call) or  
asynchronous (return immediately) image capture. The image acquisition and  
transfer parameters can also be specified.  
1 - 4  
 
Core Functions (Continued)  
Page  
Core Function  
Summary  
Initiates transfer of the last image captured. (This includes images captured  
during barcode scan.) The call can be made synchronously or  
asynchronously, and the transfer parameters can be specified.  
Intelligent Imaging (Signature Capture) Functions  
Intelligent imaging is barcode capture combined with an image window capture. The image window is cut from the same image  
used to capture a barcode. This is how the SDK provides the ability to capture a signature associated with a barcode. In fact, a  
successful barcode capture is required before the intelligent image window is sent by the imager. You can specify whether the  
image is returned grayscale or black and white.  
Barcode capture combined with an image window capture.  
Captures portion of the image in which a barcode is decoded.  
Miscellaneous Functions  
Turns on illumination LEDs, Aimers, (and sound beeper for imagers that have  
one) outside the image or barcode capture.  
Sends menu commands to the imager.  
Upgrades the current imager firmware with a new firmware file.  
Allows you to specify the name of an OEM dll file. This file can contain some  
or all of the OemDll exports that provide support for hardware trigger and low  
power mode hardware lines.  
Data Types, Structures, and Enumerated Types  
The 5X00 Series API uses structures (see Structures and Mask Definitions beginning on page 4-1) and enumerated types (see  
Enumerated Types and Definitions beginning on page 3-1) extensively . The definitions are in the include files in the 5X00  
Series package. All 5X00 Series-specific structures have a dwStructSize member that must be set to sizeof( struct name ).  
This insures that the structure being passed to a given function is the structure type expected by the function and, if writing is  
done to the structure, that the structure size boundary is not exceeded. Furthermore, all imager configuration structures (except  
the all inclusive structure HHP_CONFIG) have a DWORD member dwMask. The mask allows you to specify only certain mem-  
bers within a structure. Set the mask value by ORing together the appropriate masks for the given structure for the particular  
items within the structure that should be read/written. Samples of programs that demonstrate this can be found in Program  
®
®
Samples beginning on page 6-1. This technique is also used by Microsoft in their Windows SDK (for example, see Win-  
®
dows SDK structure CHARFORMAT).  
®
The following Windows data types are included for clarity.  
Note:  
A “P” in front of a data type means a pointer to the type.  
Windows Data Types  
BOOL  
32 bit signed integer used by most Microsoft SDK functions in place of a true Boolean.  
BYTE  
8 bit unsigned variable.  
DWORD  
32 bit unsigned integer variable.  
A Windows WIN32 handle type. Returned from opening files, creating events, semaphores, or  
mutexes.  
HANDLE  
HWND  
PVOID  
TCHAR  
WORD  
A Windows handle to an application window.  
32 bit unsigned integer that points to void data type (generic pointer).  
OS-dependent character variable. 16 bit for Unicode systems, otherwise 8 bits.  
16 bit unsigned integer variable.  
1 - 5  
 
               
Windows Data Types (Continued)  
Pointer to a callback function (see hhpImgrSdk.h) called in response to the completion of an  
asynchronous 5X00 Series function call or event. (See example on page 6-4.)  
HHP_EVENT_CALLBACK  
SDK Enumerated Types  
Beep Options  
Enumeration (not an enumerated type) that can be used with an hhpSendActionCommand.  
Enumerated type for specifying the form of compression (if any) to use when transferring an  
Compression_t  
Enumerated type to specify that the configuration structure is being sent to the Read/Write  
config item functions.  
ConfigItems_t  
DECODE_METHOD  
DECODER_TYPE  
EngineType_t  
Enumerated type of decode methods available to decode symbols.  
Enumeration of types of decoders and, by extension, what symbologies can be decoded.  
Describes the connection, the imager, and the type of engine.  
FileFormat_t  
Enumerated type for specifying the format of the data returned in the HHP_IMAGE structure.  
Enumerated type whose items describe which imager command functionality (beeper, aimers,  
lights) is to be acted upon.  
HP_ACTION  
HHP_AIMER_MODES  
HHP_AUTOEXPOSURE  
Enumerated type to specify the aimer mode.  
Enumerated type to specify whether the imager tries to auto adjust the image exposure and, if  
so, how.  
Enumerated type of the supported baud rates for serial devices.  
Note: A special driver is required if a baud rate greater than 115200 is selected.  
HHP_BAUD_RATE  
Enumerated type to select the imager beeper volume when sounding the beeper. This structure  
is ignored for products that do not have a beeper.  
HHP_BEEPER_VOLUME  
Enumerated type used in hhpConnect to specify the connection type and connection port where  
the imager is connected.  
HHP_CONNECT_TYPE  
HHP_DATA_BITS  
Enumerated type for number of serial data bits.  
Enumerated type to specify the behavior of the illumination and aimer LEDs during image  
capture.  
HHP_DUTY_CYCLE  
HHP_EVENT_TYPE  
HHP_FRAME_RATE  
Enumerated type that describes the type of asynchronous event being reported.  
Enumerated type to select the image capture frame rate. Only valid when no auto exposure is  
selected.  
Enumerated type to select the image capture gain. This type is only valid when no auto  
exposure is selected.  
HHP_GAIN  
HHP_PARITY  
Enumerated type for serial parity.  
HHP_SEQ_MODES  
HHP_STOP_BITS  
Enumerated type to specify the sequence acquisition mode.  
Enumerated type for number of serial stop bits.  
Enumerated type to specify the rate (in Mhz) at which all components other than the CPU are  
to be clocked.  
HHP_SYS_SPEED  
HHP_TRIG_MODES  
OCRDirection_t  
OCRMode_t  
Enumerated type to specify the trigger mode.  
Enumerated type for setting the text direction for OCR decoding.  
Enumerated type for setting the font for OCR symbology decoding.  
Enumeration (not an enumerated type) that can be used with hhpSendActionCommand.  
On Off  
Result_t  
Enumerated type for specifying whether a read configuration item call should return the current  
settings or the imager default setting.  
SetupType_t  
Enumerates all the available symbologies supported in the imager decoder. Non-data type  
used in the symbology configuration functions.  
Symbology ID enumeration  
1 - 6  
 
     
SDK Structure Types  
A full description of the SDK structure types can be found in Enumerated Types and Definitions beginning on page 3-1.  
Note: Important: Make sure to set the structure members dwStructSize and dwMask.  
Individual Symbology Structures  
All symbologies, except OCR, use either SymFlagsOnly_t or SymFlagsRange_t for configuration. There is a define for each  
symbology (except OCR) that points to one of these two structures.  
SymFlagsOnly_t  
Structure for symbologies that don’t have minimum and maximum data lengths.  
Structure for symbologies that have minimum and maximum data lengths.  
Structure to configure OCR symbology.  
SymFlagsRange_t  
SymCodeOCR_t or OCR_T  
Configuration Structures  
Configures whether the beeper sounds on power up, decode, or command processing.  
This is ignored if the imager does not have a beeper.  
HHP_BEEPER  
HHP_CONFIG  
Super structure whose members are all the other configuration structures.  
Returns decoded, code page and locale-translated data output from the SDK.  
Configures decoding behavior other than symbology setup.  
HHP_DECODE_MSG  
HHP_DECODER_CONFIG  
the image engine. (5X80 engines with PSOC only.)  
HHP_ENGINE_INFO  
HHP_IMAGE  
Returns image data from the SDK. It also specifies the format in which the image data is  
returned.  
Specifies how images are captured by the imager. This includes gain, exposure, frame  
rates, and illumination.  
HHP_IMAGE_ACQUISITION  
Specifies how images are shipped from the imager to the SDK. This includes image  
processing items such as cropping, subsampling, histogram stretching, and transfer  
compression.  
HHP_IMAGE_TRANSFER  
HHP_IMAGER_CAPS  
HHP_INTEL_IMG  
Retrieves the fixed characteristics of the imager: full image size, capture bits per pixel, and  
maximum text/barcode message size (sent from imager). Structure in which  
hhpReadImagerCapabilities returns requested capabilities information.  
Specifies the location and size of the image returned as part of an intelligent image  
capture. The location information is specified in minimum bar widths of the barcode  
portion of the intelligent image.  
HHP_POWER_SETTINGS  
HHP_RAW_DECODE_MSG  
Configures the power management options of the imager.  
Returns raw (8 bit ASCII) decoded data output from the SDK.  
HHP_SERIAL_PORT_CONFIG Specifies serial port configuration for serial imagers.  
HHP_SEQUENCE  
Specifies how the sequence acquisition mode is configured.  
Contains a list of all the structures for all the symbologies.  
HHP_SYM_CONFIG  
Returns non-decoded data output from the SDK. The data is translated by code page and  
locale.  
HHP_TEXT_MSG  
HHP_TRIGGER  
Configures the trigger mode of the imager.  
Queries imager and SDK software revisions.  
HHP_VERSION_INFO  
1 - 7  
 
                 
1 - 8  
 
2
API Function Descriptions  
The following is an alphabetic listing of each API function with its complete description and a prototype for each function. All API  
hhpAcquireImage  
This function causes the imager to capture an image and transfer it to the host. Values to be used from the structures are  
specified by setting the appropriate bit mask for each item in the structure’s mask member.  
hhpAcquireImage(  
PHHP_IMAGE pImg,  
PHHP_IMAGE_TRANSFER pImgTrans,  
BOOL bWait  
)
Parameter  
Description  
pImg  
Pointer to an HHP_IMAGE structure if bWait is TRUE. If bWait is FALSE, the parameter  
is ignored and should be NULL.  
pImgTrans  
Optional pointer to an HHP_IMAGE_TRANSFER structure. This structure overrides (just  
for this call) the current imager configuration, and specifies the pixel subsample, cropping  
rectangle, transfer compression type, compression factor (for JPEG lossy transfer), and  
progress notification method. If this parameter is NULL, the current imager configuration  
settings are used except for the progress notification methods that must be specified for  
each call if notification is desired.  
pImgAcqu  
bWait  
Optional pointer to an HHP_IMAGE_ACQUISITION structure. This structure overrides  
(just for this call) the current imager configuration, to specify and configure the image  
capture method (type of autoexposure control or manual mode). If this parameter is NULL,  
the current imager configuration settings are used.  
If TRUE, do not return until the image is received or an error occurs. If FALSE, return  
immediately. One of the event notification methods must be enabled to receive notification  
hhpAcquireIntelligentImage  
The location of the window of interest must be provided in units of minimum barcode widths. This allows the imager to grab the  
same physical window, no matter how far the imager is from the page. The resultant image window is always squared with the  
X and Y axis of the returned image, so even if the barcode page is rotated relative to the imager, the resultant image appears  
square to the image edges.  
There is only one intelligent image call that supports both synchronous and asynchronous capture. If synchronous capture is  
used, all members of this structure must be valid. If asynchronous capture is used, you will receive  
HHP_INTELIMG_BARCODE_EVENT for the barcode data, and HHP_INTELIMG_IMAGE_EVENT for the image data. The  
barcode data is returned in a normal barcode structure (HHP_DECODE_MSG), while the intelligent image data is returned in an  
HPP_IMAGE structure.  
Note:  
Since the HHP_INTEL_IMG structure requires that image offsets and size be specified in barcode units, the  
HHP_INTEL_IMG structure has a size member that allows you to specify (in pixels) the maximum allowable width and  
height for the returned image.  
hhpAcquireIntelligentImage(  
PHHP_INTEL_IMG pIntelImg,  
PHHP_DECODE_MSG pDecodeMsg,  
DWORD dwTimeout,  
PHHP_IMAGE pImg,  
BOOL bWait  
)
2 - 1  
 
         
Parameter  
Description  
pIntelImg  
Pointer to an HHP_INTEL_IMG structure that contains the setup parameters describing  
the location of the intelligent image relative to the barcode.  
pDecodeMsg  
Pointer to an HHP_DECODE_MSG structure if bWait is TRUE. If bWait is FALSE, the  
parameter is ignored and should be NULL. The intelligent image barcode information is  
returned here.  
dwTimeout  
pImg  
Maximum time (in milliseconds) to attempt to decode before declaring a no decode.  
Pointer to an HHP_IMAGE structure if bWait is TRUE. If bWait is FALSE, the parameter  
is ignored and should be NULL.  
bWait  
If TRUE, do not return until the image is received or an error occurs. If FALSE, return  
immediately. One of the event notification methods must be enabled to receive notification  
hhpCancelIo  
Cancels the current barcode or image capture.  
hhpCancelIo(  
void  
)
hhpCaptureBarcode  
This function causes the imager to capture images and attempt to decode them. Decoded data returned is translated by code  
page and locale. Barcode capture can be synchronous or asynchronous. Synchronous capture is specified by setting the bWait  
parameter hhpCaptureBarcode to TRUE. In this case, the function will not return until a barcode is read, an error occurs, or the  
decode timeout is reached. Asynchronous capture is specified by setting the bWait parameter hhpCaptureBarcode to FALSE,  
or whenever a barcode capture is initiated other than by the 5X00 Series (e.g., from a hardware trigger). In order to be notified  
of an asynchronous transfer, you must enable at least one of the notification methods (see hhpSetAsyncMethods on page 2-10).  
hhpCaptureBarcode(  
PHHP_DECODE_MSG pDecodeMsg,  
DWORD dwTimeout,  
BOOL bWait  
)
Parameter  
Description  
pDecodeMsg  
Pointer to an HHP_DECODE_MSG structure if bWait is TRUE.  
If bWait is FALSE, the parameter is ignored and should be NULL. (HHP_DECODE_MSG  
will be passed to hhpGetAsyncMethods() call instead.) The function returns immediately,  
and you are notified when symbols are decoded, an error occurs, or decoding times out  
(no barcode) using the specified event notification method(s).  
dwTimeout  
bWait  
Maximum time (in milliseconds) to attempt to decode before declaring a no decode. A  
value of CURRENT_DECODE_TIMEOUT specifies that the timeout is whatever is  
currently set on the imager. A value of 0 indicates no timeout.  
If TRUE, wait for capture to complete before returning. If FALSE, one of the event  
notification methods must be enabled to receive notification upon completion.  
hhpCaptureRawBarcode  
This function causes the imager to capture images and attempt to decode them. Decoded data returned is unmodified 8 bit ASCII  
data. Barcode capture can be synchronous or asynchronous. Synchronous capture is specified by setting the bWait parameter  
hhpCaptureRawBarcode to TRUE. In this case, the function will not return until a barcode is read, an error occurs, or the decode  
timeout is reached. Asynchronous capture is specified by setting the bWait parameter hhpCaptureRawBarcode to FALSE, or  
whenever a barcode capture is initiated other than by the 5X00 Series (e.g., from a hardware trigger). In order to be notified of  
2 - 2  
 
           
hhpCaptureBarcode(  
PHHP_RAW_DECODE_MSG pDecodeMsg,  
DWORD dwTimeout,  
BOOL bWait  
)
Parameter  
Description  
pDecodeMsg  
Pointer to an HHP_RAW_DECODE_MSG structure if bWait is TRUE.  
If bWait is FALSE, the parameter is ignored and should be NULL. (HHP_DECODE_MSG  
will be passed to hhpGetAsyncMethods() call instead.) The function returns immediately,  
and you are notified when symbols are decoded, an error occurs, or decoding times out  
(no barcode) using the specified event notification method(s).  
dwTimeout  
bWait  
Maximum time (in milliseconds) to attempt to decode before declaring a no decode. A  
value of CURRENT_DECODE_TIMEOUT specifies that the timeout is whatever is  
currently set on the imager. A value of 0 indicates no timeout.  
If TRUE, wait for capture to complete before returning. If FALSE, one of the event  
notification methods must be enabled to receive notification upon completion.  
hhpConnect  
This function opens a connection to an imager. The connection must be closed by calling hhpDisconnect(). The caller can verify  
that the imager is connected by calling hhpEngineConnected().  
Opens the selected communications port and establishes connection with the imager and starts the read data thread.  
hhpConnect(  
HHP_CONNECT_TYPE connectType,  
PVOID pStruct  
)
Parameter  
Description  
connectType  
Describes the type of connection and hardware port, e.g., HHP_COM1, HHP_COM2,  
HHP_COM3.  
pStruct  
An optional structure that contains setup information for the hardware port, or NULL.  
PHHP_SERIAL_PORT_CONFIG is used to configure a serial port connection.  
hhpDisconnect  
Closes the communications port and stops the read data thread.  
hhpDisconnect(  
void  
)
hhpEnableDisableSymbology  
Enables/disables an individual symbology or all symbologies.  
hhpEnableDisableSymbology(  
int nSymId,  
BOOL bEnable  
)
Parameter  
Description  
nSymId  
One of the symbology enumerated types, e.g., SYM_CODE39, SYM_OCR, or SYM_ALL  
to enable/disable all symbologies.  
bEnable  
TRUE to enable symbology, FALSE to disable symbology.  
2 - 3  
 
           
hhpEngineConnected  
This function determines whether the imager is connected. This function checks to to see if the imager has lost power (due to  
the host going into a suspended state), or if the imager has been removed.  
hhpEngineConnected(  
void  
)
hhpGetAsyncResult  
Retrieves the data from the last signal event (image/barcode capture). This function can be called with pResultStruct set to NULL  
to obtain the event type. This is useful when the notification method is a Windows event.  
Result_t hhpGetAsyncResult(  
hhpEventType_t *pEventType,  
PVOID pResultStruct  
)
Parameter  
Description  
hEventType  
Type of data causing the event notification. The valid values are:  
HHP_BARCODE_EVENT  
HHP_IMAGE_EVENT  
HHP_TEXT_ MSG_EVENT  
HHP_INTELIMG_BARCODE_EVENT  
HHP_INTELIMG_IMAGE_EVENT  
pResultStruct  
An HHP_DECODE_MSG, HHP_IMAGE, or HHP_TEXT_MSG structure pointer,  
depending on the value of hEventType. This parameter can be NULL if just the event type  
is desired. This is of use when the Event Handle notification is used.  
hhpGetErrorMessage  
This function returns a text message describing the meaning of a Result_t error code. See Error Codes on page 3-1 for complete  
descriptions.  
hhpGetErrorMessage(  
Result_t nErrorCode,  
PTCHAR ptcErrorMsg,  
int nMaxChars  
)
Parameter  
nErrorCode  
ptcErrMsg  
nMaxChars  
Description  
Error code returned from one of the other 5X00 Series functions.  
TCHAR buffer to hold error message string.  
Maximum number of characters that can fit in ptcErrorMsg including NULL.  
hhpGetLastImage  
This function causes the imager to transfer the last image captured to the host. If bWait is TRUE, the function will not return until  
the image is fully received or an error occurs. If bWait is FALSE, the function returns immediately and you are notified when  
image transfer has completed or an error has occurred. pImgTrans is an optional parameter and can be NULL. Setting the  
appropriate bit mask for each item specifies active members of this structure. This function can be used to obtain the image from  
the last barcode capture attempt as well as the last image from an image capture attempt.  
hhpGetLastImage(  
PHHP_IMAGE pImg,  
PHHP_IMAGE_TRANSFER pImgTrans,  
BOOL bWait  
)
2 - 4  
 
               
Parameter  
Description  
pImg  
Pointer to an HHP_IMAGE structure if bWait is TRUE. If bWait is FALSE, the parameter  
is ignored and should be NULL.  
pImgTrans  
Optional pointer to an HHP_IMAGE_TRANSFER structure. This structure overrides (just  
for this call) the current imager configuration, and specifies the pixel subsample, cropping  
rectangle, transfer compression type, compression factor (for JPEG lossy transfer), and  
progress notification method. If this parameter is NULL, the current imager configuration  
settings are used except for the progress notification methods that must be specified for  
each call if notification is desired.  
bWait  
If TRUE, do not return until the image is received or an error occurs. If FALSE, return  
immediately. One of the event notification methods must be enabled to receive notification  
on completion.  
hhpNamedConnect  
This function opens a connection to an imager. The connection must be closed by calling hhpDisconnect (page 2-3). The caller  
can verify that the imager is connected by calling hhpEngineConnected (page 2-4).  
hhpNamedConnect(  
PTCHAR ptcConnectName,  
PVOID pStruct  
)
Parameter  
ptcConnectName  
pStruct  
Description  
The name of driver for the hardware port, e.g., "COM1:" or "\\.\COM12."  
An optional structure that contains setup information for the hardware port, or NULL.  
HHP_SERIAL_PORT_CONFIG is used to configure a serial port connection.  
hhpRawAcquireIntelligentImage  
Captures a portion of the image in which a barcode is decoded. The position of the image is specified relative to the center of  
the barcode. This function differs from hhpAcquireIntelligentImage (page 2-1) in that the barcode data is returned as a raw  
(untranslated) byte data array.  
Note:  
Since the HHP_INTEL_IMG structure requires that image offsets and size be specified in barcode units, the  
HHP_INTEL_IMG structure has a size member that allows you to specify (in pixels) the maximum allowable width and  
height for the returned image.  
hhpRawAcquireIntelligentImage(  
PHHP_INTEL_IMG pIntelImg,  
PHHP_RAW_DECODE_MSG pRawDecodeMsg,  
DWORD dwTimeout,  
PHHP_IMAGE pImg,  
BOOL bWait  
)
Parameter  
Description  
pIntelImg  
Pointer to an HHP_INTEL_IMG structure that contains the setup parameters describing  
the location of the intelligent image relative to the barcode.  
pRawDecodeMsg  
Pointer to an HHP_RAW_DECODE_MSG structure if bWait is TRUE. If bWait is FALSE,  
the parameter is ignored and should be NULL. The intelligent barcode raw data  
(untranslated) is returned here.  
dwTimeout  
pImg  
Maximum time (in milliseconds) to attempt to decode before declaring a no decode.  
Pointer to an HHP_IMAGE structure if bWait is TRUE. If FALSE, the parameter is ignored  
and should be NULL.  
bWait  
If TRUE, do not return until the image is received, the decode timeout is reached, or an  
error occurs. If FALSE, return immediately. One of the event notification methods must  
2 - 5  
 
       
hhpReadConfigItem  
Reads the configuration items for one or all of the configuration structures found in the main 5X00 Series configuration structure  
HHP_CONFIG.  
hhpReadConfigItem(  
SetupType_t cfgType,  
ConfigItems_t item,  
PVOID pStruct  
)
2 - 6  
 
   
Parameter  
Description  
cfgType  
Use SETUP_TYPE_CURRENT for the current settings, or SETUP_TYPE_DEFAULT for  
the customer default settings.  
item  
One of the members of the enumerated type ConfigItems_t. The valid values are:  
BEEPER_CONFIG  
Returns beeper control settings for devices with audible  
beepers. The settings include volume, beep on decode,  
and beep on reset.  
TRIGGER_CONFIG  
DECODER_CONFIG  
Returns values for all trigger timeouts and current  
trigger mode.  
Returns the decoder setup. This includes single  
decode, multiple decodes, print weight, centered  
decode, and aimer.  
POWER_CONFIG  
Contains low power configuration settings: trigger  
mode, low power timeout, low power imaging, LED  
brightness, aimer LED settings, and system clock  
speed.  
VERSION_INFO  
Returns the SDK, imager firmware, and imager boot  
code versions.  
SYMBOLOGY_CONFIG  
Returns the enable and setup parameters for all  
symbologies. Individual symbologies can be read by  
calling hhpReadSymbologyConfig.  
SERIAL_PORT_CONFIG  
IMAGE_ACQUISITION  
If using a serial connection imager, this returns the  
serial port setup parameters of the imager.  
Returns the current imager settings for capture mode,  
manual exposure, manual gain, manual frame rate,  
target white value, target window, aimer and  
illumination duty cycle, and triggering mode (hardware  
trigger dependent).  
IMAGE_TRANSFER  
Returns the current image transfer protocols, such as  
cropping window, pixel subsample, and transfer  
compression.  
SEQUENCE_CONFIG  
ALL_CONFIG  
Returns the sequence mode enable/disable state and  
the data sequence command string.  
All of the above except serial port config.  
pStruct  
Pointer to the appropriate structure based on parameter “item:”  
HHP_BEEPER  
HHP_TRIGGER  
HHP_DECODER_CONFIG  
HHP_POWER_SETTINGS  
HHP_VERSION_INFO  
HHP_SYM_CONFIG  
HHP_SERIAL_PORT_CONFIG  
HP_IMAGE_ACQUISITION  
HHP_IMAGE_TRANSFER  
HHP_SEQUENCE  
HHP_CONFIG  
hhpReadConfigStream  
Reads the full imager configuration as a single stream of data into a buffer. The buffer contains all the configuration items in an  
ASCII stream so that it can be written to a disk for storage. No interpretation is done on the data stream, therefore, the data  
stream contains both read only, and read/write data.  
2 - 7  
 
   
hhpReadConfigStream(  
PBYTE puchCfgStream,  
int nMaxLen,  
PINT pnBytesReturned  
)
Parameter  
Description  
puchCfgStream  
nMaxLen  
pnBytesReturned  
Buffer to hold the raw imager configuration stream.  
Maximum number of bytes that fit in buffer puchCfgStream.  
Pointer to an integer where the number of bytes returned in puchCfgStream is placed.  
hhpReadEngineInfo  
Reads information about the image engine contained in the image engine PSOC. This call is only valid for imagers that have a  
PSOC. If the attached imager is not an 5X80 image engine, or the engine does not have a PSOC, the function returns the error  
code RESULT_ERR_UNSUPPORTED.  
hhpReadEngineInfo(  
PHHP_ENGINE_INFO pEngInfo  
)
Parameter  
Description  
pEngInfo  
Pointer to an engine information structure in which the engine information is returned. The  
dwStructSize member must be set to size (HHP_ENGINE_INFO) before making the call.  
hhpReadImagerCapabilities  
Returns the fixed imager capabilities, such as imager bits per pixel or image capture width and height.  
Note:  
As with all other HHP structures, the dwStructSize member of the structure must be set before calling this function. (Set  
to sizeof (HHP_IMAGER_CAPS).)  
hhpReadImagerCapabilities(  
HHP_IMAGER_CAPS pImgrCaps  
)
Parameter  
Description  
pImgrCaps  
Pointer to the HHP_IMAGER_CAPS structure.  
hhpReadSymbologyConfig  
Reads configuration items for a single symbology or for all symbologies. Individual items to be read are specified by adding the  
appropriate mask bit (OR it) to the mask member of the structure to which it belongs. Only items whose bits are set are read; all  
other items are ignored.  
hhpReadSymbologyConfig(  
SetupType_t cfgType,  
int nSymbol,  
PVOID pvSymStruct  
)
Parameter  
Description  
cfgType  
Use SETUP_TYPE_CURRENT for the current settings, or SETUP_TYPE_DEFAULT for  
the customer default settings.  
nSymbol  
pStruct  
One of the symbology enumerated types, e.g., SYM_CODE39, SYM_OCR, or SYM_ALL  
to read all symbologies.  
Pointer to the appropriate structure based on nSymbol, e.g., CODE39_T, OCR_T, or  
HHP_SYM_CONFIG if all symbologies.  
2 - 8  
 
           
hhpReadSymbologyRangeMaxMin  
Returns the specified symbology range maximum and minimum values. If a symbology has no range values, the function returns  
-1 for the minimum and maximum values.  
hhpReadSymbologyRangeMaxMin(  
int symbol,  
PLONG pnRangeMin,  
PLONG pnRangeMax  
)
Parameter  
Description  
int  
The enumerated symbology types, eg., SYM_CODE39, SYM_PDF417, or SYM_ALL to  
read the max/min range for all symbologies.  
pnRangeMin  
pnRangeMax  
A LONG pointer to hold the minimum range value for single symbologies, or a LONG array  
of size NUM_SYMBOLOGIES if SYM_ALL specified. The min value will be -1 if the  
symbology does not support a minimum length value.  
A LONG pointer to hold the maximum range value for single symbologies, or a LONG array  
of size NUM_SYMBOLOGIES if SYM_ALL specified. The max value will be -1 if the  
symbology does not support a maximum length value.  
hhpSendActionCommand  
This command allows the application to modify some of the imager hardware states. The items that can be modified include  
turning the illumination LEDs on/off, turning the aimer LEDs on/off, or causing the device’s beeper to beep/double beep.  
hhpSendActionCommand(  
HHP_ACTION actionCmd,  
int nVal )  
Parameter  
Description  
actionCmd  
One of the values of enum HHP_ACTION (HHP_AIMER_CMD,  
HHP_ILLUMINATION_CMD, or HHP_BEEP_CMD).  
HHP_ON/HHP_OFF for illumination or aimers  
HHP_SINGLE_BEEP/HHP_DOUBLE_BEEP for beeper.  
nVal  
hhpSendMessage  
The SDK API provides access to almost all of the imager command set. hhpSendMessage allows applications to send menu  
(imager) commands directly to the imager (both wrapped and unwrapped) and to receive the actual uninterpreted imager  
response. This command allows a developer to send debug commands to the imager.  
hhpSendMessage(  
PBYTE puchMsg,  
int nLen,  
BOOL bSendRaw,  
PBYTE puchReply,  
int nLenToRead,  
PINT pnRetLen  
)
2 - 9  
 
           
Parameter  
Description  
puchMsg  
Command sent to the imager with or without command wrapper. If no wrapper, set  
bSendRaw to TRUE.  
nLen  
Number of bytes to send (in puchMsg).  
bSendRaw  
If TRUE, the SYN M CR command wrapper is NOT added to the command before sending  
it to the imager. If FALSE, the command is sent withSYN M CR command wrapper.  
Buffer to hold imager response. Can be NULL if no response required.  
Number of bytes to read from imager in response. 0 if no response.  
Pointer to number of bytes returned in pnRetLen. NULL if no response required.  
puchReply  
nLenToRead  
pnRetLen  
hhpSetAsyncMethods  
hhpSetAsyncMethods sets the methods by which the caller wishes to be notified upon receipt of a barcode or image.  
hhpSetAsyncMethods(  
HANDLE hEventHandle,  
HWND hWndHandle,  
HHP_EVENT_CALLBACK EventCallback  
)
Parameter  
Description  
hEventHandle  
hWndHandle  
Handle to a Windows Event. The event should specify manual reset.  
Handle to the application window that should receive the SDK defined message  
WM_HHP_EVENT_HWND_MSG. The message parameters are:  
WPARAM The event type (hhpEventType_t)  
LPARAM The number of bytes received  
EventCallback  
Callback function of type HHPEVENTCALLBACK, which is BOOL CALLBACK name (  
EventType_t,DWORD ).  
hhpSetBarcodeDataCodePage  
This function changes the code page used when translating the decoded data from a string of bytes to Unicode. The default  
value is CP_ACP (ANSI code page). There is no error checking on the values sent to this function, so you must determine  
whether or not a code page is valid on the given system.  
hhpSetBarcodeDataCodePage(  
DWORD dwCodePage  
)
Parameter  
Description  
dwCodePage  
Code page to use when converting from BYTE string to Unicode. The only 2 code pages  
that are valid are CP_ACP and CP_OEMCP.  
hhpSetConfigItemToDefaults  
Defaults a configuration group or individual group structure items.  
hhpSetConfigItemToDefaults(  
ConfigItems_t item  
)
2 - 10  
 
           
Parameter  
Description  
item  
One of the members of the enumerated type ConfigItems_t. The valid values are:  
BEEPER_CONFIG  
Resets HHP_BEEPER structure settings to their  
defaults.  
TRIGGER_CONFIG  
DECODER_CONFIG  
POWER_CONFIG  
Resets HHP_TRIGGER structure settings to their  
defaults.  
Resets HHP_DECODER structure settings to their  
defaults.  
Resets HHP_POWER_SETTINGS structure settings to  
their defaults.  
SYMBOLOGY_CONFIG  
SERIAL_PORT_CONFIG  
Resets HHP_SYM_CONFIG structure settings to their  
defaults.  
Resets HHP_SERIAL_PORT_CONFIG structure  
settings to their defaults. Connection to the imager is  
maintained.  
IMAGE_ACQUISITION  
IMAGE_TRANSFER  
ALL_CONFIG  
Resets HHP_IMAGE_ACQUISITION structure settings  
to their defaults.  
Resets HHP_IMAGE_TRANSFER structure settings to  
their defaults (not progress notification methods).  
Resets all of the above.  
hhpSetHardwareLineDllFileName  
The SDK API provides the ability to provide OEM device-dependent extensions to support the imager hardware sleep lines, and  
hardware trigger and/or special COM port driver configuration/initialization. The definitions and function prototype are located in  
the header file OemDll.h. Also see OEM-Configurable SDK Functionality on page 5-1.  
hhpSetHardwareLineDllFileName(  
PTCHAR ptcHwrFilename  
)
Parameter  
Description  
ptcHwrFilename  
Name of DLL provided by OEM containing some or all of the function exports described in  
the header file OemDll.h  
hhpSetSymbologyDefaults  
Resets an individual symbology or all symbologies to their default values.  
hhpSetSymbologyDefaults(  
int nSymId  
)
Parameter  
Description  
nSymId  
One of the symbology enumerated types, e.g., SYM_CODE39, SYM_OCR, or SYM_ALL  
to default all symbologies.  
hhpUpgradeFirmware  
The 5X00 Series provides the ability to update the firmware application running on the imager. hhpUpgradeFirmware checks the  
file contents to verify that it is a firmware application file before the file is downloaded to the imager. The firmware file is  
transferred to the imager compressed (lossless) unless the SDK has determined that the imager is running in bootstrap code  
instead of the current firmware application. In this case, the file is transferred uncompressed. This function only supports  
synchronous operation, so it does not return until the firmware file has been transferred to the imager and the imager has burned  
the new code into flash memory. When this function returns, the connection (host COM port) is connected at the default baud  
rate of 115200.  
2 - 11  
 
           
hhpUpgradeFirmware(  
const PTCHARptcFirmwareFilename,  
PDWORD DpdwTransferPercent,  
HWND hTransferNotifyHwnd  
)
Parameter  
Description  
ptcFirmwareFilename String containing the fully qualified filename of the file that contains the code to be sent to the  
imager. The file extension is usually .bin or .axf. The file is sent using an Hmodem, which is a  
derivative of Xmodem 1K.  
pdwTransferPercent  
Pointer to a DWORD that contains the current percent transferred value(0 to 100). If  
pdwTransferPercent is valid, the transfer completion percent is written to it. This is updated after  
each packet is sent.  
hTransferNotifyHwnd Handle to the window that is to receive the transfer update messages. The message is sent  
when the percentage changes by more than 1%. The window associated with the handle should  
hook the WM_HHP_PROGRESS_HWND_MSG message.  
After file transfer is complete and while the imager is storing the new code in flash, the message  
WM_HHP_IMAGER_FLASHING is sent to the window HWND (if valid). The parameters are:  
WPARAM - Bytes transferred so far  
LPARAM - Bytes to be sent  
The window should also hook the WM_HHP_IMAGER_FLASHING message. The parameters  
sent are:  
1st Call wParam=1 lParam=0 ransfer is done and flashing has begun  
Subsequent wParam=x lParam=1 Where x toggles between 0 and 1 every ½ second  
Final Call wParam=0 lParam=0 Flashing is complete  
hhpWriteConfigItem  
Writes the configuration items for one or all of the configuration structures found in the main 5X00 Series configuration structure  
HHP_CONFIG. Individual items can be specified by adding the appropriate mask bit by ORing it with the dwMask member of  
the structure. Only items whose bits are set are written; all other items are ignored.  
hhpWriteConfigItem(  
ConfigItems_t item,  
PVOID pStruct  
)
2 - 12  
 
   
Parameter  
Description  
item  
One of the members of the enumerated type ConfigItems_t. The valid values are:  
BEEPER_CONFIG  
TRIGGER_CONFIG  
DECODER_CONFIG  
POWER_CONFIG  
VERSION_INFO  
Writes the HHP_BEEPER structure settings specified  
by the dwMask value to the imager.  
Writes the HHP_TRIGGER structure settings specified  
by the dwMask value to the imager.  
Writes the HHP_DECODER_CONFIG structure  
settings specified by the dwMask value to the imager.  
Writes the HHP_POWER_SETTINGS structure  
settings specified by the dwMask value to the imager.  
Returns the SDK, imager firmware, and imager boot  
code versions.  
SYMBOLOGY_CONFIG  
Writes the HHP_SYM_CONFIG individual structure  
symbology settings specified by each structure's  
dwMask value to the imager.  
SERIAL_PORT_CONFIG  
Writes the HHP_SERIAL_PORT_CONFIG structure  
settings specified by the dwMask value to the imager.  
Connection to the imager is maintaned.  
IMAGE_ACQUISITION  
IMAGE_TRANSFER  
Writes the HHP_IMAGE_ACQUISITION structure  
settings specified by the dwMask value to the imager.  
Writes the HHP_IMAGE_TRANSFER structure  
settings specified by the dwMask value to the imager  
(not progress notification methods).  
SEQUENCE_CONFIG  
ALL_CONFIG  
Returns the sequence mode enable/disable state and  
the data sequence command string.  
Writes the members specified in each of the structures  
of HHP_CONFIG. This includes all of the above except  
SERIAL_PORT_CONFIG.  
pStruct  
Pointer to the appropriate structure based on item:  
HHP_BEEPER  
HHP_TRIGGER  
HHP_DECODER_CONFIG  
HHP_POWER_SETTINGS  
HHP_SYM_CONFIG  
HHP_IMAGE_ACQUISITION  
HHP_IMAGE_TRANSFER  
HHP_SEQUENCE  
HHP_CONFIG  
hhpWriteConfigStream  
Writes an entire data stream of programmable parameters to the device.  
hhpWriteConfigStream(  
PBYTE puchCfgStream,  
int nLen  
)
Parameter  
puchCfgStream  
nMaxLen  
Description  
Buffer to hold the raw imager configuration stream.  
Maximum number of bytes that fit in buffer puchCfgStream.  
2 - 13  
 
   
hhpWriteSymbologyConfig  
Writes configuration items for a single symbology or for all symbologies. Individual items to be written are specified by adding  
the appropriate mask bit (OR it) to the mask member of the structure to which it belongs. Only items whose bits are set are  
written; all other items are ignored.  
hhpWriteSymbologyConfig(  
int nSymId,  
PVOID pvSymStruct  
)
Parameter  
Description  
nSymId  
One of the symbology enumerated types, e.g., SYM_CODE39, SYM_OCR, or SYM_ALL  
to write all symbologies.  
pStruct  
Pointer to the appropriate structure based on nSymbol, e.g., CODE39_T, OCR_T, or  
HHP_SYM_CONFIG if all symbologies.  
Symbology Identifiers  
Note:  
Please consult the appropriate symbology specification for discussion of AIM symbology IDs and modifiers.  
Code  
ID  
Symbology  
Enumeration  
AIM ID  
(hex)  
Australian Post  
Aztec Code  
Aztec Mesa  
British Post  
Canadian Post  
China Post  
Codabar  
] X0  
] zm  
] zm  
] X0  
] X0  
] X0  
] Fm  
] Om  
] H3  
] Km  
] Cm  
A
(0x41)  
(0x7A)  
(0x5A)  
(0x42)  
(0x43)  
(0x51)  
(0x61)  
(0x71)  
(0x68)  
(0x6F)  
(0x6A)  
z
Z
B
C
Q
a
q
h
o
j
Codablock F  
Code 11  
Code 16K  
Code 128  
Code 32 Pharmaceutical  
(PARAF)  
] X0  
<
(0x3C)  
Code 39  
Code 49  
] Am  
] Tm  
b
l
(0x62)  
(0x6C)  
Code 4CB (4 State Customer  
Barcode)  
] X0  
M
(0x4D)  
Code 93  
] Gm  
] dm  
] E4  
] E0  
] em  
] Im  
i
(0x69)  
(0x77)  
(0x44)  
(0x64)  
(0x79)  
(0x65)  
(0x6A)  
(0x4A)  
Data Matrix  
EAN-8  
w
D
d
y
e
j
EAN-13  
EAN•UCC Composite  
Interleaved 2 of 5  
ISBT 128  
] C4  
] X0  
Japanese Post  
J
2 - 14  
 
     
Code  
Symbology  
Enumeration  
AIM ID  
(hex)  
ID  
K
?
m
x
KIX (Netherlands) Post  
Korea Post  
] X0  
] X0  
] X0  
] Um  
] Lm  
] Mm  
] Lm  
] X0  
] P0  
] pm  
] X0  
] o3  
(0x4B)  
(0x3F)  
(0x6D)  
(0x78)  
(0x52)  
(0x67)  
(0x72)  
(0x4C)  
(0x6E)  
(0x57)  
(0x50)  
(0x4F)  
(0x73)  
(0x79)  
(0x66)  
(0x66)  
(0x54)  
(0x74)  
(0x3D)  
(0x63)  
Matrix 2 of 5  
MaxiCode  
MicroPDF417  
MSI  
R
g
r
PDF417  
Planet Code  
L
n
W
P
O
s
Plessey Code  
PosiCode  
Postnet  
OCR US Money Font  
QR Code  
] Qm  
] em  
] S0  
] Rm  
] L2  
Reduced Space Symbology  
Straight 2 of 5 Industrial  
Straight 2 of 5 IATA  
TCIF Linked Code 39 (TLC39)  
Telepen  
y
f
f
T
t
] Bm  
] X0  
] E0  
Trioptic Code  
UPC-A  
=
c
UPC-A with Extended Coupon  
Code  
] E3  
c
(0x63)  
UPC-E  
] E0  
] X0  
] X0  
E
E
N
(0x45)  
(0x45)  
(0x4E)  
UPC-E1  
UPU 4 State ID Tag  
2 - 15  
 
2 - 16  
 
3
Enumerated Types and Definitions  
Error Codes  
RESULT_INTIALIZE = -1  
Initial error code value.  
RESULT_SUCCESS = 0  
Operation was successful.  
RESULT_EOT = 256  
Undefined error.  
RESULT_ERR_BADFILENAME  
RESULT_ERR_BADINTELIMAGE  
RESULT_ERR_BADPORT  
Bad file name.  
Part of image window outside barcode image boundaries.  
Invalid connection specified.  
RESULT_ERR_BADREGION  
RESULT_ERR_BADSMARTIMAGE  
RESULT_ERR_BAUD_TOO_HIGH  
RESULT_ERR_BUFFER_TOO_SMALL  
RESULT_ERR_CAPTURE_IMAGE_FAILED  
RESULT_ERR_COMPRESSION_FAILED  
RESULT_ERR_CONNECT_BOOT_CODE  
RESULT_ERR_DECOMPRESSION_FAILED  
RESULT_ERR_DLL_FILE  
Invalid image window.  
The device did not capture a valid image for intelligent imaging.  
Requested baud rate not supported by host port.  
Buffer passed in to small for output.  
Imager failed to capture the image.  
Error compressing image data.  
Imager connected but is running in boot code.  
Error decompressing image data.  
Dll file specified to SetHardwareDllFileName not found.  
Communication error/no response.  
The scan engine temporarily busy.  
Error occurred during a file operation.  
The selected file is incompatible with the imager.  
The selected file is invalid or corrupt.  
Generic internal failure.  
RESULT_ERR_DRIVER  
RESULT_ERR_ENGINEBUSY  
RESULT_ERR_FILE  
RESULT_ERR_FILEINCOMPATIBLE  
RESULT_ERR_FILEINVALID  
RESULT_ERR_INTERNAL_ERROR  
RESULT_ERR_INVALID_COMM_PARAMS  
RESULT_ERR_MEMORY  
Invalid RS-232 parameters specified.  
Out of memory/memory allocation failed.  
Symbol decoded is a menu symbol.  
Received a NAK on response.  
RESULT_ERR_MENUDECODE  
RESULT_ERR_NAK  
RESULT_ERR_NODECODE  
No decode: timed out or no more trigger.  
Communication initialization failed.  
hhpGetLastImage called but no image available.  
No decode during intelligent image capture.  
Error on retrieve intelligent image from imager.  
Imager did not acknowledge request.  
Imager not yet connected.  
RESULT_ERR_NODRIVER  
RESULT_ERR_NOIMAGE  
RESULT_ERR_NOINTELBARCODE  
RESULT_ERR_NOINTELIMAGE  
RESULT_ERR_NORESPONSE  
RESULT_ERR_NOTCONNECTED  
RESULT_ERR_NOTRIGGER  
RESULT_ERR_PARAMETER  
RESULT_ERR_POLLEVENT  
RESULT_ERR_READTHREAD_START  
RESULT_ERR_READTHREAD_STOP  
RESULT_ERR_REFLASH  
During wait for decode, checks that trigger return is released.  
One of the function parameters was invalid.  
Error configuring transfer thread.  
Error starting asynchronous transfer thread.  
Error stopping asynchronous transfer thread.  
Engine firmware is corrupt.  
3 - 1  
 
       
Error Codes (Continued)  
RESULT_ERR_SHIP_IMAGE_FAILED  
RESULT_ERR_SMARTIMAGETOOLARGE  
RESULT_ERR_SYMBOLOGY_HAS_NO_RANGE  
RESULT_ERR_UNICODE_UNSUPPORTED  
RESULT_ERR_UNSUPPORTED  
Imager failed to ship captured image.  
The captured image is too large to perform intelligent imaging.  
The symbology has no range maximum/minimum values.  
Attempted to set Code Page, but SDK is not UNICODE.  
The operation was not supported by the engine.  
Upgrade of imager firmware failed.  
RESULT_ERR_UPGRADE  
RESULT_ERR_USER_CANCEL  
User called hhpCancelIo to abort operation.  
RESULT_ERR_WRONGRESULTSTRUCT  
Wrong structure passed in for the type specified.  
Setup Type Enumerated Type  
SETUP_TYPE_CURRENT,  
The current value in flash.  
Hard coded Value. Set to current when imager “Reset To  
Defaults.”  
SETUP_TYPE_DEFAULT = 0,  
Symbology ID Enumeration  
Total number of supported  
NUM_SYMBOLOGIES  
All Decoders  
symbologies  
SYM_ALL=100  
All active symbologies  
Australian Post  
Aztec Code  
British Post  
Canadian Post  
China Post  
All Decoders  
SYM_AUSPOST,  
SYM_AZTEC = 0,  
SYM_BPO,  
2D Decoder only  
2D Decoder only  
2D Decoder only  
2D Decoder only  
All Decoders  
SYM_CANPOST,  
SYM_CHINAPOST  
SYM_CODABAR,  
SYM_CODABLOCK,  
SYM_CODE11,  
SYM_CODE16K  
SYM_CODE128,  
SYM_CODE32  
Codabar  
All Decoders  
Codablock  
2D Decoder only  
All Decoders  
Code 11  
Code 16K  
All Decoders  
Code 128  
All Decoders  
Code 32 Pharmaceutical (PARAF)  
Code 39  
All Decoders  
SYM_CODE39,  
SYM_CODE49,  
SYM_CODE4CB  
SYM_CODE93,  
SYM_COMPOSITE,  
SYM_COUPONCODE  
SYM_DATAMATRIX,  
SYM_DUTCHPOST,  
SYM_EAN13,  
All Decoders  
Code 49  
All Decoders  
4 State Customer Barcode  
Code 93  
2D Decoder only  
All Decoders  
Composite Code  
2D and PDF Decoders only  
UPC-A with Extended Coupon Code All Decoders  
Data Matrix  
2D Decoder only  
2D Decoder only  
All Decoders  
KIX (Netherlands) Post  
EAN-13  
SYM_EAN8,  
EAN-8  
All Decoders  
SYM_IATA25,  
Straight 2 of 5 IATA  
All Decoders  
3 - 2  
 
                                               
Symbology ID Enumeration (Continued)  
SYM_INT25,  
Interleaved 2 of 5  
ISBT  
All Decoders  
SYM_ISBT,  
All Decoders  
SYM_JAPOST,  
SYM_KORPOST  
SYM_MATRIX25,  
SYM_MAXICODE,  
SYM_MESA,  
Japanese Post  
Korean Post  
Matrix 2 of 5  
MaxiCode  
2D Decoder only  
All Decoders  
All Decoders  
2D Decoder only  
2D Decoder only  
2D and PDF Decoders  
All Decoders  
Aztec Mesas  
MicroPDF417  
MSI Code  
SYM_MICROPDF,  
SYM_MSI,  
OCR (OCR-A, OCR-B, OCR US  
Money Font, MICR)  
SYM_OCR,  
2D Decoder only  
SYM_PDF417,  
SYM_PLANET,  
SYM_PLESSEY  
SYM_POSICODE  
SYM_POSTNET,  
SYM_QR,  
PDF417  
2D and PDF Decoders  
2D Decoder only  
All Decoders  
Planet Code  
Plessey Code  
PosiCode  
All Decoders  
Postnet  
2D Decoder only  
2D Decoder only  
All Decoders  
QR Code  
SYM_RSS,  
Reduced Space Symbology (RSS)  
Straight 2 of 5 Industrial  
Telepen  
SYM_STRT25  
SYM_TELEPEN  
SYM_TLCODE39,  
SYM_TRIOPTIC  
SYM_UPCA,  
All Decoders  
All Decoders  
TCIF Linked Code 39 (TLC39)  
Trioptic Code  
All Decoders  
All Decoders  
UPC-A  
All Decoders  
SYM_UPCE0,  
SYM_UPCE1,  
SYM_UPUIDTAG  
UPC-E  
All Decoders  
UPC-E1 (not truly standard)  
ID tag (UPU 4-State)  
All Decoders  
2D Decoder only  
Supported OCR Fonts  
These are mutually exclusive. Only one font can be enabled at one time.  
OCR_DISABLED = 0,  
OCR_A,  
Disable OCR Codes.  
Enable OCR-A Font Decoding.  
Enable OCR-B Font Decoding.  
Enable Money Font Decoding.  
Not supported.  
OCR_B,  
OCR_MONEY,  
OCR_MICR_UNSUPPORTED,  
Image Formats  
FF_RAW_BINARY = 0,  
FF_RAW_GRAY,  
1 bit per pixel – Each row padded out to byte boundary.  
8 bits per pixel.  
FF_TIFF_BINARY,  
TIFF bilevel uncompressed.  
FF_TIFF_BINARY_PACKBITS,  
TIFF bilevel packbits compressed.  
3 - 3  
 
                                                     
Image Formats (Continued)  
FF_TIFF_GRAY,  
FF_JPEG_GRAY,  
FF_BMP_GRAY  
TIFF 8 bits per pixel uncompressed.  
JPEG lossy compression.  
Windows BMP file uncompressed.  
Compression Mode Formats  
COMPRESSION_NONE=0,  
COMPRESSION_LOSSLESS,  
COMPRESSION_LOSSY  
No compression.  
Huffman lossless compression.  
JPEG lossy compression.  
Capture Illumination Duty Cycle  
HHP_DUTY_CYCLE_OFF =0,  
HHP_DUTY_CYCLE_ON  
Keep off during image capture.  
Turn on for image capture.  
#define  
#define  
HHP_CAPTURE_ALWAYS_OFF  
HHP_CAPTURE_ALWAYS_ON  
HHP_DUTY_CYCLE_OFF  
HHP_DUTY_CYCLE_ON  
Auto Exposure Type  
HHP_AUTOEXPOSURE_BARCODE=0,  
HHP_AUTOEXPOSURE_PHOTO,  
Autoexposure for decode image (darker with less noise).  
Autoexposure for pictures. (lighter, more pleasing image).  
No Autoexposure. User should supply Exposure, Gain, and  
Frame Rate Values.  
HHP_AUTOEXPOSURE_MANUAL  
#define  
#define  
HHP_AUTOEXPOSURE_NONE  
HHP_AUTOEXPOSURE_FIXED  
HHP_AUTOEXPOSURE_MANUAL;  
HHP_AUTOEXPOSURE_NONE;  
Gain Values Enum  
Only used when in manual capture mode.  
HHP_GAIN_1x=1,  
HHP_GAIN_2x,  
HHP_GAIN_4x=4,  
Frame Rates Enum  
Only used when in manual capture mode.  
HHP_1_FRAMES_PER_SEC=1,  
HHP_2_FRAMES_PER_SEC,  
HHP_3_FRAMES_PER_SEC,  
HHP_4_FRAMES_PER_SEC,  
HHP_5_FRAMES_PER_SEC,  
HHP_6_FRAMES_PER_SEC,  
HHP_10_FRAMES_PER_SEC=10,  
HHP_12_FRAMES_PER_SEC=12,  
HHP_15_FRAMES_PER_SEC=15,  
HHP_20_FRAMES_PER_SEC=20,  
3 - 4  
 
           
HHP_30_FRAMES_PER_SEC=30  
Beeper Volume Enum  
BEEP_OFF=0,  
BEEP_LOW=1,  
BEEP_MEDIUM=2,  
BEEP_HIGH=3  
Don’t sound beeper – no volume.  
Low volume.  
Medium volume.  
Loudest volume.  
Decoder Mode Enum  
DECODE_METHOD_STANDARD=0,  
DECODE_METHOD_QUICK_OMNI  
DECODE_METHOD_NONOMNI_ALD  
DECODE_METHOD_OMNI_LINEAR  
Normal decode mode (default).  
Fast omni directional decoder .  
Non-omni advanced linear decoder.  
Omni-directional linear decoder.  
System (MPU) Clock Speeds  
Note: CPU clock speed must always be greater than system clock speed.  
POWER_SYS_SPEED_96MHZ=0,  
POWER_SYS_SPEED_48MHZ,  
POWER_SYS_SPEED_32MHZ  
Configuration Structure Item Enum for hhpReadConfigItem() and  
hhpWriteConfigItem()  
BEEPER_CONFIG=0,  
TRIGGER_CONFIG,  
DECODER_CONFIG,  
POWER_CONFIG,  
VERSION_INFO,  
Read/Write HHP_BEEPER items.  
Read/Write HHP_TRIGGER_CONFIG items.  
Read/Write HHP_DECODER_CONFIG items.  
Read/Write HHP_POWER_SETTINGS items.  
Read/Write HHP_VERSION_INFO items.  
Read/Write HHP_SYM_CONFIG items. If specified in  
hhpReadConfigItem(), all the symbology config items for all the  
symbologies will be retrieved. Use hhpReadSymbologyConfig()  
to specify individual symbology structures.  
SYMBOLOGY_CONFIG,  
SERIAL_PORT_CONFIG,  
IMAGE_ACQUISITION,  
IMAGE_TRANSFER,  
Read/Write HHP_SERIAL_PORT_CONFIG items.  
Read/Write HHP_IMAGE_ACQUISITION items.  
Read/Write HHP_IMAGE_TRANSFER items.  
Read/Write SEQUENCE_CONFIG items.  
SEQUENCE_CONFIG  
Read/Write HHP_CONFIG items from structure memory in all  
HHP configuration member structures.  
ALL_CONFIG  
3 - 5  
 
       
Trigger Modes Enum  
Requires trigger to scan (either software or hardware). No Low  
Power Mode.  
HHP_MANUAL_SERIAL = 0,  
UNUSED,  
Unused.  
Requires trigger to scan (either software or hardware). Image  
enters low power mode based on low power mode timeouts.  
HHP_MANUAL_LOW_POWER,  
The imager uses ambient light to detect barcodes. For further  
information please see the 5X80 Integration Manual.  
HHP_PRESENTATION,  
HHP_SCANSTAND,  
Constantly looks for the scan stand barcode. When the imager  
detects a barcode that is different from than the scan stand  
barcode, it initiates a full trigger. For further information please  
see the 5X80 Integration Manual.  
HHP_HOST_NOTIFY  
Captures and sends an image when triggered (instead of  
scanning for barcodes).  
HHP_SNAP_AND_SHIP  
Sequence Mode  
HHP_SEQ_DISABLED = 0,  
HHP_SEQ_ENABLED,  
HHP_SEQ_REQUIRED  
Sequence mode disabled.  
Sequence mode enabled but not required.  
Sequence mode enabled and required.  
Serial Port Baud Rates  
SERIAL_BAUD_300 = 300,  
300 BPS  
SERIAL_BAUD_600 = 600,  
600 BPS  
SERIAL_BAUD_1200 = 1200,  
SERIAL_BAUD_2400 = 2400,  
SERIAL_BAUD_4800 = 4800,  
SERIAL_BAUD_9600 = 9600,  
SERIAL_BAUD_19200 = 19200,  
SERIAL_BAUD_38400 = 38400,  
SERIAL_BAUD_57600 = 57600,  
SERIAL_BAUD_115200 = 115200,  
1200 BPS  
2400 BPS  
4800 BPS  
9600 BPS  
19200 BPS  
38400 BPS  
57600 BPS  
115200 BPS  
// Baud Rates that Require USB Serial or SIO950 Compatible Serial Port Driver  
SERIAL_BAUD_230400 = 230400,  
SERIAL_BAUD_460800 = 460800,  
SERIAL_BAUD_921600 = 921600,  
230400 BPS  
460800 BPS  
921600 BPS  
Baud Rates that Require USB Serial or SIO950 Compatible Serial Port Driver  
SERIAL_BAUD_230400 = 230400,  
SERIAL_BAUD_460800 = 460800,  
SERIAL_BAUD_921600 = 921600  
230400 BPS  
460800 BPS  
921600 BPS  
3 - 6  
 
       
Serial Data Bits  
SERIAL_DATA_BITS_7 = 7,  
SERIAL_DATA_BITS_8  
7 bit data  
8 bit data  
Parity  
SERIAL_PARITY_NONE = ‘N’,  
SERIAL_PARITY_ODD = ‘O’,  
SERIAL_PARITY_EVEN = ‘E’,  
SERIAL_PARITY_MARK = ‘M’,  
SERIAL_PARITY_SPACE = ‘S’  
No parity  
Odd parity  
Even parity  
Mark parity  
Space parity  
Stop Bits  
SERIAL_ONE_STOPBITS = 1,  
SERIAL_TWO_STOPBITS,  
1 stop bit  
2 stop bits  
Connection Types  
Currently limited to serial ports.  
HHP_COM1=0,  
HHP_COM2,  
COM1  
COM2  
HHP_COM3,  
COM3  
HHP_COM4,  
COM4  
HHP_COM5,  
COM5  
HHP_COM6,  
COM6  
HHP_COM7,  
COM7  
HHP_COM8,  
COM8  
HHP_COM9,  
COM9  
HHP_COM10,  
HHP_COM11,  
HHP_COM12,  
HHP_COM13,  
HHP_COM14,  
HHP_COM15,  
HHP_COM16,  
HHP_COM17,  
HHP_COM18,  
HHP_COM19,  
HHP_LAST_COMM_PORT=255  
COM10  
COM11  
COM12  
COM13  
COM14  
COM15  
COM16  
COM17  
COM18  
COM19  
Last valid comm port.  
3 - 7  
 
       
Decoder Symbology Support  
HHP_1D_CODES_ONLY=0,  
HHP_1D_AND_PDF_CODES,  
HHP_1D_AND_2D_CODES  
1D Linear and stacked linear codes only.  
Same as above plus PDF417 and MicroPDF417.  
All symbologies.  
HHP Action Commands  
HHP_AIMER_CMD=0,  
HHP_ILLUMINATION_CMD,  
HHP_BEEP_CMD  
Aimer command (turn aimers on/off).  
No longer supported by imagers.  
Beeper command (sound a single or double beep).  
On/Off Enum  
HHP_OFF=0,  
HHP_ON=1  
Turn Off (HHP_AIMER_CMD and HHP_ILLUMINATION_CMD).  
Turn On (HHP_AIMER_CMD and HHP_ILLUMINATION_CMD).  
Beep Execute Enum  
HHP_SINGLE_BEEP=0,  
HHP_DOUBLE_BEEP=1  
Single Beep (HHP_BEEP_CMD).  
Double Beep (HHP_BEEP_CMD).  
Imager Type Enum  
HHP_UNKNOWN_IMAGER  
Unable to determine engine type.  
HHP_DECODED_IMAGER_4080  
HHP_DECODED_IMAGER_4080_USB  
HHP_DECODED_IMAGER_5080VGA  
HHP_DECODED_IMAGER_5080VGA_USB  
Serial (RS-232) 4080 imager with internal decoder.  
USB serial 4080 imager with internal decoder.  
Serial (RS-232) 5080 VGA imager with internal decoder.  
USB serial 5080 VGA imager with internal decoder.  
Serial (RS-232) 5080 VGA imager with internal decoder and  
PSOC.  
HHP_DECODED_IMAGER_5080VGA_PSOC  
HHP_DECODED_IMAGER_5080VGA_PSOC_USB  
HHP_DECODED_IMAGER_5080  
USB serial 5080 VGA imager with internal decoder and PSOC.  
Serial (RS-232) 5080 imager with internal decoder.  
HHP_DECODED_IMAGER_5080_USB  
HHP_DECODED_IMAGER_5080_PSOC  
HHP_DECODED_IMAGER_5080_PSOC_USB  
USB serial 5080 imager with internal decoder.  
Serial (RS-232) 5080 imager with internal decoder and PSOC.  
USB serial 5080 imager with internal decoder and PSOC.  
Illumination Color Enum (5X10/5X80 engines only)  
SECONDARY_LEDS  
PRIMARY_LEDS  
Alternate illumination color (if supported by engine).  
Primary illumination color.  
3 - 8  
 
           
4
Structures and Mask Definitions  
Important: All structures have a dwStructSize member that MUST BE SET before calling any of the 5X00 Series API functions.  
This insures that the proper structure has been passed to the function being called.  
Most structures have a dwMask member. This specifies which structure members are active (to be read or written). Select  
structure items by ORing the individual structure masks for each of the items you wish to be active together.  
Symbology Structures and Defines  
All symbology structures are 1 of 3 possibilities.  
Important: Symbology configuration definitions for each symbology are ORed together in the dwFlags member of the symbology  
structure. The applicable flags are dependent on symbology. For example, Aztec Code accepts only  
SYMBOLOGY_ENABLE, while Postnet accepts SYMBOLOGY_ENABLE and SYMBOLOGY_CHECK_TRANSMIT.  
#define SYMBOLOGY_ENABLE  
0x00000001  
0x00000002  
0x00000004  
0x00000008  
Enable Symbology bit.  
Enable usage of check character.  
Send check character.  
Include the start and stop characters in the  
decoded result string.  
#define SYMBOLOGY_CHECK_ENABLE  
#define SYMBOLOGY_CHECK_TRANSMIT  
#define SYMBOLOGY_START_STOP_XMIT  
#define SYMBOLOGY_ENABLE_APPEND_MODE  
#define SYMBOLOGY_ENABLE_FULLASCII  
#define SYMBOLOGY_NUM_SYS_TRANSMIT  
#define SYMBOLOGY_2_DIGIT_ADDENDA  
#define SYMBOLOGY_5_DIGIT_ADDENDA  
#define SYMBOLOGY_ADDENDA_REQUIRED  
0x00000010  
0x00000020  
0x00000040  
0x00000080  
0x00000100  
0x00000200  
Code39 append mode.  
Enable Code39 Full ASCII.  
UPC-A/UPC-E Send Num Sys.  
Enable 2 digit Addenda (UPC and EAN).  
Enable 5 digit Addenda (UPC and EAN).  
Only allow codes with addenda (UPC and  
EAN).  
#define SYMBOLOGY_ADDENDA_SEPARATOR  
0x00000400  
Include Addenda separator space in  
returned string.  
#define SYMBOLOGY_EXPANDED_UPCE  
#define SYMBOLOGY_UPCE1_ENABLE  
0x00000800  
0x00001000  
Extended UPC-E.  
UPC-E1 enable (use  
SYMBOLOGY_ENABLE for UPC-E0).  
Enable UPC Composite codes.  
Enable Aztec Code Run.  
Include Australian postal bar data in string.  
Customer fields as numeric data using the  
N Table.  
#define SYMBOLOGY_COMPOSITE_UPC  
#define SYMBOLOGY_AZTEC_RUNE  
#define SYMBOLOGY_AUSTRALIAN_BAR_WIDTH  
#define SYMBOLOGY_AUS_CUST_FIELD_NUM  
0x00002000  
0x00004000  
0x00010000  
0x00020000  
#define SYMBOLOGY_AUS_CUST_FIELD_AlPHA  
0x00040000  
Customer fields as alphanumeric data  
using the C Table.  
Flags for Aztec Mesas are reused, since Aztec Mesas have no addenda, extended UPC-E, or UPC-E1 enable flags.  
#define SYMBOLOGY_ENABLE_MESA_IMS  
#define SYMBOLOGY_ENABLE_MESA_1MS  
#define SYMBOLOGY_ENABLE_MESA_3MS  
#define SYMBOLOGY_ENABLE_MESA_9MS  
#define SYMBOLOGY_ENABLE_MESA_UMS  
#define SYMBOLOGY_ENABLE_MESA_EMS  
#define SYMBOLOGY_ENABLE_MESA_MASK  
0x00020000  
0x00040000  
0x00080000  
0x00100000  
0x00200000  
0x00400000  
0x007E0000  
Mesa IMS enable.  
Mesa 1MS enable.  
Mesa 3MS enable.  
Mesa 9MS enable.  
Mesa UMS enable.  
Mesa EMS enable.  
Enable all Mesa.  
There is only one symbology ID for RSE, RSL, and RSS, so 3 flags are used for enable.  
#define SYMBOLOGY_RSE_ENABLE  
#define SYMBOLOGY_RSL_ENABLE  
#define SYMBOLOGY_RSS_ENABLE  
#define SYMBOLOGY_RSX_ENABLE_MASK  
0x00800000  
0x01000000  
0x02000000  
0x03800000  
Enable RSE Symbology bit.  
Enable RSL Symbology bit.  
Enable RSS Symbology bit.  
RSS enable all.  
Telepen and PosiCode  
#define SYMBOLOGY_TELEPEN_OLD_STYLE  
#define SYMBOLOGY_POSICODE_LIMITED_1  
0x04000000  
0x08000000  
Telepen Old Style mode.  
PosiCode Limited of 1  
4 - 1  
 
     
#define SYMBOLOGY_POSICODE_LIMITED_2  
#define SYMBOLOGY_CODABAR_CONCATENATE  
0x10000000  
0x20000000  
PosiCode Limited of 2  
Codabar concatenate.  
Flags for OCR are reused, since none of the other flags apply to OCR.  
#define SYMBOLOGY_ENABLE_OCR_A  
#define SYMBOLOGY_ENABLE_OCR_B  
#define SYMBOLOGY_ENABLE_OCR_MONEY  
#define SYMBOLOGY_ENABLE_OCR_MICR  
0x00000001  
0x00000002  
0x00000004  
0x00000008  
OCR-A enable.  
OCR-B enable.  
OCR-Money enable.  
OCR-Micr enable.  
Symbology structure sets masks to specify which items of config structure are to be set or read.  
#define SYM_MASK_FLAGS  
0x00000001  
0x00000002  
0x00000004  
0x00000008  
0x00000010  
0x00000020  
0x00000040  
0x00000080  
0x00000100  
0xffffffff  
Flags are valid.  
#define SYM_MASK_MIN_LEN  
#define SYM_MASK_MAX_LEN  
#define SYM_MASK_OCR_MODE  
#define SYM_MASK_DIRECTION  
#define SYM_MASK_TEMPLATE  
#define SYM_MASK_GROUP_H  
#define SYM_MASK_GROUP_G  
#define SYM_MASK_CHECK_CHAR  
#define SYM_MASK_ALL  
Min Length valid.  
Max Length valid.  
OCR mode valid.  
OCR direction valid.  
OCR template valid.  
OCR group H valid.  
OCR group H valid.  
OCR check char valid.  
Generic all mask.  
Structure for symbologies with no specified minimum or maximum length:  
typedef struct _tagSymFlagsOnly  
{
DWORD  
DWORD  
DWORD  
dwStructSize;  
dwMask;  
dwFlags;  
Set to sizeof( SymFlagsOnly_t );  
Mask which can only be 0 or SYM_MASK_FLAGS.  
OR of valid flags for the given symbology.  
} SymFlagsOnly_t, *PSymFlagsOnly_t;  
4 - 2  
 
Min/Max barcode lengths for symbologies that have length settings:  
Code  
Aztec  
China Post  
Codabar  
Codablock F  
Code 11  
Code 16K  
Code 128  
Code 2 of 5  
Code 39  
Code 49  
Min  
1
2
2
1
1
1
0
1
0
1
0
1
1
1
2
2
1
1
1
4
1
4
2
1
4
1
Max  
3750  
80  
60  
2048  
80  
160  
80  
48  
48  
81  
Code 93  
80  
DataMatrix  
EAN•UCC Composite  
IATA Code 2 of 5  
Interleaved 2 of 5  
Korean Post  
Matrix 2 of 5  
MaxiCode  
MicroPDF417  
MSI  
PDF417  
Plessey Code  
PosiCode  
QR Code  
Reduced Space Symbology (RSS)  
Telepen  
1500  
2435  
48  
80  
80  
80  
150  
366  
48  
2750  
48  
80  
3500  
74  
60  
Structure for symbologies with minimum and maximum length:  
typedef struct _tagSymFlagsRange  
{
DWORD  
DWORD  
DWORD  
DWORD  
DWORD  
dwStructSize;  
dwMask;  
dwFlags;  
dwMinLen;  
dwMaxLen;  
Set to sizeof( SymFlagsRange_t );  
Item Masks – SYM_MASK_FLAGS,MIN_LEN,MAX_LEN.  
OR of valid flags for the given symbology.  
Minimum length for valid barcode string for this symbology.  
Maximum length for valid barcode string for this symbology.  
} SymFlagsRange_t, *PSymFlagsRange_t;  
Structure for unusual OCR:  
#define MAX_TEMPLATE_LEN  
#define MAX_GROUP_H_LEN  
#define MAX_GROUP_G_LEN  
#define MAX_CHECK_CHAR_LEN  
typedef struct _tagSymCodeOCR  
{
256  
256  
256  
64  
DWORD  
DWORD  
OCRMode_t  
OCRDirection_t ocrDirection;  
TCHAR  
dwStructSize;  
dwMask;  
ocrMode;  
Set to size of ( SymCodeOcr_t );  
Item masks.  
OCR Enable/Mode structure.  
OCR direction structure. Not supported.  
Template for decoded data (‘d’ - decimal,  
‘a’ - ASCII, ‘l’ - letter, ‘e’ - extended).  
Group G character string.  
tcTemplate[ MAX_TEMPLATE_LEN ];  
TCHAR  
tcGroupG[ MAX_GROUP_H_LEN ];  
4 - 3  
 
TCHAR  
TCHAR  
tcGroupH[ MAX_GROUP_G_LEN ];  
tcCheckChar[ MAX_CHECK_CHAR_LEN ];  
Group H character string.  
Check character string.  
} SymCodeOCR_t, *PSymCodeOCR_t;  
Structure of all Symbology Structures  
There is one structure for each symbology. This info is stored in imager config.  
Define aliases for each symbology structure:  
#define AZTEC_T  
#define MESA_T  
SymFlagsRange_t  
SymFlagsOnly_t  
SymFlagsRange_t  
SymFlagsRange_t  
SymFlagsRange_t  
SymFlagsRange_t  
SymFlagsRange_t  
SymFlagsRange_t  
SymFlagsRange_t  
SymFlagsRange_t  
SymFlagsOnly_t  
SymFlagsOnly_t  
SymFlagsRange_t  
SymFlagsRange_t  
SymFlagsRange_t  
SymCodeOCR_t  
SymFlagsRange_t  
SymFlagsOnly_t  
SymFlagsRange_t  
SymFlagsRange_t  
SymFlagsOnly_t  
SymFlagsOnly_t  
SymFlagsOnly_t  
SymFlagsOnly_t  
SymFlagsOnly_t  
SymFlagsOnly_t  
SymFlagsRange_t  
SymFlagsRange_t  
SymFlagsOnly_t  
SymFlagsOnly_t  
SymFlagsOnly_t  
SymFlagsRange_t  
SymFlagsOnly_t  
SymFlagsRange_t  
SymFlagsOnly_t  
SymFlagsOnly_t  
SymFlagsOnly_t  
SymFlagsRange_t  
SymFlagsRange_t  
SymFlagsRange_t  
SymFlagsRange_t  
SymFlagsRange_t  
SymFlagsRange_t  
SymFlagsOnly_t  
SymFlagsOnly_t  
SymFlagsOnly_t  
Aztec Code has max and min length values.  
Aztec Mesa has flags only.  
#define CODABAR_T  
#define CODE11_T  
#define CODE128_T  
#define CODE39_T  
#define CODE49_T  
#define CODE93_T  
#define COMPOSITE_T  
#define DATAMATRIX_T  
#define EAN8_T  
Codabar has max and min length values.  
Code 11 has max and min length values.  
Code 128 has max and min length values.  
Code 39 has max and min length values.  
Code 49 has max and min length values.  
Code 93 has max and min length values.  
Composite code has max and min length values.  
Data Matrix has max and min length values.  
EAN-8 has flags only.  
#define EAN13_T  
#define INT25_T  
EAN-13 has flags only.  
Interleaved 2 of 5 has max and min length values.  
MaxiCode has max and min length values.  
MicroPDF417 has max and min length values.  
OCR has its own structure.  
PDF417 has max and min length values.  
Postnet has flags only.  
QR Code has max and min length values.  
RSS Codes have max and min length values.  
UPC-A has flags only.  
UPC-E has flags only.  
ISBT Code has flags only.  
British Post has flags only.  
Canadian Post has flags only.  
#define MAXICODE_T  
#define MICROPDF_T  
#define OCR_T  
#define PDF417_T  
#define POSTNET_T  
#define QR_T  
#define RSS_T  
#define UPCA_T  
#define UPCE_T  
#define ISBT_T  
#define BPO_T  
#define CANPOST_T  
#define AUSPOST_T  
#define IATA25_T  
#define CODABLOCK_T  
#define JAPOST_T  
#define PLANET_T  
#define DUTCHPOST_T  
#define MSI_T  
#define TLCODE39_T  
#define MATRIX25_T  
#define KORPOST_T  
#define TRIOPTIC_T  
#define CODE32_T  
#define CODE25_T  
#define PLESSEY_T  
#define CHINAPOST_T  
#define TELEPEN_T  
#define CODE16K_T  
#define POSICODE_T  
#define COUPONCODE_T  
#define CODE4CB_T  
#define UPUIDTAG_T  
Australian Post has flags only.  
IATA 2 of 5 has max and min length values.  
Codablock has max and min length values.  
Japanese Post has flags only.  
Planet Code has flags only.  
KIX Post has flags only.  
MSI Code has max and min length values.  
TLCode 39 has flags only.  
Matrix 2 of 5 Code has max & min length values.  
Korea Post only has enable.  
Trioptic Code has flags only.  
Code 32 has flags only.  
Code 2 of 5 has min and max length values.  
Plessey Code has min and max length values.  
China Post has min and max length values.  
Telepen Code has min and max length values.  
Code 16K has min and max length values.  
PosiCode has min and max length values.  
UPC Coupon code has flags only.  
4 State Customer Barcode.  
ID tag (UPU 4-State) has flags only.  
4 - 4  
 
typedef struct _tagSymCfg  
{
DWORD  
dwStructSize;  
Set to sizeof( SymCfg_t );  
Linear Codes - Flags supported for this code:  
CODABAR_T  
CODE32_T  
codabar;  
code32;  
Enable,Check,CheckSend,StartStop,Concatenate  
Enable  
COUPONCODE_T  
TRIOPTIC_T  
CODE11_T  
couponCode;  
triopticCode;  
code11;  
Enable  
Enable  
Enable,Check,CheckSend  
CODE128_T  
CODE39_T  
code128;  
code39;  
Enable  
Enable,Check,CheckSend,StartStop,Append,FullAscii  
CODE49_T  
code49;  
Enable  
CODE93_T  
code93;  
Enable  
COMPOSITE_T  
EAN8_T  
composite;  
ean8;  
Enable,CompositeUPC  
Enable, Check, Addenda2, Addenda5, AddendaReq, Adden-  
daSep  
EAN13_T  
ean13;  
Enable, Check, Addenda2, Addenda5, AddendaReq, Adden-  
daSep  
IATA25_T  
INT25_T  
ISBT_T  
iata25;  
int2of5;  
isbt;  
Enable  
Enable,Check,CheckSend  
Enable  
MATRIX25_T  
MSI_T  
matrix25;  
msi;  
Enable  
Enable,Check  
UPCA_T  
upcA;  
Enable, check, NumSysTrans, Addenda2, Addenda5,  
AddendaReq, AddendaSep  
Enable, Check, NumSysTrans, Addenda2, Addenda5,  
AddendaReq, AddendaSep, ExpandedE, EnableE1  
UPCE_T  
upcE;  
Postal Codes  
AUSPOST_T  
BPO_T  
CANPOST_T  
DUTCHPOST_T  
JAPOST_T  
KORPOST_T  
PLANET_T  
POSTNET_T  
CHINAPOST_T  
UPUIDTAG_T  
CODE4CB_T  
australiaPost;  
britishPost;  
canadaPost;  
dutchPost;  
japanPost;  
koreaPost  
usPlanet;  
usPostnet;  
chinaPost;  
upuIdTag;  
code4CB;  
Enable,AustralianBar  
Enable  
Enable  
Enable  
Enable  
Enable  
Enable,Check  
Enable,Check  
Enable  
Enable  
Enable  
2D Codes  
AZTEC_T  
MESA_T  
aztec;  
aztecMesa;  
Enable,AztecRun  
EnableIMS, Enable1MS, Enable3MS, Enable9MS, Enable-  
UMS, EnableEMS  
Enable  
Enable  
Enable,SCMOnly  
Enable  
Enable  
CODABLOCK_T  
DATAMATRIX_T  
MAXICODE_T  
MICROPDF_T  
PDF417_T  
codablock;  
datamatrix;  
maxicode;  
microPDF;  
pdf417;  
QR_T  
qr;  
Enable  
RSS_T  
rss;  
Enable  
TLCODE39_T  
CODE25_T  
PLESSEY_T  
TELEPEN_T  
CODE16K_T  
tlCode39;  
code2of5;  
plesseyCode;  
telepen;  
Enable  
Enable  
Enable  
Enable,Old Style Mode  
Enable  
code16k;  
4 - 5  
 
POSICODE_T  
posiCode;  
ocr;  
Enable,Limited 1, Limited 2  
None (See SymCodeOCR_t)  
Special OCR “code”  
OCR_T  
} SymCfg_t, HHP_SYM_CONFIG, *PSymCfg_t, *PHHP_SYM_CONFIG;  
Data structures for decoded barcode message: hhpCaptureBarcode() and hhpGetAsyncResults(). Not stored in imager.  
#define MAX_MESAGE_LENGTH  
4096  
typedef struct _tagHHP_DECODE_MSG  
{
DWORD  
TCHAR  
TCHAR  
TCHAR  
TCHAR  
DWORD  
dwStructSize;  
pchMessage[ MAX_MESAGE_LENGTH ];  
chCodeID;  
chSymLetter;  
chSymModifier;  
Size of decode structure.  
decoded message data  
AIM Id of symbology  
Hand Held Products Id of symbology  
Modifier characters  
length of the decoded message  
nLength;  
} HHP_DECODE_MSG, DecodeMsg_t, *PHHP_DECODE_MSG;  
typedef struct _tagHHP_RAW_DECODE_MSG  
{
WORD  
BYTE  
BYTE  
wStructSize;  
chMessage[ MAX_MESAGE_LENGTH ];  
hCodeID;  
Size of decode structure  
Decoded message data  
AIM ID of symbology  
BYTE  
BYTE  
DWORD  
hSymLetter;  
hSymModifier;  
Length;  
HHP ID of symbology  
Modifier characters  
Length of the decoded message  
} HHP_RAW_DECODE_MSG, RawDecodeMsg_t, *PHHP_RAW_DECODE_MSG;  
Imaging Structures and Defines  
Image Acquisition bit mask:  
The following are also configuration items:  
#define WHITE_VALUE_MASK  
#define WHITE_WINDOW_MASK  
0x00001  
0x00002  
0x00004  
0x00008  
0x00008  
0x00010  
0x00020  
0x00040  
0x00080  
0x00100  
0x00100  
Target value (0-255) for the “white” pixel.  
Acceptable delta from target white.  
Max # of frames to try to get white value.  
How LEDs behave during image capture.  
Duplicate of above mask.  
How aimers behave during image capture.  
If manual mode, gain value to use.  
If manual mode, exposure value to use.  
If manual mode, frame rate to use.  
Barcode, Photo, or manual AGC mode.  
Same as above mask.  
#define MAX_CAPTURE_RETRIES_MASK  
#define ILLUMINATION_DUTY_CYCLE_MASK  
#define LIGHTS_DUTY_CYCLE_MASK  
#define AIMER_DUTY_CYCLE_MASK  
#define FIXED_GAIN_MASK  
#define FIXED_EXPOSURE_MASK  
#define FRAME_RATE_MASK  
#define AUTOEXPOSURE_MODE_MASK  
#define IMAGE_CAPTURE_MODE_MASK  
Following 2 items are not config items and are only used in hhpAcquireImage():  
#define WAIT_FOR_TRIGGER_MASK  
#define PREVIEW_MODE_IMAGE_MASK  
0x00200  
0x00400  
Wait for trigger before capture.  
Capture a preview image (214x160x8 JPEG).  
Grouped masks:  
#define CAPTURE_MASK_CONFIG_ALL  
#define CAPTURE_MASK_FIXED_AGC  
#define CAPTURE_MASK_ALL  
0x001ff  
0x00180  
0x007ff  
Mask for all configuration items.  
Mask for all manual exposure mode items.  
Mask for all structure members.  
4 - 6  
 
 
Image Acquisition structure:  
typedef struct _tagHHP_IMAGE_ACQUISITION  
{
DWORD  
DWORD  
dwStructSize;  
dwMask;  
Size of structure in bytes.  
Mask of active items.  
Config items  
DWORD  
dwWhiteValue;  
Target “white pixel” value.  
DWORD  
DWORD  
HHP_DUTY_CYCLE  
dwWhiteWindow;  
dwMaxNumExposures;  
illuminatCycle;  
Acceptable delta from white value.  
Max frame capture tries for white value.  
Illumination duty cycle (never on, on during imag-  
ing).  
HHP_DUTY_CYCLE  
HHP_GAIN  
DWORD  
aimerCycle;  
fixedGain;  
dwFixedExposure;  
Aimer duty cycle (never on, on during imaging).  
If manual capture mode, gain value for capture.  
If manual capture mode, exposure time for cap-  
ture.  
HHP_FRAME_RATE  
HHP_AUTOEXPOSURE  
frameRate;  
captureMode;  
If manual capture mode, frame rate for capture.  
Autoexposure (AGC) Capture mode: barcode,  
photo or manual.  
Capture time only, not real config items:  
BOOL  
bWaitForTrigger;  
Wait for hardware or software trigger before cap-  
turing image.  
BOOL  
bPreviewImage;  
Capture a preview image. These are subsample  
3, full window, JPEG transfer images.  
} HHP_IMAGE_ACQUISITION, *PHHP_IMAGE_ACQUISITION;  
Image Transfer bit masks:  
#define BITS_PER_PIXEL_MASK  
#define SUBSAMPLE_VALUE  
0x00001  
0x00002  
0x00002  
0x00004  
0x00008  
0x00010  
0x00020  
0x00100  
0x00200  
0x00400  
0x00800  
0x01000  
0x02000  
0x00040  
0x00080  
0x03fff  
Number of bits per pixel transferred (1 or 8).  
Subsample value (1-10).  
Subsample value (1-10).  
Rectangular region within image to send.  
No Compression, Lossless or Lossy.  
Range -> 0 - 255.  
If lossy compression, image quality percent.  
Edge sharpening filter.  
#define SUBSAMPLE_VALUE_MASK  
#define BOUNDING_RECTANGLE_MASK  
#define COMPRESSION_MODE_MASK  
#define HISTOGRAM_STRETCH_MASK  
#define COMPRESSION_FACTOR_MASK  
#define EDGE_ENHANCEMENT_MASK  
#define GAMMA_CORRECTION_MASK  
#define TEXT_ENHANCEMENT_MASK  
#define INFINITY_FILTER_MASK  
#define FLIP_IMAGE_MASK  
#define NOISE_FILTER_MASK  
#define TRANSFER_UPDATE_HWND  
#define TRANSFER_UPDATE_DWORD  
#define TRANSFER_MASK_ALL  
Gamma correction.  
Text sharpening filter.  
Sharpening for image beyond normal focus.  
Rotate the image 180 degrees.  
Smoothing (fly spec) filter.  
Transfer progress message window.  
Pointer to DWORD for percent of transfer complete.  
Mask to select all configuration items in structure.  
Mask to select all structure members.  
#define TRANSFER_MASK_ALL_NO_NOTIFY  
0x03f3f  
Image Transfer structure:  
typedef struct _tagHHP_IMAGE_TRANSFER  
{
DWORD  
DWORD  
dwStructSize;  
dwMask;  
Size of structure in bytes.  
Mask of active items.  
Config items:  
DWORD  
dwBitsPerPixel;  
dwSubSample;  
Bits per pixel for transferred image (1 or 8 bits  
only).  
Subsample value. This means take every dwSub-  
Sample pixels of every dwSubSample row. The  
default is 1.  
DWORD  
4 - 7  
 
RECT  
boundingRect;  
Rectangle describing a window within the image.  
All pixels outside this rectangle are omitted from  
the transferred image.  
BOOL  
Compression_t  
bHistogramStretch;  
compressionMode;  
Scaled frequency of total image pixels.  
How image is compressed on transfer. Compres-  
sion reduces the amount of data to transfer but  
can reduce image quality (Lossy compression)  
and does take a finite length of time.  
DWORD  
DWORD  
dwCompressionFactor;  
dwEdgeEhancement;  
Lossy compression is JPEG lossy. If lossy com-  
pression, this value specifies the image quality  
percentage from 100 (virtually no loss) to 1 (very  
poor). Image size drops with decrease in image  
quality.  
A sharpening filter used to sharpen light/dark  
edges within the image. The valid range of values  
is 0 (no edge enhancement) to 23 (maximum edge  
enhancement).  
DWORD  
DWORD  
BOOL  
dwGammaCorrection;  
dwTextEnhancement;  
bInfinityFilter;  
Applies gamma correction to the image. The valid  
range is 0 (no gamma correction) to 1000 (maxi-  
mum correction).  
This filter is an edge sharpening filter optimized for  
text. The valid range is 0 (no text enhancement) to  
255 (maximum enhancement).  
This is a boolean flag (TRUE or FALSE) that  
applies a filter to the image that sharpens objects  
beyond the normal focal distance of the imager.  
This is a boolean flag (TRUE or FALSE) that flips  
the image 180°  
BOOL  
BOOL  
bFlipImage;  
bNoiseFilter;  
This is a boolean flag (TRUE or FALSE) that  
enables or disables the imager smoothing filter.  
Transfer time only, not stored in imager:  
HWND  
hTransferNotifyHwnd;  
The user-defined window message.  
WM_HHP_PROGRESS_HWND_MSG (wParam  
is bytes so far, lParam is bytes to send) will be  
sent if this member mask specified and its value is  
a valid windows handle.  
PDWORD  
pdwTransferPercent;  
If non-NULL and specified in MASK, the percent  
complete of the transfer is placed here. It is up to  
the caller to check the value in a thread or timer  
callback.  
} HHP_IMAGE_TRANSFER, *PHHP_IMAGE_TRANSFER;  
Data structure for captured image: hhpAcquireImage(), hhpGetLastImage() and hhpGetAsyncResult(). Not stored in im-  
ager.  
typedef struct _tagHHP_IMAGE  
{
DWORD  
PBYTE  
LONG  
FileFormat_t  
DWORD  
LONG  
dwStructSize;  
puchBuffer;  
nBufferSize;  
fileFormat;  
dwJpegQFactor;  
nBytesReturned;  
imgSize;  
Size of structure in bytes.  
Buffer for image.  
Size of buffer in bytes.  
Format for returned data.  
JPEG Quality Factor.  
Number of bytes returned.  
Size of image returned.  
SIZE  
LONG  
LONG  
LONG  
nCapturedFrames;  
nGain;  
nExposureTime;  
Number of frames captured prior to this image.  
Gain value used to capture this image.  
Exposure time used to capture this image.  
4 - 8  
 
LONG  
LONG  
nUnderexposedPixels;  
nOverexposedPixels;  
Number of underexposed pixels in image.  
Number of overexposed pixels in image.  
} HHP_IMAGE, *PHHP_IMAGE;  
Other Imager Configuration Structures and Defines  
Beeper member valid bitmasks:  
#define BPMASK_ON_DECODE  
#define BPMASK_SHORT_BEEP  
#define BPMASK_MENU_CMD_BEEP  
#define BPMASK_BEEP_VOLUME  
#define BPMASK_ALL  
0x00001  
0x00002  
0x00004  
0x00008  
0x0000f  
Beep on successful decode.  
Beep on imager reset.  
Beep on receive menu command.  
Set the beeper volume.  
Mask for all members valid.  
Beeper structure:  
typedef struct _tagHHP_BEEPER  
{
DWORD  
DWORD  
BOOL  
BOOL  
BOOL  
dwStructSize;  
dwMask;  
bBeepOnDecode;  
bShortBeep;  
bMenuCmdBeep;  
beepVolume;  
Size of structure in bytes.  
Mask of active items.  
Sound beeper on successful decode.  
Sound beeper whenever imager resets.  
Sound beeper whenever a menu command is received.  
Set the beeper volume.  
BEEPER_VOLUME  
} HHP_BEEPER, *PHHP_BEEPER;  
Trigger timeout range:  
#define MIN_TRIGGER_TIMEOUT_VAL  
#define MAX_TRIGGER_TIMEOUT_VAL  
0
Infinite  
5 Minutes  
300000  
Trigger structure masks:  
#define TRGMASK_TRIG_MODE  
#define TRGMASK_TIMEOUT  
#define TRGMASK_ALL  
0x00001  
0x00002  
0x00003  
Enable/disable manual trigger mode.  
Sanity timeout on trigger event.  
All members valid mask.  
Triggering control:  
typedef struct _tagHHP_TRIGGER  
{
DWORD  
DWORD  
HHP_TRIG_MODES  
DWORD  
dwStructSize;  
dwMask;  
TriggerMode;  
dwTriggerTimeout;  
Size of structure in bytes.  
Mask of active items.  
Trigger mode.  
0->9999 (milliseconds).  
} HHP_TRIGGER, *PHHP_TRIGGER;  
Engine information structure defines:  
#define MAX_SHORT_VERSION_LEN  
#define MAX_SERIAL_NUMBER_LEN  
#define MAX_CHECKSUM_LEN  
#define ENGINE_ID_DIGITS  
32  
16  
8
4
Engine information structure  
typedef struct _tagHHP_ENGINE_INFO  
{
DWORD  
TCHAR  
TCHAR  
TCHAR  
LONG  
dwStructSize;  
tcEngId[ ENGINE_ID_DIGITS ];  
tcHHPSerialNumber[ MAX_SERIAL_NUMBER_LEN ];  
tcCustomSerialNumber[ MAX_SERIAL_NUMBER_LEN ];  
nAimerX;  
Structure size  
4 digit ASCII Hex.  
ASCII Decimal  
ASCII Decimal  
Aimer X  
4 - 9  
 
 
LONG  
LONG  
TCHAR  
TCHAR  
LONG  
LONG  
LONG  
LONG  
LONG  
LONG  
LONG  
LONG  
LONG  
LONG  
TCHAR  
nAimerY;  
nLaserPower;  
tcFirmwareChecksum[ MAX_CHECKSUM_LEN ];  
tcFirmwareRev[ MAX_SHORT_VERSION_LEN ];  
nLedCtrlMode;  
nLedClr;  
nPwmFreq;  
nRedLedCurrent;  
nRedLedMaxCurrent;  
nGreenLedCurrent;  
nGreenLedMaxCurrent;  
nAimerCurrent;  
nAimerMaxCurrent;  
nPixelClockFreq;  
tcRegisterChecksum[ MAX_CHECKSUM_LEN ];  
Aimer Y  
Laser power in mW  
Firmware Checksum (ASCII Hex)  
Firmware revision number.Number  
How LEDs are controled.  
LED color (red or green LEDs)  
PWM base frequence.  
Red LED current (mA).  
Red LED max current (mA).  
Green LED current (mA).  
Green LED max current (mA).  
Aimer current (mA).  
Aimer max current (mA).  
Pixel clock frequency (MHz)  
Register chcksum (ASCII hex)  
} HHP_ENGINE_INFO, *PHHP_ENGINE_INFO;  
Sequence structure defines:  
#define MAX_SEQ_BARCODES  
#define MAX_NUM_START_CHARS  
#define SEQ_ALL_LENGTH  
12  
32  
9999  
Sequence structure masks:  
#define SEQMASK_MODE  
#define SEQMASK_BARCODES  
#define SEQMASK_ALL  
0x00001  
0x00002  
0x00003  
sequenceMode  
dwNumBarCodes & seqBarCodes[]  
Everything  
Individual sequence barcode structure:  
typedef struct _tagSeqItem  
{
LONG  
LONG  
TCHAR  
nSymId;  
nLength;  
Symbology identifier SYM_xxxx  
Match length or 9999 to match any length.  
Matching string (from start)  
tcStartChars[ MAX_NUM_START_CHARS+1 ];  
} SeqBarCode_t, *PSeqBarCode_t;  
Sequence structure:  
typedef struct _tagHHP_SEQUENCE_MODE  
{
DWORD  
DWORD  
dwStructSize;  
dwMask;  
Size of structure in bytes  
Mask of active items  
HHP_SEQ_MODES sequenceMode;  
Disabled/Enabled/Enabled & Required  
This MUST be sent if sending seqBarCodes  
Barcodes to sequence in order they are to be  
sent  
DWORD  
dwNumBarCodes;  
SeqBarCode_t  
seqBarCodes[ MAX_SEQ_BARCODES ];  
TCHAR  
tchSeqCmdBlk[ SIZE_OF_SEQUENCE_BLOCK ];  
} HHP_SEQUENCE_MODE, *PHHP_SEQUENCE_MODE;  
Decode method stucture masks:  
#define DCMASK_MAX_MESSAGE_LENGTH 0x00001  
Maximum length of decoded string. This item is Read Only.  
Look for and report all barcodes in captured frame.  
Use aimers when capturing barcodes.  
Relative contrast between barcode and background (0-9).  
Normal, linear codes only. Fastest (may miss codes at  
edges of image).  
#define DCMASK_DECODE_MULTIPLE  
#define DCMASK_USE_AIMERS  
0x00002  
0x00004  
0x00008  
0x00010  
#define DCMASK_PRINT_WEIGHT  
#define DCMASK_DECODE_METHOD  
#define DCMASK_CENTER_ENABLE  
#define DCMASK_CENTER_WINDOW  
0x00020  
0x00040  
Only accept barcodes whose boundaries intersect center  
window.  
Rectangle about center of image for previous mask.  
4 - 10  
 
#define DCMASK_ILLUMINAT_LED_COLOR  
#define DCMASK_ALL  
0x00080  
0x000ff  
Illumination LED color to use.  
All structure members are active.  
Decoder functionality settings:  
typedef struct _tagHHP_DECODER_CONFIG  
{
DWORD  
DWORD  
DWORD  
dwStructSize;  
dwMask;  
dwMaxMsgSize;  
Size of structure in bytes.  
Mask of active items.  
Maximum length for any returned barcode string. This is a  
read only value.  
BOOL  
bDecodeMultiple;  
Decode and send all symbols decoded with first frame  
where at least 1 symbol is found.  
BOOL  
DWORD  
bUseAimers;  
dwPrintWeight;  
Turn on aimers during barcode capture.  
How dark the barcode elements are relative to the back-  
ground (1-7).  
DECODE_METHOD decodeMethod;  
Normal decoder, linear codes only, fast normal decoder,  
which omits checking at the image margins as well as  
some bad barcode correction.  
BOOL  
RECT  
bCenterDecodeEnable;  
centerWindow;  
Does symbol have to intersect center decode window to be  
valid.  
Bounding coords of center window that decoded symbol  
must intersect  
ILLUM_LED_COLOR illumLedColor;  
Illumination LED color to use.  
} HHP_DECODER_CONFIG, *PHHP_DECODER_CONFIG;  
Aimer Modes:  
typedef enum  
{
AIMER_MODE_ALWAYS_OFF=0,  
AIMER_MODE_ILLUM_AND_AIM,  
AIMER_MODE_ALWAYS_ON  
No aimer LEDs.  
Aimer LEDs and illumination LEDs on simultaneously.  
Aimer LEDs always on.  
} HHP_AIMER_MODES;  
Power setting item masks:  
#define PWRMASK_TRIGGER_MODE  
#define PWRMASK_SERIAL_TRIGGER_TIMEOUT  
#define PWRMASK_LOW_POWER_TIMEOUT  
#define PWRMASK_STOP_MODE_TIMEOUT  
#define PWRMASK_ILLUM_LED_INTENSITY  
#define PWRMASK_SYS_SPEED  
#define PWRMASK_AIMER_MODE  
#define PWRMASK_AIMER_DURATION  
#define PWRMASK_AIMER_DELAY  
#define PWRMASK_IMAGER_IDLE_TIMEOUT  
#define PWRMASK_ RS232_LOW_POWER_TIMEOUT  
#define PWRMASK_ SLEEP_MODE_TIMEOUT  
#define PWRMASK_POWER_OFF_HANDLE  
#define PWRMASK_POWER_OFF_HWND  
#define PWRMASK_ALL  
0x00001  
0x00002  
0x00004  
0x00004  
0x00008  
0x00010  
0x00020  
0x00040  
0x00080  
0x00100  
0x00200  
0x00200  
0x00400  
0x00800  
0x00FFF  
Matrix products power management structure:  
typedef struct _tagHHP_POWER_SETTINGS  
{
DWORD  
DWORD  
dwStructSize;  
dwMask;  
HHP_TRIG_MODES  
TriggerMode;  
4 - 11  
 
DWORD  
DWORD  
DWORD  
HHP_SYS_SPEED  
HHP_AIMER_MODES  
dwTriggerTimeout;  
dwLowPowerTimeout;  
dwLEDIntensityPercent;  
systemClockSpeed;  
AimerMode;  
0->300000 (milliseconds).  
0 -> 300.  
0 -> 100%.  
Clock speed for reset of system (except RS-232).  
Aimer always on, alternating between illumination  
LEDs, or disabled.  
DWORD  
DWORD  
DWORD  
DWORD  
dwAimerDuration;  
dwAimerDelay;  
dwImagerIdleTimeout;  
dw RS232LowPwrTimeout;  
0 -> 240000 (milliseconds).  
0 -> 240000 (milliseconds).  
0 -> 999999 (milliseconds).  
0 -> 300 (seconds). RS-232 inactivity timeout  
used to enter sleep mode.  
These are used to notify on suspend (WinCE Suspend) – Not stored in imager:  
HANDLE  
HWND  
hPowerOffHandle;  
hPowerOffHwnd;  
Handle for system suspend wakeup notification.  
Window HWND for system suspend wakeup noti-  
fication message.  
} HHP_POWER_SETTINGS, *PHHP_POWER_SETTINGS;  
Version setting item masks – Items are read only:  
#define VERMASK_SDK_API  
0x00001  
SDK version number.  
#define VERMASK_IMAGER_FIRMWARE  
#define VERMASK_IMAGER_PART_NUM  
#define VERMASK_IMAGER_BOOT_CODE  
#define VERMASK_IMAGER_DEVICE_TYPE  
#define VERMASK_ALL  
0x00002  
0x00004  
0x00008  
0x00010  
0x0001f  
Imager firmware version.  
Imager part number.  
Imager boot code version.  
Device type of which imager is part.  
All version info mask.  
Revision information:  
#define MAX_VERSION_STRING_LEN64  
#define MAX_DEVICE_TYPE_STRING_LEN16  
typedef struct _tagHHP_VERSION_INFO  
{
DWORD  
DWORD  
TCHAR  
TCHAR  
TCHAR  
TCHAR  
TCHAR  
dwStructSize;  
dwMask;  
tcAPIRev[ MAX_VERSION_STRING_LEN ];  
tcFirmwareRev[ MAX_VERSION_STRING_LEN ];  
tcPartNumber[ MAX_VERSION_STRING_LEN ]  
tcBootCodeRev[ MAX_VERSION_STRING_LEN ]  
Size of structure in bytes.  
Mask of active items.  
SDK API version string.  
Imager firmware version.  
;Imager firmware part number.  
;Imager boot code version.  
tcDeviceType[ MAX_DEVICE_TYPE_STRING_LEN ] ;Imager device identifier.  
} HHP_VERSION_INFO, *PHHP_VERSION_INFO;  
Structure that includes all structures used to configure imager. See ConfigItems_t when specifying structure to call hh-  
pReadConfigItem() and hhpWriteConfigItem().  
typedef struct _tagHHP_CONFIG  
{
DWORD  
HHP_BEEPER  
HHP_TRIGGER  
HHP_DECODER_CONFIG  
HHP_POWER_SETTINGS  
HHP_VERSION_INFO  
HHP_SYM_CONFIG  
dwStructSize;  
beeperCfg;  
triggerCfg;  
decoderCfg;  
powerCfg;  
Size of HHP_CONFIG structure in bytes.  
Beeper configuration structure.  
Trigger configuration structure.  
Decoder function configuration structure.  
Power modes configuration structure.  
Version information structure.  
Decoder symbology enables and configuration  
structure.  
versionInfo;  
symbolCfg;  
HHP_IMAGE_ACQUISITION  
HHP_IMAGE_TRANSFER  
imgAcqu;  
imgTrans;  
Image acquisition configuration structure.  
Image transfer configuration structure.  
} HHP_CONFIG, *PHHP_CONFIG;  
4 - 12  
 
Intelligent Image Capture:  
typedef struct  
{
DWORD  
DWORD  
LONG  
dwStructSize;  
dwAspectRatio;  
nOffsetX;  
Size of HHP_INTEL_IMG structure in bytes.  
Ratio of barcode height to minimum barcode element width.  
Offset from barcode center to the image window center in X  
direction, relative to barcode center in minimum barcode units.  
Offset from barcode center to the image window center in Y  
direction, relative to barcode center in minimum barcode units.  
Width of image in minimum barcode units.  
LONG  
nOffsetY;  
DWORD  
DWORD  
SIZE  
dwWidth;  
dwHeight;  
maxImgSize;  
Height of image in minimum barcode units.  
Maximum width and height for resulting intelligent image in pix-  
els. Image size is guaranteed not to exceed either dimension.  
Have reader binarize data before transfer.  
BOOL  
bSendBinary;  
} IntellImgDesc_t, HHP_INTEL_IMG, *PHHP_INTEL_IMG;  
Serial Port Config:  
typedef struct _tagHHP_SERIAL_PORT_CONFIG  
{
DWORD  
HHP_BAUD_RATE baudRate;  
dwStructSize;  
Size of HHP_SERIAL_PORT_CONFIG structure in bytes.  
Baud rate for connection. NOTE: Reader always powers up at  
115200. The 5X00 Series changes the baud rate to this value  
once it connects at 115200. Also, the SDK will not allow you to  
connect at bauds above 115200 for WinCE unless the port  
driver is sio950.dll (high speed driver for sio950 chipset).  
Number of data bits.  
Parity.  
Number of stop bits.  
Not supported in the IT4500.  
HHP_DATA_BITS  
HHP_PARITY  
HHP_STOP_BITS  
BOOL  
dataBits;  
parity;  
stopBits;  
bAutoBaud;  
} HHP_SERIAL_PORT_CONFIG, *PHHP_SERIAL_PORT_CONFIG;  
Imager capabilities structure – Items are read only:  
typedef struct _tagHHP_IMAGER_CAPS  
{
DWORD  
SIZE  
dwStructSize;  
fullImgSize;  
Size of HHP_IMAGE_CAPS structure in bytes.  
Size of image captured by imager before cropping and subsam-  
pling.  
DWORD  
DECODER_TYPE  
IMAGER_TYPE  
dwImgrBpp;  
decoderType;  
imagerType;  
Bits per pixel of image captured by imager.  
Level of symbology support in the imager’s decoder.  
Decoded Out Serial, Decoded Out USB, Non-Decoded Out.  
} HHP_IMAGER_CAPS, *PHHP_IMAGER_CAPS;  
Imager Type (decoded out or non decoded out)  
typedef enum  
{
HHP_UNKNOWN_IMAGER  
HHP_DECODED_IMAGER_4080  
HHP_DECODED_IMAGER_4080_USB  
HHP_NON_DECODED_IMAGER_4000  
HHP_DECODED_IMAGER_5080VGA  
HHP_DECODED_IMAGER_5080VGA_USB  
Unable to determine engine type.  
Serial (RS-232) 4080 imager with internal decoder.  
USB serial 4080 imager with internal decoder  
Incorporated 4000 imager.  
USB serial 5080 VGA imager with internal decoder.  
Serial (RS-232) 5080 VGA imager with internal decoder and  
PSOC.  
HHP_NON_DECODED_IMAGER_5000VGA  
Incorporated 5000 VGA imager.  
4 - 13  
 
HHP_DECODED_IMAGER_5080VGA_PSOC  
HHP_DECODED_IMAGER_5080VGA_PSOC_USB  
HHP_NON_DECODED_IMAGER_5000VGA_PSOC  
HHP_DECODED_IMAGER_5080  
HHP_DECODED_IMAGER_5080_USB  
HHP_NON_DECODED_IMAGER_5000  
Serial (RS-232) 5080 imager with internal decoder.  
USB serial 5080 imager with internal decoder.  
Incorporated 5000 VGA imager with PSOC.  
Serial (RS-232) 5080 imager with internal decoder.  
USB serial 5080 imager with internal decoder.  
Incorporated 5000 imager.  
HHP_DECODED_IMAGER_5080_PSOC  
HHP_DECODED_IMAGER_5080_PSOC_USB  
HHP_NON_DECODED_IMAGER_5000_PSOC  
Serial (RS-232) 5080 imager with internal decoder and PSOC.  
USB serial 5080 imager with internal decoder and PSOC.  
Incorporated 5000 imager with PSOC.  
} ImagerType_t, IMAGER_TYPE;  
4 - 14  
 
5
OEM-Configurable SDK Functionality  
The 5X80 accommodates a variety of PDA/PDT, static mount, and "gun" type installations, so the 5X00 Series has included the  
flexibility to modify some SDK behaviors. You can provide a DLL that affords the SDK access to the hardware trigger, hardware  
sleep lines, and access to the open driver handle and registry entries, which can be used to specify high speed baud rates  
(greater than 115200). You can also specify whether to force a Y-modem communications protocol for image transfers.  
OEM Supplied DLL  
The OEM DLL interface is described in SDK header file OemDll.h. The DLL can export some or all of the available functionality.  
If the DLL is named ImgrHwrLines.dll and is located in the default library search path, it will be loaded automatically by the SDK.  
Otherwise, it can by loaded manually by calling the SDK function hhpSetHardwareLineDllFileName. The DLL exports are  
described in the following list:  
ConfigureCommPort  
ConfigureCommPort performs any special driver configuration that needs to be done to support the specified communication port  
settings. Configuring the communications driver requires the current driver handle, so you must also support  
SetCommDriverHandle(). The function is called by the SDK whenever you set/change the communication port settings. It is  
called after the SDK is finished processing pConfig, so any changes you make will not be overridden.  
bool ConfigureCommPort(  
PCommPortConfig pConfig  
)
Parameter  
Description  
pConfig  
The communication settings requested. The CommPortConfig structure contains:  
Baud Rate, Data Bits, Parity, Stop Bits and RTS control.  
ImagerPoweredDown  
ImagerPoweredDown checks the imager powered down hardware line for the imager power state. The powered down hardware  
line is active high. ImagerPoweredDown returns true if the hardware line is high, false if it is low.  
bool ImagerPoweredDown(  
void  
)
ModifyCommPortDCB  
ModifyCommPortDCB receives the RS-232 configuration (DCB) structure just before it's sent to the serial driver. You can then  
modify the RTS/CTS and DTR/DTS settings if they are used for the imager’s power or trigger.  
void ModifyCommPortDCB(  
LPDCB lpDCB  
)
Parameter  
Description  
LPDCB lpDCB  
Structure used by windows to configure a serial port.  
SetCommDriverHandle  
SetCommDriverHandle receives the handle to the open communications port. The handle can then be used to access private  
driver ioctl calls.  
void SetCommDriverHandle(  
HANDLE hDriver  
)
5 - 1  
 
             
Parameter  
Description  
hDriver  
The current handle to the open driver used to communicate with the imager.  
SetHardwareTrigger  
SetHardwareTrigger triggers the imager hardware trigger line, depending on bEnable. The hardware trigger line is active low.  
void SetHardwareTrigger(  
bool bEnable  
)
Parameter  
Description  
bEnable  
If true, set trigger line low to trigger imager. If false, set trigger line high to turn off trigger.  
WakeUpImager  
WakeUpImager toggles the imager hardware wakeup line from low to high, delay, (see Integration Manual for timing), then from  
high back to low.  
void ImagerPoweredDown(  
void  
)
Registry Entries  
There are two registry entries used to modify the SDK default behavior. The values are both located in the registry key  
HKEY_LOCAL_MACHINE\SOFTWARE\Hand Held Products\MatrixDemos.  
Baud Rate  
The SDK will not normally allow high speed serial connections (connections greater than 115200 baud) unless it recognizes the  
driver name in the registry. The first registry value, BaudRate, specifies the first baud rate at which the demos will attempt to  
connect. It also overrides the normal block that sets high speed baud rates. This lets you specify a baud rate greater than  
115200.  
ForceHmodem  
The SDK does not normally use its Y-Modem variant, Hmodem, if a high speed serial connection is specified. However, if your  
driver does not support true hardware RTS flow control, there is a substantial risk of communication buffer overruns. These  
overruns can cause data loss, especially during image transfer. The registry value ForceHmodem lets you force the use of the  
communications protocol, preventing data buffer overflow.  
5 - 2  
 
         
6
Program Samples  
Configuration Management  
Sample 1 - Set code 39 defaults turning on Full ASCII  
CODE39_Tcode39;  
TCHAR tcErrMsg[ 128 ];  
Result_tnResult = RESULT_ERR_INTIALIZE;  
// Structure for Code 39.  
// Error message buffer.  
// Return code.  
code39.dwStructSize = sizeof( CODE39_T );  
code39. dwMask = SYM_MASK_FLAGS;  
// setup size parameter, used in  
struct verification.  
// you want all info.  
if( (nResult = hhpReadSymbologyConfig( SETUP_TYPE_DEFAULT,SYM_CODE39,&code39 )) ==  
RESULT_SUCCESS )  
{
code39.dwFlags |= SYMBOLOGY_ENABLE_FULLASCII;// OR flags with Enable Full ASCII  
flag to turn on code 39.  
nResult = hhpWriteSymbologyConfig( SYM_CODE39,&code39 );  
}
hhpGetErrorMessage( nResult,tcErrMsg );  
_tprintf( _T(“Setup Code39 Returned: %s\n”),tcErrMsg;  
Sample 2 - Set the capture mode to photo image  
Note:  
This changes the imager configuration for the items selected. The imager uses these values if they are not overridden  
at the time of image capture/transfer.  
HHP_IMAGE_TRANSFER imgTrans;  
// Image transfer structure.  
// Error message buffer.  
TCHAR  
tcErrMsg[ 128 ];  
Result_t  
nResult = RESULT_ERR_INTIALIZE; // Return code.  
// Set the structure size and structure mask  
imgTrans.dwStructSize = sizeof( HHP_IMAGE_TRANSFER);  
imgTrans.dwMask = IMAGE_CAPTURE_MODE_MASK;  
// Turn on photo image mode.  
ImgTrans.captureMode = HHP_AUTOEXPOSURE_PHOTO;  
// Call the write configuration function specifying the HHP_ACQUISITION_STRUCTURE.  
nResult = hhpWriteConfigItem( IMAGE_ACQUISITION,&imgTrans );  
// Display error code (NOTE: RESULT_SUCCESS error code returns string SUCCESS.  
hhpGetErrorMessage( nResult,tcErrMsg );  
_tprintf( _T(“Change Imager Config To Photo Capture Mode: %s\n”),tcErrMsg;  
6 - 1  
 
     
Barcode Capture  
Sample 3 - A synchronous barcode capture  
HHP_DECODE_MSG  
TCHAR  
decodeInfo;  
tcErrMsg[ 128 ];  
// Error message buffer.  
Result_t  
nResult = RESULT_ERR_INTIALIZE; // Return code.  
// Make sure to set the structure size!  
decodeInfo.dwStructSize = sizeof( HHP_DECODE_MSG );  
// Call the SDK function to capture a barcode setting the bWait parameter to TRUE, 6  
second timeout.  
if ( (nResult = hhpCaptureBarcode( &decodeInfo,6000,TRUE ) == RESULT_SUCCESS )  
{
_tprintf( _T(“Barcode: %s\n”),decodeInfo.pchMessage );  
_tprintf( _T(“Barcode Length: %d\n”),decodeInfo.nLength );  
_tprintf( _T(“AIM Id : %cn”),decodeInfo.chCodeID );  
_tprintf( _T(“HHP Id: %cn”),decodeInfo.chSymLetter );  
_tprintf( _T(“Symbol Modifier: %c\n”),decodeInfo.chSymModifier );  
}
else  
{
hhpGetErrorMessage( nResult,tcErrMsg );  
_tprintf( _T(“Capture Barcode Returned: %s\n”),tcErrMsg );  
}
Sample 4 - An asynchronous barcode capture using an event  
HHP_DECODE_MSG  
decodeInfo;  
// Returned decoded data message  
structure.  
hhpEventType_t  
TCHAR  
Result_t  
eventType = HHP_BARCODE_EVENT; // Type of event that occurred.  
tcErrMsg[ 128 ]; // Error message buffer.  
nResult = RESULT_ERR_INTIALIZE; // Return code.  
// Verify the event is valid (or you won’t get any notification)  
If( hEvent != NULL )  
{
// Register the event with the SDK.  
if ( (nResult = hhpSetAsyncMethods( hEvent,NULL,NULL ) == RESULT_SUCCESS )  
{
// Call the SDK function to capture a barcode setting the bWait parameter to FALSE,  
6 second timeout.  
if ( (nResult = hhpCaptureBarcode( NULL,6000,FALSE ) == RESULT_SUCCESS )  
{
// Make sure to set the structure size!  
decodeInfo.dwStructSize = sizeof( HHP_DECODE_MSG );  
// Wait on event being set by SDK then call SDK to get results.  
if( WaitForSingleObject( hEvent,7000 ) == WAIT_OBJECT_0 )  
nResult = hhpGetAsyncResult( &event,&decodeInfo );  
}
}
}
if( nResult == RESULT_SUCCESS )  
{
_tprintf( _T(“Barcode: %s\n”),decodeInfo.pchMessage );  
_tprintf( _T(“Barcode Length: %d\n”),decodeInfo.nLength );  
_tprintf( _T(“AIM Id : %cn”),decodeInfo.chCodeID );  
_tprintf( _T(“HHP Id: %cn”),decodeInfo.chSymLetter );  
_tprintf( _T(“Symbol Modifier: %c\n”),decodeInfo.chSymModifier );  
6 - 2  
 
 
}
else  
{
hhpGetErrorMessage( nResult,tcErrMsg );  
_tprintf( _T(“Capture Barcode Returned: %s\n”),tcErrMsg );  
}
Sample 5 - An asynchronous barcode capture message notification  
Note:  
You must hook the message WM_HHP_EVENT_HWND_MSG in your message loop to receive a barcode event  
notification. In this example, the message is hooked to call OnEventMsg.  
TCHAR  
Result_t  
HWND  
tcErrMsg[ 128 ];  
nResult = RESULT_ERR_INTIALIZE;  
hWnd = GetSafeHwnd();  
// Error message buffer.  
// Return code.  
// The window to which message is to be  
sent. (note: this example is MFC c++)  
// Register the message window with the SDK.  
if ( (nResult = hhpSetAsyncMethods( NULL,hWnd,NULL ) == RESULT_SUCCESS )  
{
// Call the SDK function to capture a barcode, 6 second timeout. Unless call fails, you  
will get a message when command completes.  
if ( (nResult = hhpCaptureBarcode( NULL,6000,FALSE ) != RESULT_SUCCESS )  
{
hhpGetErrorMessage( nResult,tcErrMsg );  
_tprintf( _T(“Capture Barcode Returned: %s\n”),tcErrMsg );  
}
}
// Message Handler function  
LRESULT OnEventMsg( WPARAM wParam,LPARAM lParam )  
{
hhpEventTye_t  
DWORD  
eventType = (hhpEventType_t)wParam; // Event type  
dwBytes = lParam;  
// Number of bytes in barcode.  
You don’t actually use it  
here.  
HHP_DECODE_MSG  
TCHAR  
Result_t  
decodeInfo;  
tcErrMsg[ 128 ];  
nResult = RESULT_ERR_INTIALIZE;  
// Decode message structure.  
// Error message buffer.  
// Return code.  
// Verify the event type is barcode  
if( eventType == HHP_BARCODE_EVENT )  
{
// Make sure to set the structure size!  
decodeInfo.dwStructSize = sizeof( HHP_DECODE_MSG );  
if( (nResult = hhpGetAsyncResult( &eventType,&decodeInfo )) == RESULT_SUCCESS )  
{
_tprintf( _T(“Barcode: %s\n”),decodeInfo.pchMessage );  
_tprintf( _T(“Barcode Length: %d\n”),decodeInfo.nLength );  
_tprintf( _T(“AIM Id : %cn”),decodeInfo.chCodeID );  
_tprintf( _T(“HHP Id: %cn”),decodeInfo.chSymLetter );  
_tprintf( _T(“Symbol Modifier: %c\n”),decodeInfo.chSymModifier );  
}
else  
{
hhpGetErrorMessage( nResult,tcErrMsg );  
_tprintf( _T(“Capture Barcode Returned: %s\n”),tcErrMsg );  
}
}
}
6 - 3  
 
Sample 6 - An asynchronous barcode capture using Callback function  
// Message Handler function  
BOOL CALLBACK EventCallback(HHP_EVENT_TYPE eventType,DWORD dwBytes )  
{
HHP_DECODE_MSG decodeInfo;  
// Decode message structure.  
// Error message buffer.  
nResult = RESULT_ERR_INTIALIZE; // Return code.  
TCHAR  
Result_t  
tcErrMsg[ 128 ];  
// Verify the event type is barcode  
if( eventType == HHP_BARCODE_EVENT )  
{
// Make sure to set the structure size!  
decodeInfo.dwStructSize = sizeof( HHP_DECODE_MSG );  
// Retrieve the barcode event data.  
If( (nResult = hhpGetAsyncResult( &eventType,&decodeInfo )) == RESULT_SUCCESS )  
{
_tprintf( _T(“Barcode: %s\n”),decodeInfo.pchMessage );  
_tprintf( _T(“Barcode Length: %d\n”),decodeInfo.nLength );  
_tprintf( _T(“AIM Id : %cn”),decodeInfo.chCodeID );  
_tprintf( _T(“HHP Id: %cn”),decodeInfo.chSymLetter );  
_tprintf( _T(“Symbol Modifier: %c\n”),decodeInfo.chSymModifier );  
}
else  
{
hhpGetErrorMessage( nResult,tcErrMsg );  
_tprintf( _T(“Capture Barcode Returned: %s\n”),tcErrMsg );  
}
}
}
// Code snippet to capture barcode  
TCHARtcErrMsg[ 128 ];  
Result_tnResult = RESULT_ERR_INTIALIZE;  
// Error message buffer.  
// Return code.  
// Register the callback function with the SDK.  
if ( (nResult = hhpSetAsyncMethods( NULL,NULL,&EventCallback ) == RESULT_SUCCESS )  
{
// Call the SDK function to capture a barcode, 6 second timeout. Unless call fails, we  
will get a message when command completes.  
if ( (nResult = hhpCaptureBarcode( NULL,6000,FALSE ) != RESULT_SUCCESS )  
{
hhpGetErrorMessage( nResult,tcErrMsg );  
_tprintf( _T("Capture Barcode Returned: %s\n"),tcErrMsg );  
}
}
6 - 4  
 
 
Image Capture  
Sample 7 - A synchronous image capture  
// Capture image specifies:  
for capture - Photo Mode and Lights On During Frames.  
for Transfer - Subsample value of 1 and Lossless transfer.  
Note: You don’t really have to pass anything except the HHP_IMAGE structure as long as you  
want the imager config settings for capture and transfer. Also, no progress feedback will  
be received.  
HHP_IMAGE  
image;  
// Structure to hold captured image  
HHP_IMAGE_TRANSFER imgTrans;  
// Image transfer options (override  
imager config)  
// Image capture options (override  
imager config)  
TCHAR  
tcErrMsg[ 128 ];  
// Error message buffer  
Result_t  
nResult = RESULT_ERR_INTIALIZE; // Return code  
// Make sure to set imgAcqu structure size!  
imgAcqu.dwStructSize = sizeof( HHP_IMAGE_ACQUISITION );  
// Set the mask to activate captureMode and illuminatCycle (lights).  
ImgAcqu.dwMask = (ILLUMINATION_DUTY_CYCLE_MASK | IMAGE_CAPTURE_MODE_MASK);  
// Set values  
ImgAcqu.captureMode = HHP_AUTOEXPOSURE_PHOTO;  
ImgAcqu. IlluminatCycle = HHP_DUTY_CYCLE_ON;  
// Make sure to set imgTrans structure size!  
imgTrans.dwStructSize = sizeof( HHP_IMAGE_TRANSFER );  
// Set the subsample and compression masks.  
ImgTrans.dwMask = (SUBSAMPLE_VALUE_MASK | COMPRESSION_MODE_MASK);  
// Set values  
imgTrans.dwSubSample = 1;  
imgTrans. compressionMode = COMPRESSION_LOSSLESS;  
// Set the HHP_IMAGE structure size and allocate a buffer for the data, set the buffer  
size and how you want to receive the data in the buffer.  
Image.dwStructSize = sizeof( HHP_IMAGE );  
Image.puchBuffer = new BYTE[ 324000 ];  
// Allocate a buffer big enough to hold  
640x480x8 plus header (if BMP)  
Image.nBufferSize = 324000;  
// SDK wants to know how big the buffer  
so no overflow.  
Image.fileFormat = FF_RAW_GRAY;  
// 8 bit raw data.  
// Call the SDK function to capture an image setting the bWait parameter to TRUE for  
blocking/synchronous behavior.  
if ( (nResult = hhpAcquireImage( &image,&imgTrans, &imgAcqu,TRUE ) == RESULT_SUCCESS )  
{
// Display the image. NOTE: you could specify FF_BMP_GRAY. The data would come as  
a BMP file.  
}
else  
{
hhpGetErrorMessage( nResult,tcErrMsg );  
_tprintf( _T(“Image Capture Failed: %s\n”),tcErrMsg );  
6 - 5  
 
 
}
// Remember to delete your buffer.  
delete [ ] image.puchBuffer;  
Sample 8 - An asynchronous image capture using Windows Messaging  
Note:  
You must hook the message WM_HHP_PROGRESS_HWND_MSG in your message loop to receive a barcode event  
notification. Here, assume the message is hooked to call OnEventMsg.  
// Capture image specifies:  
for capture - none (use imager config settings)  
for transfer - subsample value of 2 and JPEG transfer, progress notification  
HHP_IMAGE_TRANSFER imgTrans;  
// Image transfer options (override  
imager config)  
TCHAR  
tcErrMsg[ 128 ];  
// Error message buffer.  
Result_t  
extern DWORD  
nResult = RESULT_ERR_INTIALIZE; // Return code.  
g_dwPercentComplete = NULL; // Percent complete updated by SDK.  
// Make sure to set imgTrans structure size!  
imgTrans.dwStructSize = sizeof( HHP_IMAGE_TRANSFER );  
// Set the subsample, compression, and, since you’re specifying lossy compression (JPEG),  
add the compression factor masks. You are also asking to receive both a Windows message  
with progress information, as well as having the SDK update a DWORD with the percentage  
of transfer completion. For the latter, it is important the DWORD not lose scope or be  
deleted before the asynchronous call completes. You might have a thread or timer that  
looks at this value periodically before altering the user.  
ImgTrans.dwMask =( SUBSAMPLE_VALUE_MASK | COMPRESSION_MODE_MASK | COMPRESSION_FACTOR_MASK  
| TRANSFER_UPDATE_HWND | TRANSFER_UPDATE_DWORD);  
// Set values  
imgTrans.dwSubSample = 2;  
// Every other pixel and every other  
row.  
imgTrans.compressionMode = COMPRESSION_LOSSY;  
imgTrans.compressionFactor = 95;  
// Image compression lossy which is  
mode 1 JPEG lossy.  
// Image compression factor (image  
quality) of 95%.  
ImgTrans. hTransferNotifyHwnd = GetSafeHwnd();  
// Set this to the window handle you  
wish to receive the progress message.  
imgTrans.dwPercentComplete = &g_dwPercentComplete; //Tell SDK to update this DWORD as  
data is received.  
// Call the SDK function to capture an image setting the bWait parameter to FALSE for  
asynchronous behavior.  
if ( (nResult = hhpAcquireImage( NULL,&imgTrans,NULL,FALSE ) == RESULT_SUCCESS )  
{
// Display the image. NOTE: You could specify FF_BMP_GRAY. The data would come as  
a BMP file.  
}
else  
{
hhpGetErrorMessage( nResult,tcErrMsg );  
_tprintf( _T(“Image Capture Failed: %s\n”),tcErrMsg );  
}
// Message Handler for transfer progress message  
LRESULT OnProgressMsg( WPARAM wParam,LPARAM lParam )  
{
DWORDdwBytesSoFar = wParam;// Number of bytes receive to this point.  
DWORDdwBytesToRead = lParam;// Total number of bytes expected.  
6 - 6  
 
return( 0 );  
}
// Message Handler for image acquisition ended function (can be result of a failure as  
well)  
LRESULT OnEventMsg( WPARAM wParam,LPARAM lParam )  
{
hhpEventTye_t eventType = (hhpEventType_t)wParam;// Event type  
DWORD  
dwBytes = lParam;  
// Number of bytes in barcode. You  
don’t actually use it here.  
HHP_IMAGE  
TCHAR  
Result_t  
Image;  
tcErrMsg[ 128 ];  
nResult = RESULT_ERR_INTIALIZE;  
// Returned image structure.  
// Error message buffer  
// Return code  
// Verify the event type is barcode  
if( eventType == HHP_IMAGE_EVENT )  
{
// Set the HHP_IMAGE structure size and allocate a buffer for the data, set the  
buffer size and how we want to receive the data in the buffer.  
Image.dwStructSize = sizeof( HHP_IMAGE );  
Image.puchBuffer = new BYTE[ 324000 ];  
// Allocate a buffer big enough to  
hold 640x480x8 plus header (if BMP)  
Image.nBufferSize = 324000;  
// SDK wants to know how big the  
buffer is so there’s no overflow  
Image.fileFormat = FF_BMP_GRAY;  
// 8 bit bmp file format data  
if( (nResult = hhpGetAsyncResult( &eventType,&Image )) == RESULT_SUCCESS )  
{
// save image data to a bmp file and/or display it  
}
else  
{
hhpGetErrorMessage( nResult,tcErrMsg );  
_tprintf( _T(“Capture Image Failed: %s\n”),tcErrMsg );  
}
}
// Remember to delete your buffer  
delete [ ] image.puchBuffer;  
return( 0 );  
}
6 - 7  
 
6 - 8  
 
7
Customer Support  
Product Service and Repair  
Honeywell International Inc. provides service for all its products through service centers throughout the  
world. To obtain warranty or non-warranty service, contact the appropriate location below to obtain a  
Return Material Authorization number (RMA #) before returning the product.  
North America  
Telephone: (800) 782-4263  
Latin America  
Telephone: (803) 835-8000  
Telephone: (800) 782-4263  
Fax: (239) 263-9689  
Brazil  
Telephone: +55 (11) 5185-8222  
Fax: +55 (11) 5185-8225  
Mexico  
Telephone: 01-800-HONEYWELL (01-800-466-3993)  
Fax: +52 (55) 5531-3672  
Europe, Middle East, and Africa  
Telephone: +31 (0) 40 2901 633  
Fax: +31 (0) 40 2901 631  
Hong Kong  
Telephone: +852-29536436  
Fax: +852-2511-3557  
Singapore  
Telephone: +65-6842-7155  
Fax: +65-6842-7166  
China  
Telephone: +86 800 828 2803  
Fax: +86-512-6762-2560  
Japan  
Telephone: +81-3-6730-7344  
Fax: +81-3-6730-7222  
Online Product Service and Repair Assistance  
You can also access product service and repair assistance online at www.honeywellaidc.com.  
7 - 1  
 
     
Technical Assistance  
If you need assistance installing or troubleshooting your device, please call your distributor or the near-  
est technical support office:  
North America/Canada  
Telephone: (800) 782-4263  
Latin America  
Telephone: (803) 835-8000  
Telephone: (800) 782-4263  
Brazil  
Telephone: +55 (11) 5185-8222  
Fax: +55 (11) 5185-8225  
Mexico  
Telephone: 01-800-HONEYWELL (01-800-466-3993)  
Europe, Middle East, and Africa  
Telephone: +31 (0) 40 7999 393  
Fax: +31 (0) 40 2425 672  
Hong Kong  
Telephone: +852-29536436  
Fax: +852-2511-3557  
Singapore  
Telephone: +65-6842-7155  
Fax: +65-6842-7166  
China  
Telephone: +86 800 828 2803  
Fax: +86-512-6762-2560  
Japan  
Telephone: +81-3-6730-7344  
Fax: +81-3-6730-7222  
Online Technical Assistance  
You can also access technical assistance online at www.honeywellaidc.com.  
7 - 2  
 
   
 
 
 
Honeywell Scanning & Mobility  
9680 Old Bailes Road  
Fort Mill, SC 29707  
5X10-80SDK-UG Rev D  
4/11  
 

Havis Shields Automobile Accessories C TSM CHGR D User Manual
Healthrider Treadmill H75t User Manual
Heat Controller Air Conditioner REG 183A User Manual
Hotpoint Range RGB540SEHSA User Manual
HP Hewlett Packard Network Card FC1143 User Manual
HP Hewlett Packard Network Router AHA 8940 User Manual
HP Hewlett Packard Portable Generator 3312A User Manual
Hughes Kettner Welding System QC 412 User Manual
Husqvarna Saw WS 440 HF User Manual
IKEA Washer FWM7 User Manual