【发布时间】:2013-03-29 00:53:57
【问题描述】:
我正在使用 C# 的 SerialPort 类通过 USB COM 端口进行通信。 SerialPort 可以正常打开并正常工作,直到发生异常。当我尝试通过我的应用程序使用端口时出现异常后,我得到另一个异常:“端口'COM6'不存在。”在关闭应用程序、重新启动 Visual Studio 等后,我不断收到异常。恢复端口的唯一方法是重新启动计算机。
有没有人看到这个问题并知道解决方法?我需要这个更耐用。
【问题讨论】:
-
一个问题:为什么会出现异常?你的代码发生了什么?
-
通讯超时。我也在对串行设备进行编程,并且正在调试它。通信超时是由串行设备中的编程错误引起的,但错误的通信不应使端口崩溃。我的错误实际上为通信强化创造了一个很好的测试用例。
-
在将 USB 用作类似的 COM 设备时,我肯定看到过这个问题。在低级别仍然必须有一个端口打开的句柄,因此当您遇到未处理的异常时,操作系统在您重新启动之前不会取回设备。有没有办法在 finally 块中捕获异常并关闭端口?此外,它可能会将 USB 设备重新分配给新的 COM 端口,因此您可能必须在更高的端口上检测它。
-
那里有很多糟糕的 USB 驱动程序。您正在检查串行设备,但很可能是导致超时的驱动程序。之后麻烦不断。把它扔掉,从不同的制造商那里再买一个。
-
@JakeAnderson:设备管理器仍将其报告为 COM6。我尝试了几个不同的 COM,但它没有移动。
标签: c# serial-port usbserial