Latency of ReadFile in CE6

Hi, I’m the Toradex AI Assistant. The Toradex Support team will follow up with you shortly!

Did you like my answer?

:+1: :-1:


The latency you’re experiencing with the ReadFile function in Windows CE 6.0 on the Colibri VF61 module could be due to the way the serial driver handles the incoming data. Here are a few suggestions to potentially reduce the latency:

  1. Increase the UART Buffer Size: You can try increasing the UART buffer size to ensure that the data is available when you call ReadFile. This can be done using the SetupComm function.

  2. Use Overlapped I/O: Implementing overlapped I/O can help in reducing the latency. This allows the ReadFile operation to be performed asynchronously.

  3. Polling with DeviceIoControl: You can use DeviceIoControl to directly interact with the UART driver. This might give you more control over the timing and handling of the data. However, this approach requires a good understanding of the specific IOCTL codes supported by the UART driver.

  4. Adjusting Timeouts: You can adjust the timeouts for the serial port using the SetCommTimeouts function. Setting the ReadIntervalTimeout, ReadTotalTimeoutMultiplier, and ReadTotalTimeoutConstant to appropriate values might help in reducing the latency.

Here is an example of how you might adjust the timeouts:

COMMTIMEOUTS timeouts;
timeouts.ReadIntervalTimeout = MAXDWORD;
timeouts.ReadTotalTimeoutMultiplier = 0;
timeouts.ReadTotalTimeoutConstant = 0;
SetCommTimeouts(m_hPort, &timeouts);
  1. Direct UART Buffer Access: If the above methods do not yield satisfactory results, you might consider accessing the UART buffer directly. This would involve writing a custom driver or modifying the existing driver to expose the buffer.

Given that you are only expecting two characters back, you might also consider implementing a tight loop with a small sleep interval to poll the UART buffer directly.

If these suggestions do not resolve the issue, you may need to contact Toradex technical support for more specific guidance related to the Colibri VF61 module and its serial driver implementation in Windows CE 6.0.

Please, also check if these links can help you solve your problem:

Reading the Serial Number of an USB Mass Storage Device | Toradex Developer Center.