我的标题描述了我的问题......无法解决问题。
它是通过USB电缆连接的串行COM设备(安装了适当的驱动程序)。 此外,我可以看到系统检测到COM端口并存在于以下注册表项中: HKEY_LOCAL_MACHINE \ HARDWARE \ DEVICEMAP \ SERIALCOMM
请告知。
更新:很抱歉不必如此解释。可能我想到它为什么会发生:我的应用程序订阅了从HKLM \ HARDWARE \ DEVICEMAP \ SERIALCOMM添加/删除的值事件。并且应用程序试图在它被注意到之后立即打开端口。但是当时端口可能还没有准备好,所以这就是我得到“端口不存在”的原因。 Simply Thread.Sleep(2000)解决了我的问题。
但是这种睡眠解决方案似乎并不是一个好的解决方案。也许我应该检查其他地方的设备连接其他在注册表中?所以当它真的存在并且准备连接时我会连接到它。
感谢您的回复!喜欢stackoverflow!
答案 0 :(得分:1)
请提供“开放”的代码段。
请指定确切的错误文本和消息(例如,errno 57,errno 55等)。
请指定您的C#/ VS和OS版本
问:System.IO.Ports.SerialPort.GetPortNames说什么?
问:你是否绝对肯定该端口尚未打开并正在使用(例如,另一个应用程序)?
问:重启后会发生什么情况,然后尝试立即重新运行程序?
答案 1 :(得分:-4)
你没有给我们太多的帮助。根据您的说法,您可以尝试使用“COM1”作为com端口名称而不是“COMx”。