2

我正在开发一个与串行端口对话的应用程序,在我的开发机器上,我正在运行 Vista,并且该串行端口是蓝牙连接。有时,串行端口会陷入我的应用程序无法再连接到它的状态。在 .net 中,我收到一条 IOException,其中显示一条消息“未找到元素”。

我尝试重新启动应用程序,连接其他应用程序(如 HyperTerm 之类的通信客户端),但没有任何帮助。我找不到任何更具体的错误消息,并且没有任何内容记录到机器的事件日志中。设备管理器告诉我端口“工作正常”。

有没有办法找出哪个进程和/或 .dll 拥有串行端口,和/或强制关闭端口?

如果有什么不同的话,我的 App 是用 C# 编写的,但是在结构上,使用“using”语句打开和关闭端口并不方便。

谢谢,安迪

4

1 回答 1

2

据我所知,您无法关闭没有句柄的串行端口。我对蓝牙串行端口的体验是,它们最终会在连接时映射到不同的 COM 端口号,有时在断开连接时会留下虚假的 COM 端口。例如,我目前没有连接蓝牙设备,但是如果我进入设备管理器,我看到总共有 11 个 COM 端口被列为蓝牙串行端口 每个端口上的属性都显示设备工作且可用,我可以尽管我偶尔会出现故障,但通常会打开这些端口。我的解决方法是通过属性/高级/COM端口号强制连接设备的COM端口号. 我不确定问题是否与驱动程序相关(在这种情况下为 IVT corp)或 Windows 管理蓝牙串行端口的方式有问题。

抱歉,我无法提供更多帮助。

于 2008-12-31T10:06:48.187 回答