【发布时间】:2011-11-15 00:26:37
【问题描述】:
环境:WinXP; PowerBuilder 11.5(虽然可能不相关,因为这部分几乎完全是 WinAPI 调用)
我的应用程序打开一个 COM 端口以使用重叠的方法调用进行写入。打开应用程序时打开端口。该应用程序始终使端口保持打开状态。
有时,即使应用仍在发送数据,连接的设备也会停止接收数据。该应用程序不会收到任何错误消息。停止并重新启动应用程序并不能解决它。重新启动计算机并不能解决它。但是,通过超级终端连接可以解决此问题。
这个特殊的设备打印条形码标签。该应用程序将打印得很好,然后突然,它不会打印。关闭应用程序;打开并与超级终端连接;断开和关闭超级终端;打开应用程序。它再次正常工作......一段时间。 (我在其他也通过 COM 端口通信的设备上也遇到过类似的问题,所以我知道这不是设备本身。)
我可以在网上找到的最接近的类似问题是http://www.eggheadcafe.com/microsoft/Windows-XP-Hardware/30829577/com1-not-behaving.aspx,它谈到了 IRQ 冲突并且没有提供解决方案。我只能猜测我的问题是相似的。
有谁知道超级终端可能会做些什么来解决问题?
【问题讨论】:
-
强有力的指标是你的握手错误。就像在设备需要 RTS+CTS 或 Xon/Xoff 时使用 none。
-
这当然是可能的。但这样的事情在某些时候会起作用吗?该应用程序运行了一段时间,然后突然停止。另外,使用 CreateFile 方法时如何指定握手方法? msdn.microsoft.com/en-us/library/windows/desktop/…
-
您在 DCB 中使用 SetCommState() 指定它
-
Hans Passant,您能否将其发布为答案,以便我将其标记为已接受?看来指定握手已经解决了这个问题。
-
请张贴并接受您自己的答案。请提及您更改的 DCB 设置。
标签: winapi serial-port port