Windows 7中的串行端口输出缓冲区大小

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

Windows 7 SP1中,内置的16550串行端口的行为就像没有输出缓冲区一样。 看来写块直到数据从端口输出。 如果有缓冲区,它甚至比设备pipe理器(在COM1的高级设置中)中设置的16个字节小。 SetupComm函数让我指定input和输出缓冲区的build议大小。 但是,输出缓冲区大小似乎没有改变任何行为,并且GetCommProperties始终将dwCurrentTxQueue字段设置为零。 SetupComm唯一可以做的是增加input缓冲区的大小。

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

你最好的选择是使用重叠的I / O,并自己处理缓冲。