“端口COMx不存在” - 在SerialPort的Open()上抛出异常

时间:2011-07-08 16:24:03

标签: c# exception serial-port uart

我的标题描述了我的问题......无法解决问题。

它是通过USB电缆连接的串行COM设备(安装了适当的驱动程序)。 此外,我可以看到系统检测到COM端口并存在于以下注册表项中: HKEY_LOCAL_MACHINE \ HARDWARE \ DEVICEMAP \ SERIALCOMM

请告知。

更新:很抱歉不必如此解释。可能我想到它为什么会发生:我的应用程序订阅了从HKLM \ HARDWARE \ DEVICEMAP \ SERIALCOMM添加/删除的值事件。并且应用程序试图在它被注意到之后立即打开端口。但是当时端口可能还没有准备好,所以这就是我得到“端口不存在”的原因。 Simply Thread.Sleep(2000)解决了我的问题。

但是这种睡眠解决方案似乎并不是一个好的解决方案。也许我应该检查其他地方的设备连接其他在注册表中?所以当它真的存在并且准备连接时我会连接到它。

感谢您的回复!喜欢stackoverflow!

2 个答案:

答案 0 :(得分:1)

  1. 请提供“开放”的代码段。

  2. 请指定确切的错误文本和消息(例如,errno 57,errno 55等)。

  3. 请指定您的C#/ VS和OS版本

  4. 问:System.IO.Ports.SerialPort.GetPortNames说什么?

  5. 问:你是否绝对肯定该端口尚未打开并正在使用(例如,另一个应用程序)?

  6. 问:重启后会发生什么情况,然后尝试立即重新运行程序?

答案 1 :(得分:-4)

你没有给我们太多的帮助。根据您的说法,您可以尝试使用“COM1”作为com端口名称而不是“COMx”。