4

Unix 串行端口有一个大的输出缓冲区。只要缓冲区中有空间,写调用就会立即返回。当没有足够的空间时,阻塞写入会一直等待,直到缓冲区被清空到某个低级别。

在 Windows 7 SP1 中,内置 16550 串行端口的行为就像没有输出缓冲区一样。在数据从端口输出之前,似乎写入阻塞。如果有缓冲区,它甚至比设备管理器中设置的 16 字节(在 COM1 的高级设置中)还要小。SetupComm函数让我可以指定输入和输出缓冲区的推荐大小。但是,输出缓冲区大小似乎没有改变任何行为,并且GetCommProperties总是将 dwCurrentTxQueue 字段设置为零。SetupComm 唯一能做的就是增加输入缓冲区的大小。

4

1 回答 1

1

SetupComm 的文档特别允许设备驱动程序忽略请求的值。

最好的办法是使用重叠 I/O 并自己处理缓冲。

于 2011-10-25T01:01:37.297 回答