Elo Touch Solutions Inc., 1033 McCarthy Blvd, Milpitas, CA 95035

This document includes the followings:

Elo TouchSystems Driver User Manual

Elo Software Design Guide

 

Elo Software Design Guide

Introduction

Get Raw and Calibrated Touch Points from the Touchscreen

Change Touchscreen Operation Modes

Enable/Disable Touch Functionality

Configure Sound During Touch

Custom Alignment for Touchscreen Using Calibration API

Define Touchscreen Boundary

Retrieve Touchscreen Diagnostic Data

Configure Cursor Edge Acceleration Feature

Elo Device Interface Functions

Function Name: EloGetScreenCount
Function Name: EloEnableTouch
Function Name: EloIsTouchEnabled
Function Name: EloGetTouchPacket
Function Name: EloGetCalData
Function Name: EloSetCalData
Function Name: EloGetDiagnosticsData
Function Name: EloGetUAlignCounts
Function Name: EloGetClipRectangles
Function Name: EloSetClipRectangles
Function Name: EloGetFullScreenClipRectangle
Function Name: EloSetFullScreenClipRectangle
Function Name: EloGetEdgeAcceleration
Function Name: EloSetEdgeAcceleration
Function Name: EloSetDebugLevel
Function Name: EloGetDebugLevel
Function Name: EloEnableBeep
Function Name: EloIsBeepEnabled
Function Name: EloGetMonitorByEloMonNum
Function Name: EloGetMonitorByIndex
Function Name: EloGotoMonitor
Function Name: EloGetScreenByIndex
Function Name: EloGetMonitorIndexByEloMonNum
Function Name: EloGetMonitorCount
Function Name: EloGetAprParameters
Function Name: EloSetAprParameters
Function Name: EloGetAprFlashProgress
Function Name: EloGetApr700XSerialNumbers
Function Name: EloFlushControllerSmartsetBuffer
Function Name: EloGetControllerFWVersion
Function Name: EloSendSmartsetCommand
Function Name: EloGetSmartsetResponseStatus
Function Name: EloGetSmartsetResponse
Function Name: EloSmartsetTransaction
Function Name: EloClearGetPoint
Function Name: EloGetIRInternalSound
Function Name: EloSetIRInternalSound
Function Name: EloCopyDeviceParametersToGlobalKey
Function Name: EloCopyGlobalKeyToDeviceParameters
Function Name: EloApplyGlobalKeys
Function Name: EloStoreDevKeysToGlobal
Function Name: EloMakeBeep
Function Name: EloGetMultiTouch
Function Name: EloGetMaxTouch
Function Name: EloSetMaxTouch
Function Name: EloGetForceMouse
Function Name: EloSetForceMouse
Function Name: EloGetMouseMode
Function Name: EloSetMouseMode
Function Name: EloAcquireSmartsetLock
Function Name: EloReleaseSmartsetLock

Interface Data Structures

Structure Name: SCREEN
Structure Name: MONITOR
Structure Name: ELO_GETTOUCHPOINTS
Structure Name: ELO_CALDATA
Structure Name: ELO_CLIPPING_MODE
Structure Name: TOUCH
Structure Name: MT_TOUCH
Structure Name: ClippingBounds
Structure Name: ELO_DIAGNOSTICS
Structure Name: ELO_GETTOUCHPOINTS
Structure Name: ELO_CLIPPING_MODE
Structure Name: ELO_FULL_SCREEN_CLIPPING
Structure Name: AccelBound
Structure Name: ACCELDATA
Structure Name: dbgLevel
Structure Name: SMARTSET_PKT
Structure Name: ELO_GET_SERIAL_NUMBERS
Structure Name: SPAN_MODE
Constants: CONTRL_STAT
Constants: TOUCHSCREEN_MODE
Constants: VrtlBoundMode
Constants: GETPOINTS_CODE
Constants: GETPOINTS_TRANSLATION
Constants: TOUCH_STATUS
Constants: MM_ERROR_CODE

 

Contacting Elo

Americas

North America

Latin America

Asia-Pacific

Europe (including Africa/Middle East)

 

Elo Software Design Guide

Introduction

Elo SDK provides programmers with APIs for communication with the Elo Serial and USB drivers. The following functionalities are available for programming:

Get Raw and Calibrated Touch Points from the Touchscreen

Gets touch data from the controller. This data can be retrieved in raw Elo coordinates or translated windows coordinate format. To get data use EloGetTouchPacket. This call may block depending on the flags used for the type of data expected.

EloGetTouchPacket

Change Touchscreen Operation Modes

Touchscreen operates in the following modes:

Click On Touch: Click on touch immediately sends a mouse down/up message at the point of touch on the touchscreen. The user's finger must be removed from the touchscreen before a new touch at any location will be recognized. The cursor or selected objects CANNOT be "dragged" on the screen in this mode.

Click On Release: At the time of release (untouch), a mouse down/up message is sent at the point that the screen was last touched. Dragging across objects on the screen will not highlight or select them unless untouch occurs when the touch is over the object. (Drag and Double-click)

Mouse Emulation: Sends a mouse/touch down message at the point of contact. Selects an object if it was at the initial point of contact. Drags a selected object on the screen. Sends a mouse/touch up message at the point of untouch. Double-clicks on an object when the screen is touched twice in succession at the same location.

These are the same as the touch modes in the Elo Control Panel. You may get or change the operation mode using the calls listed below:

EloGetMouseMode

EloSetMouseMode

 

Enable/Disable Touch Functionality

The Touchscreen can be enabled to report touch data to the Windows system or disabled not to report any touch data.

EloEnableTouch

        Configure Sound During Touch

Every complete touch is indicated by a beep from the system. Touchscreen must be calibrated before using this functionality. The frequency, time, and beep are configurable.

EloMakeBeep

 

        Save Alignment for Touchscreen Using Calibration API

Elo provides a standard calibration utility for video alignment. The CALIBRATION is used to convert touches from the Elo coordinate system to Windows virtual coordinate system.

The driver uses the following equation to convert a raw touch coordinate point from the Elo coordinate system to the Windows screen coordinate system.

The calibration equation is

Xcal = a + m*Xuncal,

where,

Xuncal, is in the Elo coordinate system

Xcal, is in the Windows coordinate system

m = nScrDx / nEloDx

"a", is the X offset value entry

nScrDx = distance between targets in the Windows virtual coordinates

nEloDx = distance between targets in the Elo coordinates.

This is especially useful if you want to save the calibration over the network or some other place, and later configure the touchscreen using one common set of data.

To get the current calibration data from the driver, use EloGetCalData. For changing the calibration data use EloSetCalData .

EloGetCalData

EloSetCalData

 

 

        Define Touchscreen Boundary

Touchscreen boundary defines the bounding rectangle for the touchscreen on the Windows virtual desktop. This allows / prohibits touch on one monitor from being propagated to the corresponding monitor. The touchscreen must be calibrated before using this functionality.

EloGetFullScreenClipRectangle

EloSetFullScreenClipRectanble

        Retrieve Touchscreen Diagnostic Data

Diagnostic information for the touchscreen can be retrieved using EloGetDiagnosticsData.

This information is also displayed in the Elo Control panel>Properties tab.

EloGetDiagnosticData

         Configure Cursor Edge Acceleration Feature

Touching towards the edge of the touchscreen can be difficult at times. This feature allows the cursor to be accelerated towards the screen's edges.

The touchscreen must be calibrated before using this functionality.

EloGetEdgeAccel

EloSetEdgeAccel

 

Elo Device Interface Functions

Function Name: EloGetScreenCount

int EloGetScreenCount( )

Parameters:
None.

Return Values: Returns the number of touchscreens attached to the system.

Remarks:

Maximum of 32 touchscreens are supported.

Requirements
Included in Version 6.30 and later.
Header: Declared in EloInterface.h; include EloInterface.h.
Library: Use EloMtApi.lib.

Function Name: EloEnableTouch

bool EloEnableTouch(int nScreenIndex, BOOL bEnableTouch )

Parameters:
nScreenIndex [in]: 0 based touch screen number.
bEnableTouch [in]: TRUE enables Touch.  FALSE disables Touch..

Return Values: Returns TRUE if successful, otherwise FALSE.

Remarks:

Maximum of 32 touchscreens are supported.

Requirements
Included in Version 6.30 and later.
Header: Declared in EloInterface.h; include EloInterface.h.
Library: Use EloMtApi.lib.

Function Name: EloIsTouchEnabled

bool EloIsTouchEnabled(int nScreenIndex)

Parameters:
nScreenIndex [in]: 0 based touch screen number.
Return Values: Returns TRUE if Touch is enabled, otherwise FALSE.

Remarks:

Maximum of 32 touchscreens are supported.

Requirements
Included in Version 6.30 and later.
Header: Declared in EloInterface.h; include EloInterface.h.
Library: Use EloMtApi.lib.

Function Name: EloGetTouchPacket

int EloGetTouchPacket (int nScreenIndex, int *x, int *y, int *z, int *touch_status)

Parameters:
nScreenIndex [in]: 0 based touch screen number.

x [out]: If TRUE, the coordinates are returned translated for the Windows coordinate system. If FALSE, raw coordinate data are returned.

y [out]: If TRUE, the coordinates are returned translated for the Windows coordinate system. If FALSE, raw coordinate data are returned.

Z [out]: 0 – 255 values are dependent of screen technology.

Touch_status [out]: This returns the touch status at the time of Touch as follows, InitialTouch =1, StreamTouch =2 and UnTouch =4

Return Values: Returns 1 if successful, otherwise return 0

Remarks:
This call will not return until the user touches the screen on next valid Touch..

Requirements
Included in Version 6.30 and later.
Header: Declared in EloInterface.h; include EloInterface.h.
Library: Use EloMtApi.lib.

Function Name: EloGetCalData

        bool EloGetCalData (int nScreenIndex, ELO_CALDATA * pCalData)

Parameters:

nScreenIndex [in]: 0 based touchscreen number.
pCalData [out]: Pointer to
ELO_CALDATA structure to receive the calibration data. Please see the structure definition section for ELO_CALDATA.

Return Values: Returns TRUE if successful, otherwise FALSE.

Remarks:
Retrieves the calibration data for the specified touchscreen.

Requirements
Included in Version 6.30 and later.
Header: Declared in EloInterface.h; include EloInterface.h.
Library: Use EloMtApi.lib.

See Also EloSetCalData

Function Name: EloSetCalData

  bool EloSetCalData (int nScreenIndex, ELO_CALDATA * pCalData)

Parameters:

nScreenIndex [in]: 0 based touchscreen number.
pCalData [in]: Pointer to ELO_CALDATA structure which stores the calibration data for the touchscreen. Please see the structure definition section for ELO_CALDATA.

Return Values: Returns TRUE if successful, otherwise FALSE.

Remarks:
Sets the calibration data for the specified touchscreen.

Requirements
Included in Version 6.30 and later.
Header: Declared in EloInterface.h; include EloInterface.h.
Library: Use EloMtApi.lib.

See Also EloGetCalData

Function Name: EloGetDiagnosticsData

        DWORD EloGetDiagnosticsData(int nScreenIndex, ELO_DIAGNOSTIC * pDiag)

Parameters:

nScreenIndex [in]: 0 based touchscreen number.
pDiag [out]: Pointer to ELO_DIAGNOSTIC structure to receive the diagnostics for the touchscreen. Please see the structure definition section for ELO_DIAGNOSTIC.

Return Values: Returns MMErrorSuccess if the call succeeds, otherwise it returns an error code or GetLastError(). See MM_ERROR_CODE section for list of error values.

Remarks:
Gets the diagnostics for the specified touchscreen. This information is also displayed in the Elo Control panel>Touch Screen Properties Button.

Requirements
Included in Version 6.30 and later.
Header: Declared in EloInterface.h; include EloInterface.h.
Library: Use EloMtApi.lib.

See Also: EloGetScreenByIndex

Function Name: EloGetUAlignCounts

        int EloGetUAlignCounts(int nScreenIndex, int * u1_cycles, int* u2_cycles)

Parameters:

nScreenIndex [in]: 0 based touchscreen number.
u1_cycles [out]:

u2_cycles [out]:

Return Values: Returns the number of combined UAlign cycles

Remarks:


Requirements
Included in Version 6.30 and later.
Header: Declared in EloInterface.h; include EloInterface.h.
Library: Use EloMtApi.lib.

Function Name: EloGetClipRectangles

        int EloGetClipRectangles(int nScreenIndex, ELO_CLIPPING_MODE *pClipMode)

Parameters:

nScreenIndex [in]: 0 based touchscreen number.
pClipMode [out]: Pointer to ELO_CLIPPING_MODE structure containing clipping boundary data in pixels. Please see the structure definition section for ELO_CLIPPING_MODE.

Return Values: Returns TRUE if successful, otherwise FALSE.

Remarks:
Gets the clipping bounding rectangle and bounding mode for the specified touchscreen.

Requirements
Included in Version 6.30 and later.
Header: Declared in EloInterface.h; include EloInterface.h.
Library: Use EloMtApi.lib.

See Also EloSetClipRectangles  

Function Name: EloSetClipRectangles

        int EloSetClipRectangles(int nScreenIndex, ELO_CLIPPING_MODE *pClipMode)

Parameters:

nScreenIndex [in]: 0 based touchscreen number.
pClipMode [in]: Pointer to ELO_CLIPPING_MODE structure containing clipping boundary data in pixels. Please see the structure definition section for ELO_CLIPPING_MODE.

Return Values: Returns TRUE if successful, otherwise FALSE.

Remarks:
Sets the clipping bounding rectangle and bounding mode for the specified touchscreen.

Requirements
Included in Version 6.30 and later.
Header: Declared in EloInterface.h; include EloInterface.h.
Library: Use EloMtApi.lib.

See Also EloGetClipRectangles

Function Name: EloGetFullScreenClipRectangle

        int EloGetFullScreenClipRectangle(int nScreenIndex, ELO_FULL_SCREEN_CLIPPING_MODE *pFullScreenClipMode)

Parameters:

nScreenIndex [in]: 0 based touchscreen number.
pFullScreenClipMode [out]: Pointer to ELO_FULL_SCREEN_CLIPPING_MODE structure containing full screen clip boundary data in pixels. Please see the structure definition section for ELO_FULL_SCREEN_CLIPPING_MODE.

Return Values: Returns TRUE if successful, otherwise FALSE.

Remarks:
Gets the full screen clip bounding rectangle and bounding mode for the specified touchscreen.

Requirements
Included in Version 6.30 and later.
Header: Declared in EloInterface.h; include EloInterface.h.
Library: Use EloMtApi.lib.

See Also EloSetFullScreenClipRectangle

Function Name: EloSetFullScreenClipRectangle

        int EloSetFullScreenClipRectangle(int nScreenIndex, ELO_FULL_SCREEN_CLIPPING_MODE * pFullScreenClipMode)

Parameters:

nScreenIndex [in]: 0 based touchscreen number.
pFullScreenClipMode [in]: Pointer to ELO_FULL_SCREEN_CLIPPING_MODE structure containing full screen clip boundary data in pixels. Please see the structure definition section for ELO_FULL_SCREEN_CLIPPING_MODE.

Return Values: Returns TRUE if successful, otherwise FALSE.

Remarks:
Sets the full screen clip bounding rectangle and bounding mode for the specified touchscreen.

Requirements
Included in Version 6.30 and later.
Header: Declared in EloInterface.h; include EloInterface.h.
Library: Use EloMtApi.lib.

See Also EloGetFullScreenClipRectangle

Function Name: EloGetEdgeAcceleration

        int EloGetEdgeAcceleration(int nScreenIndex, int w_now, int h_now, ACCELDATA *pAccel)

Parameters:

nScreenIndex [in]: 0 based touchscreen number.

w_now [in]: The x-coordinate of the lower-right corner of the rectangle .

h_now[in]: The y-coordinate of the lower-right corner of the rectangle.
pAccel [out]: Pointer to ACCELDATA structure to receive the edge acceleration data for the touchscreen. Please see the structure definition section for ACCELDATA

Return Values: Returns TRUE if the call succeeds, otherwise FALSE.

Remarks:
Gets the edge acceleration boundary and acceleration value for the given touchscreen.

Requirements
Included in Version 6.30 and later.
Header: Declared in EloInterface.h; include EloInterface.h.
Library: Use EloMtApi.lib.

See Also: EloSetEdgeAccel

Function Name: EloSetEdgeAcceleration

        int EloSetEdgeAcceleration(int nScreenIndex, int w_now, int h_now, ACCELDATA *pAccel)

Parameters:

nScreenIndex [in]: 0 based touchscreen number.

w_now [in]: The x-coordinate of the lower-right corner of the rectangle         .

h_now[in]: The y-coordinate of the lower-right corner of the rectangle.
pAccel [in]: Pointer to ACCELDATA structure to containing the edge acceleration data for the touchscreen. Please see the structure definition section for ACCELDATA.

Return Values: Returns TRUE if the call succeeds, otherwise FALSE.

Remarks:
Sets the edge acceleration boundary and acceleration scale for the given touchscreen.

Requirements:
Included in Version 6.30 and later.
Header: Declared in EloInterface.h; include EloInterface.h.
Library: Use EloMtApi.lib.

See Also: EloGetEdgeAccel

Function Name: EloSetDebugLevel

        bool EloSetDebugLevel (int nScreenIndex, ULONG ulDbgLevels)

Parameters:
ulDbgLevels [in]: debug level any combination of the debug level macro. Please see the structure definition section for debugLevel.

nScreenIndex [in]: 0 based touchscreen number.

Return Values: Returns TRUE if the call succeeds, otherwise FALSE.

Remarks:
Set viewable trace output of debug level in debug view.

Requirements
Included in Version 6.30 and later.
Header: Declared in EloInterface.h; include EloInterface.h.
Library: Use EloMtApi.lib.

See Also EloGetDebugLevel

Function Name: EloGetDebugLevel

        DWORD EloGetDebugLevel (int nScreenIndex)

Parameters:
nScreenIndex [in]: 0 based touchscreen number.

Return Values: Returns current combination of debug level flags (see debugLevel). If failed, returns -1

Remarks:
Get viewable trace output of debug level in debug view.

Requirements
Included in Version 6.30 and later.
Header: Declared in EloInterface.h; include EloInterface.h.
Library: Use EloMtApi.lib.

See Also EloSetDebugLevel

Function Name: EloEnableBeep

bool EloEnableBeep(int nBeepMode )

Parameters:
nBeepNode [in]:
 0=No Sound, 1=Motherboard Beeper, 2=External Speaker 3=MotherBoard & External Speaker

Return Values: Returns TRUE if the call succeeds, otherwise FALSE.

Remarks:

This enables the beep mode.

Requirements
Included in Version 6.30 and later.
Header: Declared in EloInterface.h; include EloInterface.h.
Library: Use EloMtApi.lib.

Function Name: EloIsBeepEnabled

int EloIsBeepEnabled()

Parameters:
none.
Return Values: Returns beep mode.  0=No Sound, 1=Motherboard Beeper, 2=External Speaker 3=MotherBoard & External Speaker

Remarks:

Retrieves the beep mode

Requirements
Included in Version 6.30 and later.
Header: Declared in EloInterface.h; include EloInterface.h.
Library: Use EloMtApi.lib.

Function Name: EloGetMonitorByEloMonNum

MONITOR * EloGetMonitorByEloMonNum(int nEloMonNum)

Parameters:
nEloMonNum [in]: 1 based Elo monitor number.
Return Values: Returns a pointer to MONITOR struct if the call succeeds, otherwise NULL.  Please see the structure definition section for MONITOR.

Remarks:

Retrieves pointer from the Monitor struct by the given Elo monitor number (elo_mon_num)

Requirements
Included in Version 6.30 and later.
Header: Declared in EloInterface.h; include EloInterface.h.
Library: Use EloMtApi.lib.

Function Name: EloGetMonitorByIndex

MONITOR * EloGetMonitorByIndex(int nMonitoIndex)

Parameters:
nMonitoIndex [in]: 0 based Elo monitor index.
Return Values: Returns a pointer to MONITOR struct if the call succeeds, otherwise NULL.  Please see the structure definition section for MONITOR.

Remarks:

Retrieves pointer from the Monitor struct by the given monitor index

Requirements
Included in Version 6.30 and later.
Header: Declared in EloInterface.h; include EloInterface.h.
Library: Use EloMtApi.lib.

Function Name: EloGotoMonitor

void EloGetMonitorByIndex(HWND hWnd, int nMonitoIndex)

Parameters:

hWnd [in]: Windows Handle to the desired monitor.
nMonitoIndex [in]: 0 based Elo monitor index.
Return Values: none.

Remarks:

Screen focus moves to the specified monitor.

Requirements
Included in Version 6.30 and later.
Header: Declared in EloInterface.h; include EloInterface.h.
Library: Use EloMtApi.lib.

Function Name: EloGetScreenByIndex

SCREEN * EloGetScreenByIndex(int nScreenIndex)

Parameters:
nScreenIndex [in]: 0 based screen index.
Return Values: Returns a pointer to SCREEN struct if the call succeeds, otherwise NULL.  Please see the structure definition section for SCREEN.

Remarks:

Retrieves pointer from the SCREEN struct by the given screen index

Requirements
Included in Version 6.30 and later.
Header: Declared in EloInterface.h; include EloInterface.h.
Library: Use EloMtApi.lib.

Function Name: EloGetMonitorIndexByEloMonNum

int EloGetMonitorIndexByEloMonNum(int nEloMonNum)

Parameters:
nEloMonNum [in]: 0 based Elo monitor index.
Return Values: Returns monitor index by providing elo_mon_num. 

Remarks:

If the mapped monitor index is not found, returns -1.

Requirements
Included in Version 6.30 and later.
Header: Declared in EloInterface.h; include EloInterface.h.
Library: Use EloMtApi.lib.

Function Name: EloGetMonitorCount

int EloGetMonitorCount()

Parameters:
None.
Return Values: Returns the monitor number(s) that are attached. 

Remarks:

None.

Requirements
Included in Version 6.30 and later.
Header: Declared in EloInterface.h; include EloInterface.h.
Library: Use EloMtApi.lib.

Function Name: EloGetAprParameters

int EloGetAprParameters(int nsScreeenIndex, int * pnParameters, int nParameterCount)

Parameters:
nScreenIndex [in]: 0 based screen index.

pnParameters[in/out]: Int array is filled with pulse touch parameters

nParameterCount [in]: The size of nParameters array
Return Values: Returns the number of tracker parameters used. 

Remarks:

If provided nScreenIndex exceeds the number of screen count, return -1. If no parameters are found, returns zero.

Requirements
Included in Version 6.30 and later.
Header: Declared in EloInterface.h; include EloInterface.h.
Library: Use EloMtApi.lib.

See Also EloSetAprParameters

Function Name: EloSetAprParameters

bool EloSetAprParameters(int nsScreeenIndex, int * pnParameters, int nParameterCount)

Parameters:
nScreenIndex [in]: 0 based screen index.

pnParameters[in/out]: Int array is filled with pulse touch parameters.

nParameterCount [in]: The size of nParameters array
Return Values: Returns true if the call succeeds, otherwise false.

Remarks:

If the provided nScreenIndex exceeds the number of screen count, return false. If no parameters are found, returns zero.

Requirements
Included in Version 6.30 and later.
Header: Declared in EloInterface.h; include EloInterface.h.
Library: Use EloMtApi.lib.

See Also EloGetAprParameters

Function Name: EloGetAprFlashProgress

int EloGetAprFlashProgress(int nsScreeenIndex, int * cur_page)

Parameters:
nScreenIndex [in]: 0 based screen index.

Cur_page [out]: current page.
Return Values: Returns total page if the call succeeds, otherwise -1.

Remarks:

Used to get the progress information for downloading the Pulse Touch calibration data

Requirements
Included in Version 6.30 and later.
Header: Declared in EloInterface.h; include EloInterface.h.
Library: Use EloMtApi.lib.

Function Name: EloGetApr700XSerialNumbers

bool EloGetApr700XSerialNumbers(int nsScreeenIndex, ELO_GET_SERIAL_NUMBERS * pSN)

Parameters:
nScreenIndex [in]: 0 based screen index.

pSN [out]: Returns a pointer to ELO_GET_SERIAL_NUMBERS struct.
Return Values: Returns true if the call succeeds, otherwise false.

Remarks:

Returns the Serial Number of Pulse Touch 700X in the parameter.

Requirements
Included in Version 6.30 and later.
Header: Declared in EloInterface.h; include EloInterface.h.
Library: Use EloMtApi.lib.

Function Name: EloFlushControllerSmartsetBuffer

bool EloFlushControllerSmartsetBuffer(int nsScreeenIndex)

Parameters:
nScreenIndex [in]: 0 based screen index.
Return Values: Returns true if the call succeeds, otherwise false.

Remarks:

Flushes the controller buffer of a specified screen from the screen index.

Requirements
Included in Version 6.30 and later.
Header: Declared in EloInterface.h; include EloInterface.h.
Library: Use EloMtApi.lib.

Function Name: EloGetControllerFWVersion

bool EloGetControllerFWVersion(int nsScreeenIndex, TCHAR *ver, size_t nLen)

Parameters:
nScreenIndex [in]: 0 based screen index.

Ver[in/out]: Returns firmware version.

nLen[in]: Size of the string buffer.
Return Values: Returns true if the call succeeds, otherwise false.

Remarks:

Gets the controller firmware version from the parameter.

Requirements
Included in Version 6.30 and later.
Header: Declared in EloInterface.h; include EloInterface.h.
Library: Use EloMtApi.lib.

Function Name: EloSendSmartsetCommand

int EloSendSmartsetCommand (PSMARTSETDATA* pSmartsetData)

Parameters:
pSmartsetData [in]: Pointer to PSMARTSETDATA structure specifying the target Elo Touchscreen (member name: "ScreenNumber") and Smartset command to send. Please see the structure definition section for 
PSMARTSETDATA.

Return Values: Returns EloSuccess if the call succeeds, otherwise it will return an error code. See MM_ERROR_CODE section for a list of the error values.

Remarks:
Sending Smartset command to an Elo Touchscreen controller.

Requirements:
Included in Version 6.30  and later.
Header: Declared in EloInterface.h; include EloInterface.h.
Library: Use EloMtApi.lib.

See Also: MM_ERROR_CODE, EloSendSmartsetResponse,  EloGetSmartsetReponseStatus,

Function Name: EloGetSmartsetResponseStatus

int EloGetSmartsetResponseStatus (PSMARTSETDATA * pSmartsetData)

Parameters:
pSmartsetData [in/out]: Pointer to SMARTSETDATA structure specifying the target Elo Touchscreen (identified by the structure member, "ScreenNumber"). Please see the structure definition section for 
PSMARTSETDATA.

Return Values: Returns EloSuccess if the call succeeds, otherwise it will return an error code. See MM_ERROR_CODE section for a list of the error values.

Remarks:
Checks if a previous call to EloSendSmartsetCommand was successful then gets the total number of responses (member name, "Response") from the specified controller identified by theElo Touchscreen number.

Highly recommend to use EloSmartSetTransaction since it would eliminate the thread locking mechanism and re-trial in one function. This will reduce debugging issues when dealing with complex smartset commands.

Requirements:
Included in Version 6.30  and later.
Header: Declared in EloInterface.h; include EloInterface.h.
Library: Use EloMtApi.lib.

See Also: MM_ERROR_CODE, EloSendSmartsetCommand, EloGetSmartsetResponse.

Function Name: EloGetSmartsetResponse

int EloGetSmartsetResponse (PSMARTSETDATA * pSmartsetData)

Parameters:
pSmartsetData [in/out]: Pointer to SMARTSETDATA structure retrieving Smartset response from an Elo Touchscreen (identified by member: "ScreenNumber"). Please see structure definition section for
PSMARTSETDATA.

Return Values: Returns EloSuccess if the call succeeds, it returns an error code otherwise. See MM_ERROR_CODE section for list of error values.

Remarks:
Retrieves one Smartset response. To get all responses, this function must be called multiple times based on the value of "PSMARTSETDATA.Response" returned from the previous call to EloGetSmartsetResponseStatus.

Highly recommend to use EloSmartSetTransaction since it would eliminate the thread locking mechanism and re-trial in one function. This will reduce debugging issues when dealing with complex smartset commands.

Requirements:
Included in Version 6.30  and later.
Header: Declared in EloInterface.h; include EloInterface.h.
Library: Use EloMtApi.lib.

See Also: MM_ERROR_CODE, EloSendSmartsetCommand,  EloGetSmartsetReponseStatus.

Function Name: EloSmartsetTransaction

BOOL EloSmartsetTransaction (PSMARTSETDATA * pSS, SMARTSET_PKT* pSSPACKET, int nNumPkts, int* pnRespPkts, int nDelay)

Parameters:
pSS [in]: Pointer to SMARTSETDATA structure specifying the target Elo Touchscreen (member name: "ScreenNumber") and Smartset command to be sent. Please see structure definition section for 
PSMARTSETDATA.

pSSPACKET [out]: Pointer to SMARTSET_PKT structure returning the array of the Smartset response.

nNumPkts [in]: Size of SMARTSET_PKT.

pnRespPkts [out]: Size of valid Smartset response.

nDelay [in]: Interval time between the Smartset command being sent.

Return Values: If returns is TRUE, the data is retrieved. If FALSE, the data is not retrieved.

Remarks:
Sending a Smartset command to an Elo Touchscreen controller and retrieving the Smartset response. To get all responses, sufficient array size has to be passed.

Requirements:
Included in Version 6.30 and later.
Header: Declared in EloInterface.h; include EloInterface.h.
Library: Use EloMtApi.lib.

See Also: EloSendSmartsetCommand, EloGetSmartsetResponse, EloGetSmartsetReponseStatus.

Function Name: EloClearGetPoint

bool EloClearGetPoint(int nScreenIndex)

Parameters:
nScreenIndex [in]: the 0 based screen index.

Return Values: Returns true if the call succeeds, otherwise false.

Remarks:

Unblocking the blocking call of EloGetTouchPacket.

Requirements
Included in Version 6.30 and later.
Header: Declared in EloInterface.h; include EloInterface.h.
Library: Use EloMtApi.lib.

Function Name: EloGetIRInternalSound

bool EloGetIRInternalSound(int nScreenIndex, UCHAR &State, DWORD &Freq, DWORD &Dura )

Parameters:
nScreenIndex [in]: 0 based screen index.
State [in/out]: State = 1 means turn on beep, State = 0 means disable beep.

Freq[in/out]: Returns the IR device internal beep frequency

Dura[in/out]: Returns the IR device internal beep duration

Return Values: Returns true if the call succeeds, otherwise false.

Remarks:

Retrieves the IR device internal beep frequency and duration in parameters.

Requirements
Included in Version 6.30 and later.
Header: Declared in EloInterface.h; include EloInterface.h.
Library: Use EloMtApi.lib.

See Also EloSetIRInternalSound

Function Name: EloSetIRInternalSound

bool EloSetIRInternalSound(int nScreenIndex, UCHAR State, DWORD Freq, DWORD Dura )

Parameters:
nScreenIndex [in]: 0 based screen index.
State [in]: State = 1 means turn on beep, State = 0 means disable beep.

Freq[in]: Returns IR device internal beep frequency

Dura[in]: Returns IR device internal beep duration

Return Values: Returns true if the call succeeds, or false.

Remarks:

Set IR device internal beep frequency and duration..

Requirements
Included in Version 6.30 and later.
Header: Declared in EloInterface.h; include EloInterface.h.
Library: Use EloMtApi.lib.

See Also EloGetIRInternalSound

Function Name: EloCopyDeviceParametersToGlobalKey

bool EloCopyDeviceParametersToGlobalKey(int nScreenIndex)

Parameters:
nScreenIndex [in]: 0 based screen index.

Return Values: Returns true if the call succeeds, otherwise false.

Remarks:

Copies the specified device's registry keys by nScreenIndex to be stored in the Global registry area

(System\\CurrentControlSet\\Services\\EloTouchscreen)

Requirements
Included in Version 6.30 and later.
Header: Declared in EloInterface.h; include EloInterface.h.
Library: Use EloMtApi.lib.

See Also EloCopyGlobalKeyToDeviceParameters, EloApplyGlobalKeys, EloStoreDevKeysToGlobal

Function Name: EloCopyGlobalKeyToDeviceParameters

bool EloCopyGlobalKeyToDeviceParameters (int nScreenIndex)

Parameters:
nScreenIndex [in]: 0 based screen index.

Return Values: Returns true if the call succeeds, otherwise false.

Remarks:

Copies the global registry keys to the specifed device's registry keys by nScreenIndex

(System\\CurrentControlSet\\Services\\EloTouchscreen)

Requirements
Included in Version 6.30 and later.
Header: Declared in EloInterface.h; include EloInterface.h.
Library: Use EloMtApi.lib.

See Also EloCopyDeviceParametersToGlobalKey, EloApplyGlobalKeys, EloStoreDevKeysToGlobal

Function Name: EloApplyGlobalKeys

bool EloApplyGlobalKey (int nScreenIndex)

Parameters:
nScreenIndex [in]: 0 based screen index.

Return Values: Returns true if the call succeeds, otherwise false.

Remarks:

Copies the global registry keys to the specified device by nScreenIndex by driver IO control.

(System\\CurrentControlSet\\Services\\EloTouchscreen)

Requirements
Included in Version 6.30 and later.
Header: Declared in EloInterface.h; include EloInterface.h.
Library: Use EloMtApi.lib.

See Also EloCopyDeviceParametersToGlobalKey, EloCopyGlobalKeyToDeviceParameters, EloStoreDevKeysToGlobal

Function Name: EloStoreDevKeysToGlobal

bool EloStoreDevKeysToGlobal (int nScreenIndex)

Parameters:
nScreenIndex [in]: 0 based screen index.

Return Values: Returns true if the call succeeds, otherwise false.

Remarks:

Stores the device keys specified by nScreenIndex to the global registry area by driver IO control.

(System\\CurrentControlSet\\Services\\EloTouchscreen)

Requirements
Included in Version 6.30 and later.
Header: Declared in EloInterface.h; include EloInterface.h.
Library: Use EloMtApi.lib.

See Also EloCopyDeviceParametersToGlobalKey, EloCopyGlobalKeyToDeviceParameters, EloApplyGlobalKey

Function Name: EloMakeBeep

        bool EloMakeBeep (unsigned int frequency, unsigned int duration)

Parameters:
frequency [in]: beep frequency [500 Hz - 4000 Hz].

duration [in]: beep duration [20 ms - 500 ms]

Return Values: Returns true if the call succeeds, otherwise false.

Remarks:
If the motherboard supports onboard beep, this will generate a beep after a touch event is detected.

Requirements
Included in Version 6.30 and later.
Header: Declared in EloInterface.h; include EloInterface.h.
Library: Use EloMtApi.lib.

Function Name: EloGetMultiTouch

        bool EloGetMultiTouch (int nScreenIndex, MT_TOUCH * pMtTouch)

Parameters:
nScreenIndex [in]: 0 based screen index.

pMtTouch [in/out]: Returns a pointer to MT_TOUCH struct.  Please see the structure definition section for MT_TOUCH.

Return Values: Returns true if the call succeeds, otherwise false.

Remarks:
Returns the Maximum number of supported touch 10 in a device and  EloSetMaxTouch is 10. Retrieve up to 10 touches at a time.

Requirements
Included in Version 6.30 and later.
Header: Declared in EloInterface.h; include EloInterface.h.
Library: Use EloMtApi.lib.

See Also EloGetForceMouse, EloSetForceMouse, EloSetMaxTouch, EloGetMaxTouch

Function Name: EloGetMaxTouch

        int EloGetMaxTouch (int nScreenIndex)

Parameters:
nScreenIndex [in]: 0 based screen index.

Return Values: Returns max simultaneous touches supported by the touch device identified by nScreenIndex.

Remarks:
Get maximum touch available in the device given by nScreenIndex. .

Requirements
Included in Version 6.30 and later.
Header: Declared in EloInterface.h; include EloInterface.h.
Library: Use EloMtApi.lib.

See Also EloGetForceMouse, EloSetForceMouse, EloSetMaxTouch

Function Name: EloSetMaxTouch

        bool EloSetMaxTouch (int nScreenIndex, ULONG nTouch)

Parameters:
nScreenIndex [in]: 0 based screen index.

nTouch [in]: Sets maximum number of touch [0-10] available in the device given by nScreenIndex.

Return Values: Returns true if the call succeeds, otherwise false.

Remarks:
Sets maximum touch available in the device given by nScreenIndex.

Requirements
Included in Version 6.30 and later.
Header: Declared in EloInterface.h; include EloInterface.h.
Library: Use EloMtApi.lib.

See Also EloSetForceMouse, EloGetForceMouse, EloGetMaxTouch

Function Name: EloGetForceMouse

        bool EloGetForceMouse (int nScreenIndex, ULONG &lMouse)

Parameters:
nScreenIndex [in]: 0 based screen index.

lMouse [in]: 1 means currently mouse mode. 0 means touch mode.

Return Values: Returns true if the call succeeds, otherwise false.

Remarks:
Retrieves the current mouse mode by nScreenIndex.

Requirements
Included in Version 6.30 and later.
Header: Declared in EloInterface.h; include EloInterface.h.
Library: Use EloMtApi.lib.

See Also EloSetForceMouse

Function Name: EloSetForceMouse

        bool EloSetForceMouse (int nScreenIndex, ULONG lMouse)

Parameters:
nScreenIndex [in]: 0 based screen index.

lMouse [in]: 1 means currently mouse mode. 0 means touch mode.

Return Values: Returns true if the call succeeds, otherwise false.

Remarks:
Sets the mouse mode to the device given by nScreenIndex.

Requirements
Included in Version 6.30 and later.
Header: Declared in EloInterface.h; include EloInterface.h.
Library: Use EloMtApi.lib.

See Also EloGetForceMouse

Function Name: EloGetMouseMode

        int EloGetMouseMode (int nScreenIndex)

Parameters:

nScreenIndex [in]: 0 based touchscreen number.

Return Values: Returns the Touchscreen mode. Please see the Constant definition section for TOUCHSCREEN_MODE

Remarks:
Retrieves the touch mode (
TOUCHSCREEN_MODE) for the specified touchscreen.

Requirements
Included in Version 6.30 and later.
Header: Declared in EloInterface.h; include EloInterface.h.
Library: Use EloMtApi.lib.

See Also EloSetMouseMode


Function Name: EloSetMouseMode

        bool EloSetMouseMode (int nScreenIndex, ULONG lMode)

Parameters:
nScreenIndex [in]: 0 based touchscreen number.

lMouse [in]: Touchscreen mode. Please see the Constant definition section for TOUCHSCREEN_MODE.

Return Values: Returns true if successful, otherwise false.

Remarks:
Sets the touch mode (
TOUCHSCREEN_MODE) for the specified touchscreen to lMode.

Requirements
Included in Version 6.30 and later.
Header: Declared in EloInterface.h; include EloInterface.h.
Library: Use EloMtApi.lib.

See Also EloGetMouseMode

Function Name: EloAcquireSmartsetLock

        bool EloAquireSmartsetLock (int nScreenIndex, int nRetry)

Parameters:
nScreenIndex [in]: 0 based touchscreen number.

nRetry [in]: Set the number or trail. 

Return Values: Returns true if successful, otherwise false.

Remarks:

Sets the thread safe lock mechanism; however, the controller is often busy from earlier tasks which can result in a slower response.

nRetry gives you enough time to let the earlier thread release the lock before processing the current one.

Highly recommend to use EloSmartsetTransaction instead.

EloSmartsetTransaction takes care of the thread locking mechanism inside the function.

 

Requirements
Included in Version 6.30 and later.
Header: Declared in EloInterface.h; include EloInterface.h.
Library: Use EloMtApi.lib.

See Also EloReleaseSmartsetLock

Function Name: EloReleaseSmartsetLock

        bool EloReleaseSmartsetLock (int nScreenIndex)

Parameters:
nScreenIndex [in]: 0 based touchscreen number.

Return Values: Returns true if successful, otherwise false.

Remarks:

Release the thread lock of the specified device by nScreenIndex.

Highly recommend to use EloSmartsetTransaction instead.

EloSmartsetTransaction takes care of the thread locking mechanism inside the function.

Requirements
Included in Version 6.30 and later.
Header: Declared in EloInterface.h; include EloInterface.h.
Library: Use EloMtApi.lib.

See Also EloAcquireSmartsetLock


Interface Data Structures

Structure Name: SCREEN

The SCREEN structure contains the diagnostics data for the touchscreen.
 

typedef struct _SCREEN

{

HANDLE hThread;

int nScreenIndex; // enum dev index

USHORT uVendorID; // HidD_GetAttributes(): HIDD_ATTRIBUTES.VendorID

USHORT uProductID; // HidD_GetAttributes(): HIDD_ATTRIBUTES.ProductID

USHORT uVersionNumber; // HidD_GetAttributes(): HIDD_ATTRIBUTES.VersionNumber == USB_DEVICE_DESCRIPTOR.bcdDevice from Elo USB and APR driver

wchar_t szDevicePath [MAX_PATH];

ACCELDATA accel_data;

ELO_CALDATA cal_data;

LONG lSmartSetToken; // SmartSet token returned by the driver when handling the SmartSet commands

DWORD dwSSTokenThreadId;// ID of the thread which is holding the SmartSet token

ELO_CLIPPING_MODE clip_mode; // defined in mmioctl.h

MONITOR* pMonitor; // pointer to the monitor item in MONITOR array in CMonitor

ELO_DIAGNOSTICS diag;

} SCREEN, *PSCREEN;

Members

hThread: Thread handle used during calibration.

nScreenIndex: 0 based touch screen number.

uVendorID HIDD_ATTRIBUTES.VendorID i.e. VID_04E7.

uProductID: HIDD_ATTRIBUTES.ProductID i.e. PID_0020

uVersionNumber: HIDD_ATTRIBUTES.VersionNumber USB_DDEVICE_DESCRIPTOR.bcdDevice from Elo USB and APR driver

szDevicePath: Devcie path

accel_data: Please see the structure definition section for ACCELDATA.

cal_data: Please see the structure definition section for ELO_CALDATA

lSmartSetToken: SmartSet token returned by the driver when handling SmartSet commands

dwSSTokenTHreadid: ID of the thread which is holding the SmartSet token

pMonitor: A pointer to MONITOR struct. Please see the structure definition section for MONITOR

diag: Most recently stored diagnostic result of the screen.  Please see the structure definition section for ELO_DIAGNOSTIC.

Structure Name: MONITOR

The MONITOR structure is used to define the array of touch monitor devices attached to the system.
 

typedef struct MONITORS_TAG

{

int elo_mon_num; // Elo monitor number

int x;

int y;

int width;

int height;

DWORD orientation;

DWORD edid; // Monitor serial number from EDID

HMONITOR hMon;

HANDLE hMappedPointerDevice;

wchar_t device_id [MAX_PATH];

SPAN_MODE span_mode;

} MONITOR, *PMONITOR;

Members
elo_mon_num: Elo monitor number that appears in the screen resolution dialog of the Control Panel

x: X coordinate of the touch location.

y: Y coordinate of the touch location.

width: Screen width

height: Screen height

orientation: Screen orientation DMDO_270, DMDO_180, DMDO_90 and DMDO_DEFAULT

edid: Monitor serial number

hMon: Handle to the Monitor

hMappedPointerDevice: Handle to the mapped pointer device

device_id: Verndor ID i.e. VID_04E7

span_mode:  Please see the constants definition for SPAN_MODE

Structure Name: ELO_GETTOUCHPOINT

The ELO_GETTOUCHPOINT structure defines a touch coordinate.

typedef struct _ELO_GETTOUCHPOINTS

{

BOOL ValidFlag; // OUT-if TRUE, points are valid untouch points

GETPOINTS_TRANSLATION Translation;// OUT-if TRUE, points are translated

LONG XValue; // OUT- x value of touch

LONG YValue; // OUT- x value of touch

LONG ZValue; // OUT- Z value of touch

TOUCHPACKET Controller_Packet;

TOUCH_STATUS Status;

GETPOINTS_CODE GetPointsFlag; // IN - the blocked call returns data depending on this flag

} ELO_GETTOUCHPOINTS, *PELO_GETTOUCHPOINTS;

Members

ValidFlag:  Returns TRUE if untouch is valid, otherwise FALSE.

Translation: Please see the structure definition for GETPOINOTS_TRANSLATION

XValue: x co-ordinate for touch.

YValue: y co-ordinate for touch.

ZValue: z co-ordinate for touch.

Controller_Packet: Please see the structure definition for TOUCHPACKET

Status: Receives the touch status. Please see the constants definition for TOUCH_STATUS.

GetPointsFlag: Please see the constants definition for GETPOINTS_CODE

Structure Name: ELO_CALDATA

The CALIBRATION structure defines the calibration data used to convert touches from the Elo coordinate system to the Windows virtual coordinate system.

The driver uses the following equation to convert a raw touch coordinate point from the Elo coordinate system to the Windows screen coordinate system.
The calibration equation is:

Xcal = a + m*Xuncal,

where,
Xuncal, is in the Elo coordinate system
Xcal, is in the Windows coordinate system
m = nScrDx / nEloDx
"a", is the X offset value entry
nScrDx = distance between targets in Windows' virtual coordinates
nEloDx = distance between targets in Elo's coordinates.

typedef struct _EloCalData // IN Set calibrate data input buffer

{

LONG EloDx;

LONG ScrDx;

LONG X_Offset;

LONG EloDy;

LONG ScrDy;

LONG Y_Offset;

LONG EloDz;

LONG ScrDz;

LONG Z_Offset;

LONG xyswap;

ULONG EloMonitorNumber;

ULONG MonitorSerialNumber;

unsigned short Checksum;

int nScreenIndex;

// Support multiple screens for mouse collection

LONG xVirtScrSize;

LONG yVirtScrSize;

LONG xVirtScrCoord;

LONG yVirtScrCoord;

}ELO_CALDATA, *PELO_CALDATA;

Members

EloDx:

ScrDx:

X_Offset:

EloDy:

ScrDy:

Y_Offset:

EloDz:

ScrDz:

Z_Offset:

Data is required by calibration. Use the equation above to calculate these values.

xyswap: Specifies if the touchscreen is rotated 90 degrees or 270 degrees. Set to 1 if touchscreen is rotated 90 degrees or 270 degrees else set to 0.

EloMonitorNumber:

MonitorSerialNumber: Elo monitor numbers are 1 based.

Checksum: Screen width in pixels.

nScreenIndex: Screen height in pixels.

xMonLocn: Monitor location (X) for this monitor on the virtual desktop in pixels.

yMonLocn: Monitor location (Y) for this monitor on the virtual desktop in pixels.

xVirtScrSize: Width in pixels of the Windows virtual screen.

yVirtScrSize: Height in pixels of the Windows virtual screen.

xVirtScrCoord: Top left X coordinate of the Windows virtual screen.

yVirtScrCoord: Top left Y coordinate of the Windows virtual screen.

Structure Name: ELO_CLIPPING_MODE

           

typedef struct _ELO_CLIPPING_MODE

{

VrtlBoundMode ClippingMode;

ULONG NumBounds;

ULONG ExclusionFlag;

ClippingBounds Bounds[MAX_BOUND];

int MonitorNumber;

} ELO_CLIPPING_MODE, *PELO_CLIPPING_MODE;

Members
ClippingMode: Defines the touch bounding rectangle for the screen. See structure ClippingBounds. Please see the constant definition for VrtBoundMode.

ClippingMode: Defines the mode for the touchscreen boundary on the virtual desktop. Possible values are as follows:

0: Disable virtual desktop. Touch on all screens will be reflected on the primary monitor.
1: Enable virtual desktop. In this mode, no individual screen bounds are used for the monitor. Touches toward the edge may generate clicks on adjacent monitors.
2: Enable virtual desktop. Screen bounds are enabled for each monitor. Touches on the screen will always generate clicks on the associated monitor. A touch outside the bounding rectangle will cause the cursor to move to a point along the boundary that is nearest to the point of touch.
3: Enable virtual desktop. Screen bounds are enabled for each monitor. Touches on the screen always generate clicks on the associated monitor. Touches outside the bounding rectangle are not sent to the system.

 

NumBounds: The number of stored bounds.

ExclusionFlag: 0 means inside bound is touchable. 1 means bound area is untouchable.

Bounds: Please see the structure definition for ClippingBounds.

MonitorNumber: monitor index

Structure Name: TOUCH

The TOUCH data structure defines the touch configuration parameters.

typedef struct tagTouch

{

TOUCH_STATUS status;

UCHAR id; // touch id: 0 or 1 representing the touch finger

USHORT x; // x of a touch point

USHORT y; // y of a touch point

} TOUCH, *PTOUCH;

Members
status:
Please see the constants definition of TOUCH_STATUS

id: Touch id representing the touch sequence of touch point

x: X distance in pixels. Touches outside this distance will generate quick touches.

y: Y distance in pixels. Touches outside this distance will generate quick touches.

           

Structure Name: MT_TOUCH

The MT_TOUCH data structure defines the touch configuration parameters.

typedef struct

{

TOUCH touch [ELO_MT_MAX_COUNT]; // max number of touches (fingers)

int count; // actual touch count

} MT_TOUCH, *PMT_TOUCH;

Members
touch: Please see the structure definition for TOUCH

count: Number of touches

Structure Name: ClippingBounds

The ClippingBounds structure is used to define the bounding rectangle.

typedef struct _ClippingBounds // IN Set calibrate data input buffer

{

long X_Max;

long X_Min;

long Y_Max;

long Y_Min;

long Z_Max;

long Z_Min;

} ClippingBounds, *PClippingBounds;

Members

X_Max: Specifies the X coordinate of the lower-right corner of the rectangle in pixels.
X_Min: Specifies the X coordinate of the upper-left corner of the rectangle in pixels.

Y_Max: Specifies the Y coordinate of the lower-right corner of the rectangle in pixels.

Y_Min: Specifies the Y coordinate of the upper-left corner of the rectangle in pixels.

Z_Max: Reserved.

Z_Min: Reserved.

Structure Name: ELO_DIAGNOSTIC

The ELO_DIAGNOSTICS  structure is used to define generic device information

typedef struct _DIAGNOSTICS

{

CONTRL_STAT ctrl_status; // OUT- Controller Status

ULONG HardwareHandShaking; // OUT-Hardware handshaking turned on /off

LONG BaudRate; // OUT- Baud rate of controler, 0 for bus

unsigned char crevminor; // OUT- controller rev minor number

unsigned char crevmajor; // OUT- controller rev major number

unsigned char trevminor; // OUT- Unused

unsigned char trevmajor; // OUT- Unused

unsigned char diagcodes[8]; // OUT- Diag codes ret from controller

unsigned char id[8]; // OUT- OEM ID string ret from controller

unsigned char cnt_id[8]; // OUT- Full Smartset controller ID packet

unsigned char driver_id[32]; // OUT- Driver ID

// add on fields from enum ioctl

ULONG uInterfaceType; // OUT- TOUCHSCREEN_TYPE_USB, TOUCHSCREEN_NT_SERIAL, ...

wchar_t PortFriendlyName [COMPORT_NAME_LENGTH]; // OUT- Used for serial touchscreens

wchar_t SerialNumber [SERIALNUMBER_NAME_LENGTH]; // OUT- ASCII 8-digit serial#

wchar_t wcUsbProductString [USB_PRODUCT_STRING_LENGTH];

// APR only

char szCalFileName [DATA_FILE_MAX_NAME];

int nCalFileVerMajor;

int nCalFileVerMinor;

char szSensorSN [SCF_HEADER_SERIAL_NUMBER_LENGTH];

// End APR only

} ELO_DIAGNOSTICS , *PELO_DIAGNOSTICS ;

Members

ctrl_status: Please see the constants definition for CONTRL_STAT.

HardwareHandShaking: Non zero value is return hardware is handshaking. Hardware handshaking turned on /off

BaudRate: Serial communication speed.

crevminor: Minor revision of controller.

crevmajor: Major revision of controller.

trevminor: Trailing minor revision of controller.

trevmajor:  Trailing major revision of controller.

diagcodes: The response received from the diagnostics smartest command sent to the controller.

cnt_id: Contains the response from the controller id smartest command to the controller.

driver_id: Driver identification / version string.

uInterfaceType:  (TOUCHSCREEN_TYPE_USB 0x01) (TOUCHSCREEN_TYPE_SERIAL 0x02) (TOUCHSCREEN_TYPE_APR 0x03)

PortFriendlyName: Com port friendly name used for serial communication

SerialNumber: Controller serial number

wcUsbProductString: Touchscreen model name that appears in the Control Panel

szCalFileName: Calibration file name

nCalFileVerMajor: Calibration file major version number for Pulse Touch

nCalFileVerMinor: Calibration file minor version number for Pulse Touch

szSensorSN: Sensor serial number

Structure Name: TOUCHPACKET

The TOUCHPACKET structure is used to define touch XYZ coordinates with TOUCH_STATUS

typedef struct

{

UCHAR T; // Leading 'T' for touch packet

UCHAR Status; // Touch status

SHORT X; // X value

SHORT Y; // Y value

SHORT Z; // Z value

} TOUCHPACKET, *PTOUCHPACKET;

Members

T: The leading char for a smartset touch packet.

Status: Please see the constants definition for TOUCH_STATUS

X: X coordinate of a touch

Y: Y coordinate of a touch

Z:  Z coordinate of a touch

Structure Name: ELO_GETTOUCHPOINTS

The ELO_GETTOUCHPOINTS structure is used to define detailed touch point information (Example:  Validity of touch or the type of touch that is of interest).

typedef struct _ELO_GETTOUCHPOINTS

{

BOOL ValidFlag; // OUT-if TRUE, points are valid untouch points

GETPOINTS_TRANSLATION Translation;// OUT-if TRUE, points are translated

LONG XValue; // OUT- x value of touch

LONG YValue; // OUT- x value of touch

LONG ZValue; // OUT- Z value of touch

TOUCHPACKET Controller_Packet;

TOUCH_STATUS Status;

GETPOINTS_CODE GetPointsFlag; // IN - the blocked call returns data depending on this flag

} ELO_GETTOUCHPOINTS, *PELO_GETTOUCHPOINTS;

Members

ValidFlag: TRUE if Untouch is valid, otherwise FALSE.

Translation: Please see the structure definition for GETPOINTS_TRANSLATION

XValue:  A touch point of x-coordinate value

YValue:  A touch point of y-coordinate value

ZValue:  A touch point of z-coordinate value

Controller_Packet: Please see the structure definition for  TOUCHPACKET
Status: Please see the constants definition for TOUCH_STATUS
GetPointsFlag: Please see the constants definition for GETPOINTS_CODE

Structure Name: ELO_CLIPPING_MODE

The ELO_CLIPPING_MODE structure is used to define the bounding rectangle.

typedef struct _ELO_CLIPPING_MODE

{

VrtlBoundMode ClippingMode;

ULONG NumBounds;

ULONG ExclusionFlag;

ClippingBounds Bounds[MAX_BOUND];

int MonitorNumber;

} ELO_CLIPPING_MODE, *PELO_CLIPPING_MODE;

Members

ClippingMode: Please see the constants definition of VrtBoundMode

NumBounds:  The number of bounds

ExclusionFlag: 0 means enclosed bound(s) become touchable zone(s) whereas 1 means enclosed bound(s) become untouchable zone(s)

Bounds: Defines the edge of the touchscreen acceleration bounds.

MonitorNumber:  Monitor index

Structure Name: ELO_FULL_SCREEN_CLIPPING

The ELO_FULL_SCREEN_CLIPPING structure is used to define the full screen clipping bounding rectangle.

typedef struct _ELO_FULL_SCREEN_CLIPPING

{

VrtlBoundMode ClippingMode;

ClippingBounds Bounds[MAX_BOUND];

} ELO_FULL_SCREEN_CLIPPING, *PELO_FULL_SCREEN_CLIPPING;

Members

ClippingMode: Please see the constants definition of VrtBoundMode

Bounds: Defines the edge of the touchscreen acceleration bounds.

Structure Name: AccelBounds

The AccelBounds structure is used to define the bounding rectangle of the accelerating region.

typedef struct _AccelBounds // IN Set calibrate data input buffer

{

LONG X_Max;

LONG X_Min;

LONG Y_Max;

LONG Y_Min;

LONG Z_Max;

LONG Z_Min;

} AccelBounds, *pAccelBonds;

Members

X_Max: Specifies the X coordinate of the lower-right corner of the rectangle in pixels.
X_Min: Specifies the X coordinate of the upper-left corner of the rectangle in pixels.

Y_Max: Specifies the Y coordinate of the lower-right corner of the rectangle in pixels.

Y_Min: Specifies the Y coordinate of the upper-left corner of the rectangle in pixels.

Z_Max: Reserved.
Z_Min: Reserved.

 

Structure Name: ACCELDATA

The EDGE_ACCEL structure is used to define the bounding rectangle.

typedef struct _ACCELDATA

{

ULONG Enable;

ULONG Scale;

AccelBounds Bounds[1];

} ACCELDATA, *PACCELDATA;

Members
Enable: 0 disables acceleration, 1 enables acceleration.

Scale: The edge acceleration speed scale consist of three pre-determined values of 15 (slow), 20 (medium), and 25 (fast) in the defined bounds.

Bounds: Defines the edge of the touchscreen acceleration bounds. See the structure definition for ClippingBounds.

Structure Name: dbgLevelMap

struct dbgLevel

{

TCHAR name [64];

unsigned long value;

} dbgLevelMap[] =

{ // From \Drivers\EloMtUsb\trace.h

{ _T("DEBUG_LEVEL_ERROR"), 0x00000001 },

{ _T("DEBUG_LEVEL_WARN"), 0x00000002 },

{ _T("DEBUG_LEVEL_INIT"), 0x00000004 },

{ _T("DEBUG_LEVEL_INIT_LOUD"), 0x00000008 },

{ _T("DEBUG_LEVEL_TOUCHDATA"), 0x00000010 },

{ _T("DEBUG_LEVEL_TOUCHDATA_LOUD"), 0x00000020 },

{ _T("DEBUG_LEVEL_TOUCHSTATE"), 0x00000040 },

{ _T("DEBUG_LEVEL_GETPOINT"), 0x00000080 },

{ _T("DEBUG_LEVEL_PNP_POWER"), 0x00000100 },

{ _T("DEBUG_LEVEL_PNP_POWER_LOUD"), 0x00000200 },

{ _T("DEBUG_LEVEL_IOCTL"), 0x00000400 },

{ _T("DEBUG_LEVEL_IOCTL_LOUD"), 0x00000800 },

{ _T("DEBUG_LEVEL_SMARTSET"), 0x00001000 },

{ _T("DEBUG_LEVEL_SMARTSET_LOUD"), 0x00002000 },

{ _T("DEBUG_LEVEL_BEEP"), 0x00004000 },

{ _T("DEBUG_LEVEL_RCOH"), 0x00008000 },

{ _T("DEBUG_TRACK_IDLE"), 0x00010000 },

{ _T("DEBUG_TRACK_TOUCH"), 0x00020000 },

{ _T("DEBUG_TRACK_FSR"), 0x00040000 },

{ _T("DEBUG_LEVEL_LOWSIG"), 0x00100000 },

{ _T("DEBUG_LEVEL_TOUCHREJECT"), 0x00200000 },

{ _T("DEBUG_LEVEL_TRACK_TOOLS_LOUD"), 0x00400000 },

{ _T("DEBUG_LEVEL_MCHANNEL_DUMP"), 0x00800000 },

{ _T("DEBUG_LEVEL_IOCTL_PAYLOAD"), 0x80000000 },

};

Members
name: Debug level option name

value: The value of the unique bit flag which turns on a specific debug feature.

Structure Name: SMARTSETDATA

The SMARTSETDATA structure is used to define the array of Smartset response.
 

typedef struct _SmartsetData

{

LONG ScreenNumber;

union

{

char Command[8];

unsigned short Response;

};

} SMARTSETDATA, *PSMARTSETDATA;

Members

ScreenNumber: Screen Index
command: Contains the command/response to the controller.

Structure Name: SMARTSET_PKT

The SMARTSET_PKT structure is used to define the array of Smartset response.

typedef struct _SmartsetPkt

{

unsigned char pkt[8];

} SMARTSET_PKT;

Members
pkt: Contains the response to the smartest command to the controller.

Structure Name: ELO_GET_SERIAL_NUMBERS

The ELO_GET_SERIAL_NUMBERS structure is used to define the USB/sensor serial number as well as the version of the calibration data in use.
 

typedef struct _ELO_GET_SERIAL_NUMBERS

{

WCHAR UsbSerialNumber[USB_SERIAL_NUMBER_LENGTH];

CHAR SensorSerialNumber[SCF_HEADER_SERIAL_NUMBER_LENGTH];

CHAR CalFileInUse[DATA_FILE_MAX_NAME];

UCHAR Diagnostics;

LONG CalFileMajorVerion;

LONG CalFileMinorVerion;

} ELO_GET_SERIAL_NUMBERS, *PELO_GET_SERIAL_NUMBERS;

Members
UsbSerialNumber: USB serial number

SensorSerialNumber: Sensor serial number

CalFileInUse: Calibration file name

Diagnostics: Smartset respond of the diagnostic request ( the 'd' command )

CalFileMajorVersion: Calibration file major version

CalFileMinorVersion: Calibration file minor version

Structure Name: SPAN_MODE

The SPAN_MODE structure is used to define the physical layout of the touch screens.
 

typedef struct SPAN_MODE_TAG

{

unsigned char row_index;

unsigned char col_index;

unsigned char tot_rows;

unsigned char tot_cols;

} SPAN_MODE;

Members

row_index: Desktop monitor horizontal location index

col_index: Desktop monitor vertical location index

tot_rows: Total rows of monitors

tot_cols: Total columns of monitors

Constants: CONTRL_STAT

typedef enum _CONTRL_STAT // ctrl_status values

{

CS_OK = 0,

CS_ConstantTouch,

CS_CanNotFindController,

CS_NoResponse,

CS_InvalidResponse,

CS_CanNotSetBaudRate,

CS_CommandNotSent,

CS_SystemError,

CS_InvalidCommPort,

CS_CommPortFailedOpen,

CS_CommPortCommandError,

CS_CommPortNoController,

CS_UndefinedController

} CONTRL_STAT;

 

Values
CS_OK: Everything works fine.

CS_ConstantTouch: There is constant touch detected on the touchscreen.

CS_CanNotFindController: No controller found.

CS_NoResponse: No response from the controller.

CS_InvalidResponse: Incorrect response, maybe due to out of sync.

CS_CanNotSetBaudRate: Baud rate cannot be set.

CS_CommandNotSent: Smartset command cannot be sent to the controller.

CS_SystemError: System Error.

CS_InvalidCommPort: No touchscreen connected on the serial port specified.

CS_CommPortFailedOpen: Error opening the serial port.

CS_CommPortCommandError: Communication error.

CS_CommPortNoController: No controller.

CS_UndefinedController: Unidentified controller.

Constants: TOUCHSCREEN_MODE

Valid TOUCHSCREEN_MODE for the touchscreen.

#define MODE_CLICK_ON_TOUCH 0

#define MODE_CLICK_ON_UNTOUCH 1

#define MODE_MOUSE_EMULATION 6

 

Values

MODE_CLICK_ON_TOUCH : Click on touch immediately, upon touch, sends a mouse down/up message at the point of touch on the touchscreen. The user's finger must be removed from the touchscreen before a new touch at any location will be recognized. The cursor or selected objects CANNOT be "dragged" on the screen in this mode.

MODE_CLICK_ON_UNTOUCH: Click on release, upon release (untouch), sends a mouse down/up message at the point of the screen that was last touched. Dragging across objects on the screen will not highlight or select them unless untouch occurs over the object. (Drag and Double-click)

MODE_MOUSE_EMULATION: Sends a mouse down message at the point of contact. Selects an object if it was at the initial point of contact. Ability to drag a selected object on the screen. Sends a mouse up message at the point of untouch. Double-clicks on an object when the screen is touched twice in succession at the same location.

Constants: VrtlBoundMode

Valid mode for VrtlBoundMode  

typedef enum

{

enumVrtlDeskDisabled = 0, // no virtual desktop

enumVrtlNoBounds, // NO virtual desktop bounds, No Clipping, Cursor visible

enumVrtlBoundsClipped, // virtual desktop bounds enable, Clipping, Cursor moves at bounds

enumVrtlBoundsFreeze // virtual desktop bounds enable, Clipping, Cursor Freezes at bounds

} VrtlBoundMode;

 

Values

enumVrtlDeskDisabled = 0: Disables virtual desktop. Touch on all screens will be reflected on the primary monitor.
enumVrtlNoBounds=1: Enables virtual desktop. In this mode, no individual screen bounds are used for the monitor. Touches toward the edge may generate clicks on adjacent monitors.
enumVrtlBoundsClipped=2: Enables virtual desktop. Screen bounds are enabled for each monitor. Touches on the screen will always generate clicks on the associated monitor. A touch outside the bounding rectangle will cause the cursor to move to a point along the boundary that is nearest to the point of touch.
enumVrtlBoundsFreeze=3: Enables virtual desktop. Screen bounds are enabled for each monitor. Touches on the screen will always generate clicks on the associated monitor. Touches outside the bounding rectangle will not be sent to the system.

Constants: GETPOINTS_CODE

Valid GETPOINTS_CODE  for the touchscreen.

typedef enum _GETPOINTS_CODE // the blocked call returns data depending on this flag

{

NoRequest = 0,

ReturnImmediately,

ReturnOnTouch,

ReturnOnUntouch,

ReturnOnNextValidTouch,

}GETPOINTS_CODE ;

 

Values

NoRequest: No response

ReturnImmediately: Response immediately when touch is detected regardless of the touch validity

ReturnOnTouch: Response only on touch

ReturnOnUntouch: Response only on untouch

ReturnOnNextValidTouch: Response back all valid touch (On-touch, Un-touch and streaming)

Constants: GETPOINTS_TRANSLATION

Valid GETPOINTS_TRANSLATION for the touchscreen.

typedef enum _GETPOINTS_TRANSLATION

{

Raw =1,

Translated,

ControllerDirect

}GETPOINTS_TRANSLATION ;

 

Values

Raw: Raw data

Translated:  Translated data

ControllerDirect:  Data directly out from the controller

Constants: TOUCH_STATUS

Valid mode for the touchscreen.

typedef enum tagTouchStatus // the blocked call returns data depending on this flag

{

InitialTouch = 1,

StreamTouch = 2,

UnTouch = 4

} TOUCH_STATUS ;

 

Values

InitialTouch: The touch data was returned on the initial touch.

StreamTouch: The touch data was returned on a stream touch.

UnTouch: The touch data was returned on an untouch.

MM_ERROR_CODE: Returned from Interface DLL

 

typedef enum _MM_ERROR_CODE // Error returns in the header

{

MMErrorSuccess=0,

MMErrorInvalidCommand,

MMErrorVersionLock,

MMErrorBufferSize,

MMErrorTouchDeviceNotWorking,

MMErrorNotImplemented,

MMErrorDeviceBusy,

MMErrorNoActionTaken

} MM_ERROR_CODE;

Contacting Elo

Elo Touch Solutions has technical support offices around the world. We can be reached by telephone, e-mail or fax, and you can find an office that is open and staffed with personnel to assist you with questions or problems pertaining to our Elo products. 

Consult the list below for the office which can best serve you.

Amerias

North America

U.S.A Tel: 1-800-557-1458 (toll free)
Fax: 865-694-1731
Online form: request technical support

Latin America

English-speaking customers Tel: 1-800-557-1458 (toll free)
Fax: 865-694-1731
Online form: request technical support
Portuguese-speaking customers Tel: (55 11) 3611-1311, ext 249 or 144
Fax: (55 11) 3611-4365
E-mail: elotechbr@elotouch.com
Spanish-speaking customers Tel: 54 11 - 47332238
  Fax: 54 11 - 47332245
Online form: request technical support

Asia-Pacific

Japan Tel: (81) (0) 45-478-2166
Fax: (81) (0) 45-478-2181
E-mail: info@tps.co.jp
Taiwan Tel: 886 2 26629788, ext 416
Fax: 886 2 26642725
E-mail: eric.chang@tycoelectronics.com

Europe (including Africa/Middle East)

Africa Tel: +32 (0)16 35 19 01
Belgium Fax: +32 (0)16 35 21 01
Greece E-mail: elotecheu@elotouch.com
Italy
Luxemburg
Netherlands
Portugal
Spain
Austria Tel: +49 (0)89 60 822 193
Czech Republic Fax: +49 (0)89 60 822 180
Germany E-mail: elotecheu@elotouch.com
Hungary
Kroatia
Poland
Romania
Russia
Slovakia
Slovenia
Switzerland
Denmark Tel: +44 (0)1793 57 33 46
Finland Fax: +44 (0)1793 57 33 45
Iceland E-mail: elotecheu@elotouch.com
Israel
Ireland
Norway
Sweden
United Kingdom
France Tel: 0825 825 497 (toll free)
E-mail: elotecheu@elotouch.com