3.1 - Command/Response [UE9 Datasheet]
Everything besides streaming is done in command/response mode, meaning that all communication is initiated by a command from the host which is followed by a response from the UE9.
For everything besides timers and counters, the low-level Feedback function is the primary function used, as it writes and reads virtually all I/O on the UE9. The Windows LabJackUD driver uses the Feedback function under-the-hood to handle most requests. A single call to the Feedback function writes and reads all 23 digital I/O, updates the analog outputs, and reads up to 16 analog inputs.
The following tables show typical measured execution times for the Feedback function. The time varies with the number of analog inputs requested and the resolution of those inputs. These were measured by calling the function 1000 times and dividing the total time by 1000, and thus include everything (Windows latency, communication time, UE9 processing time, etc.).
A “USB high-high” configuration means the UE9 is connected to a high-speed USB2 hub which is then connected to a high-speed USB2 host. Even though the UE9 is not a high-speed USB device, such a configuration does provide improved performance. Typical examples of “USB other” would be a UE9 connected to an old full-speed hub (hard to find) or more likely a UE9 connected directly to the USB host (even if the host supports high-speed).
Table 3.1-1. Typical Feedback Function Execution Times
Resolution |
| Ethernet | USB high-high | USB other |
Index | # AIN | [milliseconds] | [milliseconds] | [milliseconds] |
| 0 | 1.7 | 1.5 | 4 |
0-12 | 4 | 1.9 | 1.7 | 4 |
0-12 | 8 | 2.1 | 2 | 4 |
0-12 | 16 | 2.7 | 2.4 | 4 |
|
|
|
|
|
13 | 4 | 2 | 1.9 | 4 |
13 | 8 | 2.4 | 2.3 | 4 |
13 | 16 | 3.2 | 3 | 4.9 |
|
|
|
|
|
14 | 4 | 2.7 | 2.5 | 4 |
14 | 8 | 3.6 | 3.5 | 5 |
14 | 16 | 5.6 | 5.8 | 6.3 |
|
|
|
|
|
15 | 4 | 4.9 | 4.9 | 6 |
15 | 8 | 8.2 | 8.1 | 9 |
15 | 16 | 15 | 15 | 15 |
|
|
|
|
|
16 | 4 | 14 | 14 | 14 |
16 | 8 | 27 | 27 | 27 |
16 | 16 | 52 | 52 | 52 |
|
|
|
|
|
17 | 4 | 52 | 52 | 52 |
17 | 8 | 101 | 101 | 101 |
17 | 16 | 199 | 199 | 199 |
Note that specifying a resolution index of 17, still returns 16-bit data, but is a special minimum noise mode.
As an example with the LabJackUD driver: If requests are added to write/read all 23 bits of digital I/O, update both analog outputs, and read 16 12-bit analog inputs, the GoOne() function call can be expected to typically take about 2.6 ms to execute via Ethernet. The AddRequest() and GetResult() calls take relatively no time at all.
A resolution value of 18 is passed to use the auxiliary high-resolution converter (24-bit sigma-delta) on the UE9-Pro. This is done with the SingleIO low-level function, not the Feedback function. The UD driver will automatically use the SingleIO low-level function when resolution is set to 18 on the UE9-Pro, and if there are requests for multiple samples the driver will make multiple SingleIO calls.
Table 3.1-2. Typical SingleIO Function Execution Time For Analog Input (UE9-Pro)
Resolution |
| Ethernet | USB high-high | USB other |
|
Index | # AIN | [milliseconds] | [milliseconds] | [milliseconds] |
|
18 | 1 | 125 | 125 | 125 | (~125 ms per sample) |
The low-level TimerCounter function is used to configure, update, reset, or read timer. When using the LabJackUD driver, any timer/counter related requests will cause a call to the low-level TimerCounter function. The following tables show typical measured execution times for the TimerCounter function. The execution time depends very little on what is being done and how many timers/counters are being configured or read. These were measured by calling the function 1000 times and dividing the total time by 1000, and thus include everything (Windows latency, communication time, UE9 processing time, etc.).
Table 3.1-3. Typical TimerCounter Function Execution Times
| Ethernet | USB high-high | USB other |
| [milliseconds] | [milliseconds] | [milliseconds] |
TimerCounter | 1.5 | 1.4 | 4 |