【发布时间】:2011-10-24 19:43:31
【问题描述】:
Unix 串行端口有一个大的输出缓冲区。只要缓冲区中有空间,写调用就会立即返回。当没有足够的空间时,阻塞写入会一直等待,直到缓冲区被清空到某个低级别。
在 Windows 7 SP1 中,内置 16550 串行端口的行为就像没有输出缓冲区一样。在数据从端口输出之前,似乎写入阻塞。如果有缓冲区,它甚至比设备管理器中设置的 16 字节(在 COM1 的高级设置中)还要小。 SetupComm 函数让我可以指定输入和输出缓冲区的推荐大小。但是,输出缓冲区大小似乎没有改变任何行为,GetCommProperties 总是将 dwCurrentTxQueue 字段设置为零。 SetupComm 唯一能做的就是增加输入缓冲区的大小。
【问题讨论】:
-
机器很久没装串口了。这是一个真正的端口还是实际上是一个模拟器?查看设备管理器中的驱动程序。
-
是的,它是PC主板上的真正串口。这就是我所说的“内置16550串口”的意思。 16550是一种UART芯片,内置端口通常兼容。
标签: windows winapi serial-port serial-communication