Windows不会刷新COM缓冲区

时间:2011-05-13 09:23:46

标签: c++ windows serial-port virtual-serial-port

我在Windows上看到一些关于我的COM-Buffers的奇怪行为。

我使用3个USB-Serial Converter和FTDI芯片。我用CreateFile打开com端口,一切正常。除波特率外,所有3个端口都具有相同的配置。 2工作在38400,一个工作在9600。

这是奇怪的部分:

我能够成功写出9600端口和38400端口之一。第二个38400端口似乎在缓冲数据。我已经使用Hyperterminal连接到这个端口,并且看到在工作端口上我立即得到响应并且在“奇怪”端口上我只在我关闭我的应用程序时获取数据...

还有其他人经历过这个吗?你是怎么解决的?

2 个答案:

答案 0 :(得分:0)

这是在黑暗中拍摄的......但是。

检查“怪异”连接两端的流量控制设置。当流量控制不匹配时,我已经看到过类似的奇怪事情。关闭端口的操作会清除位并允许缓冲的数据流动。

答案 1 :(得分:0)

对FTDI芯片进行了一些工作后,我建议您查看每个端口的高级驱动程序设置。该驱动程序支持缓冲和延迟控制,以便您在高吞吐量和低延迟之间进行折衷。因此,请检查有效的设置,并将其用于不适用的设置(如果它们不相同)。

另一方面,通过使用FTDI:自己的API,您不必跟踪COM端口重新分配等。 API与普通的Win32非常相似,但公开了更多的配置选项。