elo115Ce50.txt Driver File Contents (Windows_20CE.zip)

Elo touchscreen software version 1.15 for WinCE.
Copyright 2007 Tyco Electronics / Elo TouchSystems
2007-07-30 David McCracken

CONTENTS
This is revision 1.15 of the Elo touchscreen OS components for Windows CE5.0. 
It contains two DLL drivers and two EXE support applications plus project 
files to enable the components to be built into a system. Each component has an 
independent version number as well as being a part of the package revision (1.15).

eloUsb.dll (1.25) is the USB driver. 
eloSer.dll (1.22) is the serial driver. 
eloVa.exe (2.40) is the touchscreen video alignment program.
eloTalk.exe (1.10) is a touchscreen configuration and diagnostic application.

For each component, the install package includes CPU-agnostic bib, cec, pbpxml, 
and reg files plus CPU-specific dll or exe, pdb, and rel (if dll) files. This 
release supports X86, ARMv4i, MipsII, and MipsIV.

AddEloCat.bat adds the Elo touchscreen components to the CE Catalog database.

RemEloCat.bat removes Elo components from the Catalog database.

PREVIOUS USERS
EloUsb.dll replaces EloHid.dll. EloSer.dll replaces EloTch.dll and EloStub.dll. 
If you have been using the USB driver, you must remove eloHid from your 
platform design and replace it with eloUsb. If you have been using the serial 
driver, you must remove eloTch and eloStub from your platform design and 
replace them with eloSer. 

EloUsb.reg is derived from the old eloHid.reg. EloSer.reg is derived from the 
old eloTch.reg merged with eloStub.reg. New Registry keys have been defined to 
support new capabilities, including eloVa timeouts, right-click-on-hold, and 
controller-based (NvRam) calibration store. EloUsb.reg identifies the USB 
driver, eloUsb.dll, as both a USB and a HID device. Previously, it was only a 
HID device.

INSTALL
Get installation files by invoking Elo115Ce50.exe, a self-extracting ZIP file,
which copies all files to wince500\EloTouch unless you select an alternate 
destination.

ADD COMPONENTS
The components can be added to your target image in three way; two as user 
projects and one as platform components. The latter requires rebuilding the 
platform and is less flexible. It should be used only if you are building a 
platform for distribution. If your product is not a platform, it is easier and 
quicker to add the components as user projects.

The quickest way to add the components is to insert them as existing projects, 
directly referencing their project (pbpxml) files. This is done for each 
component individually in Platform Builder by Project > Insert > Existing 
Project and pointing to the appropriate pbpxml file under wince500\eloTouch, 
for example wince500\eloTouch\eloUsb\eloUsb.pbpxml. All necessary output files 
will already exist under eloTouch and simply remaking the run time image adds 
the components to nk.bin. Similarly, a component can be removed by deleting it 
from the Workspace Files view  and remaking the run time image.

The components can also be added as user components in the Catalog. Instead of 
directly referencing them in the EloTouch directory, they are first added to 
the Catalog. From there they can be selected into any project. The only 
advantage that this affords is that it allows the components to be selected 
without having to know their origin (under EloTouch). The procedure is:
1. Set installation environment
  1.1. Open your project in Platform Builder.
  1.2. Open the project release directory (Build OS > Open Release Directory).
  1.3. Change the directory to C:\Wince500\EloTouch (or alternate).
2. Invoke AddEloCat.bat to add Elo components to the Catalog.
3. Update the platform's Catalog
  3.1. In Platform Builder, if the Catalog is not displayed, select View > Catalog.
  3.2. Right-click in the Catalog window and select Refresh Catalog. This is 
very important. Platform Builder's Catalog does not automatically update.
  3.3. In the Catalog window under Third Party > Device Drivers > Touch, you 
should see eloUsb, eloSer, eloVa, eloTalk, and eloCpl. If you don't see these, 
the installation has failed.
4. Add components to OS/Project design. For each component that you want to 
add, right-click its icon in Platform Builder's Catalog window and select Add 
to OS Design. All components are independently selectable. As each component is 
selected, its icon appears in the OS Design View under Device Drivers > Touch 
and a grayed project appears for it under Projects. Remaking the run time image 
adds the components to nk.bin.
5. Removing components. A touchscreen component can be removed from the OS 
design by right-clicking its icon in the OS Design View > Device Drivers and 
selecting Remove Item from User-specified Catalog Item(s). Both this icon and 
its project companion will disappear from the Design View window. The project 
cannot be directly managed.

The components can be added to the Platform by following the Catalog procedure 
described above but then rebuilding the Platform instead of just remaking the 
run time image. This process cannot be easily reversed. Once the components 
have become part of the Platform, you can remove them by deleting them from 
your project and rebuilding the Platform but you cannot reintroduce them as 
user projects but only as Platform components unless all references to them are 
deleted from the Platform's pbxml file (by hand editing).

REG FILES
The drivers require their reg files (eloUsb.reg and eloSer.reg) to be merged 
into the OS image. Platform Builder automatically merges the reg files of 
included components. You can edit these files directly and remake the run-time 
image to change touchscreen operating parameters initialized by Registry 
entries. 

FEATURES OF RELEASE 1.15
1. EloVa timeouts controlled by Registry keys.
2. Calibration data storage and automatic retrieval to/from the controller's NvRam.
3. Right-click-on-hold. 
4. EloTalk touchscreen configuration tool.
5. Two-part serial driver eloStub.dll and eloTch.dll replaced by a single driver, eloSer.dll. 
6. The USB driver, eloHid, is replaced by eloUsb.
7. SmartSet communication.

ELOVA TIMEOUTS
The video/touchscreen alignment and calibration application, eloVa.exe, 
presents a sequence of touch targets. After the user touches each of these, the 
program presents two buttons for the user to accept or reject the results. The 
program waits for user input at three distinct phases. When it is first 
invoked, it displays the first target and waits for the user's touch. After 
each touch, the program displays the next target and waits for another touch. 
The initial touch wait and subsequent touch waits represents two distinct 
phases with potentially very different requirements. Often eloVa is invoked 
automatically at startup, and the delay before the first touch may be quite 
long. However, once the user has begun responding to eloVa, the delay should be 
rather short. The third timing phase occurs while waiting for the user to press 
one of the accept/reject buttons. If the process has gone well, the user should 
respond quickly. If alignment is very bad, for example due to random touches, 
the user may not be able to activate one of these buttons at all. 
   
Previously, eloVa used fixed delays for each of the three phases. Now, the 
delay for each phase can be determined by Registry settings. One set of 
parameters is shared by all touchscreens in the system. The keys are 
"VaTime1", "VaTime2", and "VaTime3", setting, respectively, the first touch, 
intra-touch, and accept/reject delays. These are stored in the Registry under
[HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\TOUCH]
Each value is a hexadecimal dword in seconds. A value greater than 0xFFFF is 
interpreted as infinite, which should only be used, if at all, for the initial 
touch delay. The default values are 0x14, 0x10, and 0x14, for an initial delay 
of 20 (decimal) seconds, intra-touch delay of 10 seconds, and accept/reject 
delay of 20 seconds.
[HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\TOUCH]
;--- ELOVA TIMEOUTS ---------------------------------------------------------
; For all EloVa timeouts, values > FFFFh mean infinite.
  "VaTime1" = dword: 14 ; Initial timeout. Default 20d (14h) seconds. 
  "VaTime2" = dword:0A ; Timeout between target touches. Default 10d (0Ah) seconds.
  "VaTime3" = dword:14 ; Timeout to accept or reject. Default 20d (14h) seconds.

CALIBRATION DATA STORE
The touchscreen drivers convert raw touch events into system pointer device 
messages using calibration information stored in either the Registry or the 
touchscreen controller. This information can be pre-stored in the production 
process and/or as a result of executing an alignment program, such as eloVa. 
   
One advantage of storing calibration data in the controller is that the data 
remains with the device. Thus, a touch monitor can be calibrated in one system 
and moved to another simply by attaching the touch monitor to the other system. 
More significantly, using the controller's non-volatile memory to store the 
data enables persistent recalibration in a system that doesn't have a 
persistent Registry, as is often the case in CE-based systems. The Registry 
image in ROM/flash is copied into RAM and any changes in the RAM-based Registry 
are lost when the system is turned off. If the touch monitor doesn't require 
field recalibration then static calibration data in the Registry image is 
sufficient. Otherwise, the monitor must be recalibrated whenever the system is 
turned on, or the Registry must be persistent, or the data can be stored in the 
controller.
   
Not all controllers support calibration data storage. The controllers that do 
provide this are 2216, 2500, 2700, 2701, 4000, 4500, 4501, and 5000. 
Controllers that afford both serial and USB interfaces support this identically 
on either interface but some, such as 4500, require different calibration data 
for serial vs. USB. These must be calibrated through the same interface through 
which they are used (the system need not be the same, however).
   
The calibration data store is independently defined for each touch monitor in 
the system by its Registry key "CalStore", which is a bit-mapped dword. Only 
the lowest byte is used. The low nibble determines the source that the driver 
reads when a touch device is attached (or at system startup). The high nibble 
determines the destination that eloVa writes when the user accepts a 
calibration. In both cases, bit 0 indicates controller and bit 1 indicates 
Registry. Thus, the value 1 indicates controller, 2 indicates Registry, and 3 
indicates both. For example 0x31, tells the driver to load calibration data 
from the controller's NvRam and EloVa.exe to write it to both the controller 
and Registry. Writing to the Registry affords a convenient means of remotely 
viewing the parameters (with Remote Registry Editor on the host computer). If 
the target's Registry uses flash memory for persistence, it would be best to 
turn off this feature to reduce wearout by setting CalStore equal to 0x11. If 
the source nibble is 3, calibration data from the controller will be used. If 
CalStore is not defined, the Registry is used for both source and destination.
In eloUsb.reg:
[HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\TOUCH\USB]
  "CalStore" = dword:31    ; low nibble = src, high = dest. 1 = controller, 2 = Registry, 3 = both.

In eloSer.reg:
[HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\TOUCH]
  "CalStore" = dword:31    ; low nibble = src, high = dest. 1 = controller, 2 = Registry, 3 = both.

RIGHT CLICK ON HOLD
The drivers can simulate a right mouse button click by the user pressing in one 
place for a specified length of time. This time and other parameters 
controlling this feature are established by Registry keys individually for each 
touch monitor in the system. These are located under:
[HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\TOUCH\USB]
for eloUsb and under:
[HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\TOUCH]
for eloSer.

The timing for right-click on hold, cable disconnect untouch, and other 
functions related to touch is provided by one timer (per touch monitor) whose 
period is defined (in milliseconds) by the Registry key "TouchTick". If this 
key is not defined, all touch timer functions are disabled, regardless of 
whether related keys are defined. The value of TouchTick is normally 0x64, 
providing 100 msec resolution. Higher resolution (smaller period) may be 
defined but will consume more CPU bandwidth. Bandwidth consumption can be 
reduced at the expense of resolution by defining a larger period. 

The Registry key "HoldEventTick" defines the number of TouchTick counts to 
trigger a right-click. For example, if this is 8 and TouchTick is 0x64, the 
resulting hold time requirement is 800 msec. If HoldEventTick is 0, the 
function is disabled.

The Registry key "HoldShowTick" defines the number of TouchTick counts to 
trigger visual feedback reminding the user that continued holding will result 
in a right click. If HoldShowTick is 0, feedback begins immediately upon touch. 
Any value larger than HoldEventTick disables visual feedback and the user will 
have no indication that a right click is imminent.

If visual feedback is enabled, the driver displays a reverse video square 
around the touch point. At each count of TouchTick, this expands by the number 
of pixels specified by "HoldShowStep".

If the user moves the touch point before the HoldEventTick timeout, right-click 
on hold is disabled until an untouch occurs, allowing drag operations to 
proceed without interference. A small amount of touch position change is not 
interpreted as deliberate movement. The amount of movement required to indicate 
a real drag is defined by the key "Hold Jiggle". This is in normalized (to 
remove technology differences) touch screen position units, which are of higher 
resolution than most video screens. A typical value of 0x400 provides a jiggle 
area of about 10 by 10 pixels on most screens. 

Typical Registry keys for right-click on hold are:
;... Hold touch timer. Used for cable disconnect and right-click-on-hold
  "TouchTick" = dword:64  ; Tick resolution. e.g. 0x64 = 100msec per tick.
;... Right-Click-On-Hold ..............................
  "HoldEventTick" = dword:8  ; Tick count til event. 0 disables.
  "HoldShowTick" = dword:1   ; 0 = immediate feedback. >= HoldEventTick = no feedback.
  "HoldShowStep" = dword:6   ; Feedback step size in pixels.
  "HoldJiggle" = dword:400   ; Hold perimeter in absolute touch units. Movement inside is still hold.

Right click on hold by the driver is not compatible with the similar, but more 
primitive, facility provided by Aygshell. Since this feature of Aygshell cannot 
be turned off, to use the driver facility, the target operating system must not 
include Aygshell. 

FORCED UNTOUCH
If communication with the touch monitor fails, for example due to cable 
disconnect, while in the touched state, the system may never receive an 
untouch. To prevent such a hung touch, the driver can force an untouch at a 
specified TouchTick count without untouch or steam events. This facility 
existed in release 1.14 but has been merged with right click on hold, changing 
its Registry keys. It now depends on "TouchTick" for timing and the trigger 
count is defined by "UntouchTickCount". 

Not defining UntouchTickCount or defining it as 0 disables forced untouch. In 
most cases, the forced untouch timeout can be quite short because the facility 
does not simply count the time from the initial touch but is reset at every 
stream touch message. Thus, even a setting that detects cable disconnect within 
milliseconds allows unlimited touch time. This is especially useful for the 
2500U and 3000U controllers, which occasionally lose an untouch message when 
the system is very busy. For these controllers, an untouch timeout of 300 msec 
prevents missing untouches without causing false untouches. The 2216 controller 
will cause false untouches with such a short timeout. Other controllers can 
operate with this timeout but they only need cable disconnect detection, which 
could be considerably longer. The circumstances of the application dictate the 
ideal range of timeouts but good starting points are 300 msec for the 2500 and 
3000 controllers and one second for all others.

As with all Registry keys related to TouchTick, UntouchTickCount is under
[HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\TOUCH\USB]
for eloUsb and under:
[HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\TOUCH]
for eloSer.
For example:
;... Lost untouch and cable disconnect .......
  "UntouchTickCount" = dword:0A ; 0 disables

ELOTALK
The EloTalk application program comprises a number of touch monitor 
configuration and test facilities. Related facilities are grouped into tabbed 
dialogs. The SmartSet dialog provides direct communication with any touchscreen 
controller. Among other things, this allows the serial number and calibration 
data to be read and written. The "Touch Hold" dialog provides a means to set 
any of the right click on hold and forced untouch parameters in order to 
determine the best settings for a particular application. The settings will be 
stored in the Registry as well as immediately in the driver but, unless the 
Registry is persistent, the static OS image settings will be restored if the 
system is rebooted. The ideal settings should be copied into the appropriate 
reg file (eloUsb.reg or eloSer.reg) and the OS image rebuilt for permanence.


Download Driver Pack

How To Update Drivers Manually

After your driver has been downloaded, follow these simple steps to install it.

  • Expand the archive file (if the download file is in zip or rar format).

  • If the expanded file has an .exe extension, double click it and follow the installation instructions.

  • Otherwise, open Device Manager by right-clicking the Start menu and selecting Device Manager.

  • Find the device and model you want to update in the device list.

  • Double-click on it to open the Properties dialog box.

  • From the Properties dialog box, select the Driver tab.

  • Click the Update Driver button, then follow the instructions.

Very important: You must reboot your system to ensure that any driver updates have taken effect.

For more help, visit our Driver Support section for step-by-step videos on how to install drivers for every file type.

server: web3, load: 3.83