Я работаю в программе C /C ++, которая общается с устройством RS232.
Порт открывается с использованием CreateFile () < /p>
hComm = CreateFile(DevPath, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL);
< /code>
Тогда порт настраивается с использованием setupcomm (), setcommstate () и setcommmimeouts () без аппаратного управления и бодрата из бод и тайм -аутов 115200, как показано здесь: < /p>
cTimeouts.ReadIntervalTimeout = MAXDWORD;
cTimeouts.ReadTotalTimeoutConstant = 1;
cTimeouts.ReadTotalTimeoutMultiplier = 0;
cTimeouts.WriteTotalTimeoutConstant = 40;
cTimeouts.WriteTotalTimeoutMultiplier = 1;
< /code>
порт закрыт с помощью BloseHandle () < /p>
CloseHandle(hComm);
< /code>
Это не система в реальном времени, но должна быть очень быстрой, и после того, как я заметил некоторые задержки, я измерил, что инструкция BloseHandle () занимает всегда более 100 мс, что является огромным количеством времени, учитывая, что открытие и настройка порта занимает всего 20 мс. или брандмауэр в тестовой машине (автономный).
[*] Я использую Visual Studio на совершенно нового компьютера на основе Intel Core-I5, работающего в Windows 10.
[*] USB-устройстве FTDI (виртуальное COMPPORT)
>
нет данных. /> Я пытался собрать аналогичную программу в Linux, и близкое время сокращается до 25 мс < /strong>.
Я также пытался использовать физическое соединение RS232, и близкие времена превращаются в 1 мс < /strong>, поэтому я предполагаю, что это происходит от драйвера FTDI. Я что -то упускаю?
Кто -нибудь испытал что -то подобное? < /P>
Подробнее здесь: https://stackoverflow.com/questions/679 ... ot-of-time
Закрытие COM -порта FTDI с Close Handle () занимает много времени ⇐ C++
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение