Размер выходного буфера последовательного порта в Windows 7 - PullRequest
4 голосов
/ 24 октября 2011

Последовательные порты Unix имеют большой выходной буфер. Вызовы записи возвращаются немедленно, если в буфере есть место. Когда места недостаточно, блокирующая запись ожидает, пока буфер не будет очищен до некоторого низкого уровня.

В Windows 7 SP1 встроенный последовательный порт 16550 ведет себя так, как будто нет выходного буфера. Кажется, пишет блок, пока данные не выводятся из порта. Если есть буфер, он даже меньше, чем 16 байтов, установленных в диспетчере устройств (в расширенных настройках для COM1). Функция SetupComm позволяет указать рекомендуемые размеры входных и выходных буферов. Однако размер выходного буфера, похоже, не меняет никакого поведения, и GetCommProperties всегда устанавливает поле dwCurrentTxQueue в ноль. Единственное, что может сделать SetupComm, - это увеличить размер входного буфера.

1 Ответ

1 голос
/ 25 октября 2011

Документация для SetupComm специально позволяет драйверу устройства игнорировать запрошенные значения.

Лучше всего использовать перекрывающийся ввод-вывод и самостоятельно обрабатывать буферизацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...