C#SerialPort GetPortNames不';我不能在windows 10上工作
一两年前,我在Windows8或Windows8.1中编写了一个简单的程序,在Arduino Uno和我的C#Form应用程序之间提供串行端口连接。首先,我检查了pc中所有打开的com端口,并获取这些端口以供选择连接。要做到这一点,工作代码如下所示:C#SerialPort GetPortNames不';我不能在windows 10上工作,c#,arduino-uno,serial-communication,C#,Arduino Uno,Serial Communication,一两年前,我在Windows8或Windows8.1中编写了一个简单的程序,在Arduino Uno和我的C#Form应用程序之间提供串行端口连接。首先,我检查了pc中所有打开的com端口,并获取这些端口以供选择连接。要做到这一点,工作代码如下所示: private void portCheck_Click(object sender, EventArgs e) { foreach (string item in System.IO.Ports.Seria
private void portCheck_Click(object sender, EventArgs e)
{
foreach (string item in System.IO.Ports.SerialPort.GetPortNames())
{
//store the each retrieved available port names into the Listbox...
if (!portBox.Items.Contains(item))
{ portBox.Items.Add(item); }
}
}
我有很长一段时间没有打开这个程序了,现在我格式化了我的计算机,并用Windows10教育进行了一次干净的安装。当我运行这个项目时,我意识到程序没有找到任何打开的com端口。它不进入foreach循环,只是System.IO.Ports.SerialPort.GetPortNames()不返回任何端口名。
我做了一些研究,并在Windows10中读到了类似这种情况的问题。
人们对串行连接给出了完全不同的解决方案。
我不想重写整个项目。有人知道这个问题吗?有什么简单的解决方案吗?升级到Windows 10后,您确定串行端口本身工作正常吗
- 它是否出现在设备管理器中
- 它是否出现在注册表中的
(从何处获取其信息)HKEY\U LOCAL\U MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM
有趣的是,我维护的软件使用SerialPort.GetPortNames()枚举串行端口,在Windows 10上运行良好。这是一个旧线程,但由于它没有解决,而且我刚刚在一台新的Win10笔记本电脑上遇到了同样的问题,所以我想分享一下我的解决方案。我最终发现我必须从Silicon Labs下载VCP驱动程序,运行x64安装程序后,一切正常。 我不认为我必须在我的Win7笔记本电脑上这样做,因此这是Win10的一个不便之处。Мy问题(Win10)是,当从USB中删除设备时,相应的端口不会从列表中消失(SerialPort.GetPortNames(),C#) 这是在登记册上保持平衡。 我明白了: 我知道问题何时发生,但我不知道如何绕过它:当我占用端口并从USB关闭设备时,端口名仍保留在寄存器和Windows返回的列表中。
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM]
"\\Device\\USBSER000"="COM11"
"\\Device\\USBSER002"="COM53"
"\\Device\\VCP0"="COM4"
"\\Device\\USBSER001"="COM11"