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

本文关键字:Open 抛出异常 SerialPort 不存在 COMx quot 端口 | 更新日期: 2023-09-27 18:01:39

我的标题描述了我的问题…什么也解决不了。

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

请建议。

更新:很抱歉没有解释得那么清楚。也许我知道为什么会发生这种情况:我的应用程序订阅了从HKLM'HARDWARE'DEVICEMAP'SERIALCOMM添加/删除值的事件。应用程序在被发现后立即试图打开端口。但是那个时候port可能还没有准备好,所以我得到了"The port doesn't exist"。simple Thread.Sleep(2000)解决了我的问题。

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

感谢您的回复!爱stackoverflow !

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

  1. 请提供你的"open"的代码片段

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

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

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

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

  6. 问:如果你重新启动,然后尝试立即重新运行你的程序会发生什么?

你没有给我们太多线索。根据您所说的,您可以尝试使用"COM1"作为com端口名称,而不是"COMx"。