我正在开发一个与串口通信的应用程序,在我的开发机器上,我正在运行Vista,而该串口是蓝牙连接。有时,串行端口会陷入我的应用程序无法再连接到它的状态。在.net中,我收到一条IOException,其中包含“未找到元素”的消息。
我尝试重新启动应用程序,连接其他应用程序(像HyperTerm这样的通信客户端),但没有任何帮助。我找不到任何更具体的错误消息,并且没有任何内容记录到计算机的事件日志中。设备管理器告诉我端口“工作正常。”
有没有办法找出哪个进程和.dll拥有串口,和/或强制端口关闭?
如果它有所不同,我的应用程序是在C#中,但从结构上来说,使用“using”语句打开和关闭端口并不方便。
谢谢, 安迪
答案 0 :(得分:2)
据我所知,您无法关闭没有句柄的串行端口。我对蓝牙串口的经验是,它们最终会在连接时映射到不同的COM端口号,有时在断开连接时会留下虚假的COM端口。例如,我目前没有连接蓝牙设备,但是如果我进入设备管理器,我看到总共有11个COM端口列为蓝牙串口这些端口上的属性显示设备为工作和可用,虽然我偶尔会失败,但我通常可以打开这些端口。我的解决方法是通过属性/高级/ COM端口号强制连接设备的COM端口号。我不确定这个问题是否与驱动程序有关(在这种情况下是IVT公司),或者是Windows管理蓝牙串口的问题。
抱歉,我无法提供任何帮助。