从bluetoothdevice获取错误的串口名称(c#)
要从系统中获取所有可用的串行端口,请使用以下命令。
SerialPort.GetPortNames
它适用于主板串口,但使用蓝牙设备我得到了错误的端口名。
例如:有时COM70或COM7ö代替COM7。 它总是1个字母。
任何建议?
PS:我在Windows 7 PPS中使用最新的Visual Studio Express:切断最后一个字母的脏黑客不起作用,因为我不知道哪一个是蓝牙串口(有各种蓝牙键或设备,它改变了数量尝试各种棍子后,我到达COM10,ergo COM100或COM10f
编辑:我正在使用的代码。 阅读regestry,但仍然是同样的问题。
RegistryKey myRegistry = Registry.LocalMachine.OpenSubKey("Hardware\\DeviceMap\\SerialComm"); foreach (string valuename in myRegistry.GetValueNames()) { if (myRegistry.GetValue(valuename) is String) { if (valuename.Contains("BthModem")) { richTextBox1.AppendText(">" + myRegistry.GetValue(valuename) + "<" + Environment.NewLine); } } }
通常,第二个或第三个请求正在使用类似的结果
COM11ᯋ<COM10S <COM11 <COM10 <COM11 <COM10 <
怎么可能?
这已被报告为非空终止字符串的错误 :
你可以手动走登记册吗?
HKLM\Hardware\DeviceMap\SerialComm
您可以利用WMI查询系统的串行端口,包括蓝牙设备和USB转串口设备添加的端口。 也许这样你就不会遇到这个问题。 请参阅CodeProject 。
我有同样的问题。 无论如何,SerialPort.GetPortNames基本上都使用了注册表 – 这两种方法似乎都不适用于蓝牙。
我目前使用的解决方法是遍历第一个X com端口并查看它们是否存在,这几乎不优雅。 MS:失败。