Я использую Win32 API для чтения данных с последовательного порта:
DWORD numRead = 0;
ReadFile(mPortHandle, mReceiveBuffer.get(), mReceiveBufferSize, &numRead, nullptr);
Этот вызов занимает очень долго : 129 мс, чтобы быть точным (измеряется через QueryPerformanceCounter).
Я провел измерения с несколькими различными аппаратными устройствами:
- USB-адаптер с набором микросхем FTDI
- USB-адаптер с набором микросхем
- PCI Express RS232 карта
- Встроенный последовательный порт материнской платы
Каждая из этих устройств дает мне точно такую же задержку: 129 мс.Таким образом, я не думаю, что это аппаратная ошибка или ошибка драйвера (каждое устройство должно использовать совершенно другой драйвер, верно?).
Я также возился с таймаутами, но это ничего не изменило.
Что еще это может быть?