1

我有一个 USB 设备作为串行端口插入 com3 上。我用它来打开端口:

string[] ports = SerialPort.GetPortNames();
foreach (string portName in ports)
{
     try
     {
          var port = new SerialPort(portName, 256000);
          port.Open();
     }
     catch(Exception ex)
     {
          Console.WriteLine(ex.Message);
     }
}

我在这里得到一个 io 异常“端口 com3 不存在”。我使用VS2012 + Win7x64Pro。我尝试重新启动 Windows,一切正常,但只有 1 次。几天前,我在 VS2012 + Win8 上运行了这个项目,一切都很好。效果很好,没有发现异常。我发现了大量类似的问题,但这个问题没有任何解决方案。有关更多信息:作为 USB 设备,我使用带有驱动程序版本“ble-1.1.1-71”的 BlueGiga BLED112。请解释我在哪里以及我做错了什么。

4

1 回答 1

1

蓝牙通常会创建无法实际打开的虚拟虚拟串行端口。在更糟糕的情况下,它已配对,并且驾驶员在未能打开之前花一分钟寻找不存在的蓝牙配件。

其他串行设备可能无缘无故地对打开响应不佳(打开确实会改变几个串行引脚上的电压)。

GetPortNames解决方法:永远不要循环打开所有返回的串口。而是只打开您的设备所连接的那个。(您可以通过检查设备描述符字符串来了解这一点,或者在最坏的情况下,询问用户列出的端口中哪个是正确的)

也许您只是想使用蓝牙收音机?在这种情况下,您使用了错误的方法。与蓝牙关联的串行端口用于与将自身标识为 SPP(串行端口配置文件)的设备配对时使用。不是为了操纵收音机。为此,您使用 Sockets API。请参阅使用 Windows 套接字进行蓝牙编程。在 C# 中,您需要使用包装这些内容的第三方库之一

于 2013-05-08T20:19:05.097 回答