【发布时间】:2012-10-09 20:08:16
【问题描述】:
我正在开发一个 C++ Win32 应用程序,我试图在本质上“自动检测”设备是否已插入其中一个 RS232 端口,然后是否已断开连接。
检查连接的设备很容易,因为我的用例允许我假设这个特定线程将是第一个尝试启动与端口通信的线程。我能够每分钟左右扫描一次可用端口,一旦我找到一个带有设备的端口,我标记该端口有一个设备,关闭端口,然后设置一个事件,以便实际执行的进程使用设备知道它现在可以连接到该端口。
断开连接检测是我遇到麻烦的地方。当我扫描连接的设备时,我实际上可以将数据发送到端口,以确保如果有设备,它就是我正在寻找的特定设备。但是一旦它被连接,那个端口就已经被另一个进程打开了,我不能再从检测线程打开那个端口。所以我正在寻找一种方法以“侦听模式”或类似的方式打开端口,以便我可以查看设备是否仍然存在。
我偶然发现了一些关于观看 DSR 或 DTR 线路或其他内容的事情……但找不到更多内容或实际操作方法。
有什么建议吗?
编辑:看来我需要再澄清一点...为了检测断开连接,我无法以任何方式将数据发送到 RS232 端口 . 另外,我不能假设另一个应用程序实际上打开了端口。该设备可能已物理连接,但没有打开连接......但我仍然不能冒险向它发送数据。我希望有一种方法可以检查该端口是否仍有电源或类似的东西。
【问题讨论】:
标签: c++ winapi serial-port