我有一个应用程序正在监控串行端口。只有当端口打开时,数据才会从另一端发送,但我发现重新启动计算机时会丢失一些数据。这是为什么?
该计算机运行的是 Windows XP。
答案1
这是由于 Windows 在启动时打开端口的时间很短(不到半秒)。在此过程中,所有串行端口都打开,以检测鼠标等输入设备。
解决方案是简单地告诉 Windows 不要这样做,这样你就不会因为没有收到数据而丢失数据。我们可以通过修改boot.ini
并确保我们正在使用/fastdetect
开关来做到这一点。但是,在大多数情况下,它已经打开了,因为它在 Windows 设置中默认启用。我找到了解决方案这里,文章还包括有关NT和9x的信息(有不同的解决方案)。
答案2
我会再三检查您的 CTS 是否已正确设置和处理(具体来说,两端都知道它们应该使用硬件流量控制)。很少有人能做到这一点,甚至很少有传感器有足够的缓冲区来在机器重启时存储所有结果,因此即使流量控制正常工作,传感器也很可能丢弃一些数据(最旧或最新,取决于其设计),因为您的机器重启和重新确认 CTS 的时间太长。
答案3
还有一个命令行工具如果您想避免手动编辑 boot.ini 文件,可以禁用注册表中选定的 com 端口上的扫描。