0

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

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

请指教。

更新:很抱歉没有像它必须的那样具有解释性。可能我知道为什么会发生这种情况:我的应用订阅了从 HKLM\HARDWARE\DEVICEMAP\SERIALCOMM 添加/删除值的事件。应用程序在注意到它后立即尝试打开端口。但是那个时候端口可能还没有准备好,所以这就是为什么我得到“端口不存在”的原因。只需 Thread.Sleep(2000) 解决了我的问题。

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

谢谢您的反馈!喜欢堆栈溢出!

4

2 回答 2

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

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

  3. 请指定您的 C#/VS 和操作系统版本

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

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

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

于 2011-07-08T20:54:05.137 回答
-4

你没有给我们太多继续下去的机会。根据您所说,您可以尝试使用“COM1”作为 com 端口名称而不是“COMx”。

于 2011-07-08T19:57:11.100 回答