2011-05-13 100 views
0

我在窗口看到一些非常奇怪的行为,关于我的COM缓冲区。Windows不会刷新COM缓冲区

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

这里是奇数部分:

我能够成功地写出了9600端口和38400端口之一。第二个38400端口似乎在缓冲数据。我用超级终端连接到这个端口,并看到在工作端口上,我立即得到一个响应,并在“怪异”的端口,我只有当我关闭我的应用程序时才得到数据...

有没有其他人经历过这个?你是如何解决这个问题的?

+0

可能重复的[如何清除串行缓冲区?](http://stackoverflow.com/questions/5453205/how-to-clear-serial-buffer) – sehe 2011-05-13 09:30:52

+0

不是重复的 - 这个问题是关于阅读,而不是写作。 – MSalters 2011-05-13 12:08:58

回答

0

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

检查“奇怪”连接两端的流量控制设置。当流量控制不匹配时,我见过这样的奇怪事情。关闭端口的动作会清除这些位并允许缓冲的数据流动。

0

在FTDI芯片上工作了一下之后,我建议您查看每个端口的高级驱动程序设置。该驱动程序支持缓冲和延迟控制,以便让您在高吞吐量和低延迟之间妥协。因此,检查工作的设置,并使用相同的设置(如果它们不相同)。

在附注中,通过使用FTDI:自己的API,您不必跟踪COM端口重新分配等。这个API与普通的Win32非常相似,但是暴露了更多的配置选项。

+0

非常好,但应用程序完成。如果我需要改变任何我可能会使用它的东西。谢谢。 – RedX 2011-05-15 21:20:26