要从系统获取所有可用的串行端口,我使用以下命令。
SerialPort.GetPortNames
它适用于主板串行端口,但使用蓝牙设备时我得到错误的端口名。
例如:有时我会得到 COM70 或 COM7ö,而不是 COM7。总是 1 个字母太多。
有什么建议吗?
PS:我在 Windows 7 中使用最新的 Visual Studio Express
PPS:剪切最后一个字母的肮脏黑客不起作用,因为我不知道哪个是蓝牙串行端口(使用各种蓝牙棒或设备,它会改变端口号),并且在尝试了各种棒之后,我到达了COM10,因此 COM100 或 COM10f
编辑:我现在正在使用的代码。看了注册表,还是同样的问题。
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ᯋ
怎么可能?
这已经是报告为错误 https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=236183使用非空终止字符串:
您可以手动遍历注册表吗?
HKLM\Hardware\DeviceMap\SerialComm
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)