我正在开发一个可以与串口通信的应用程序,在我的开发机器上,我运行的是Vista,而这个串口是一个蓝牙连接。有时,串口会陷入一种状态,我的应用程序不能再连接到它。在.net中,我得到一个IOException,消息显示为"Element not found“。
我试着重启应用程序,连接其他应用程序(像HyperTerm这样的通信客户端),但都没有用。我找不到任何更具体的错误消息,机器的事件日志中也没有记录任何内容。设备管理器告诉我端口“工作正常”。
有没有办法找出哪个进程和/或.dll拥有串行端口,和/或强制关闭端口?
如果有什么不同的话,我的应用程序是在C#中,但从结构上讲,使用"using“语句打开和关闭端口并不方便。
谢谢,安迪
发布于 2008-12-31 10:06:48
据我所知,你不能关闭一个你没有句柄的串行端口。我对蓝牙串行端口的经验是,它们最终会在连接时映射到不同的COM端口号,有时在断开连接时会留下虚假的COM端口。例如,我当前没有连接蓝牙设备,但是如果我进入设备管理器,我看到总共有11个COM端口被列为蓝牙串行端口。每个端口上的属性都显示设备正在工作和可用,我通常可以打开这些端口,尽管偶尔会出现故障。我解决这个问题的方法是通过properties / advanced /com端口号强制连接的设备使用com端口号。我不确定这个问题是与驱动程序相关(这里是IVT公司),还是Windows管理蓝牙串口的方式有问题。
抱歉,我不能再帮上忙了。
https://stackoverflow.com/questions/402356
复制相似问题