我在一年或两年前在Windows 8或Windows 8.1中创建了一个简单的程序,它提供了Arduino Uno和我的C#Form Application之间的串行端口连接。首先,我检查pc中所有打开的COM端口,并获取这些端口以进行连接选择。要做到这一点,工作代码就像下面给出的那样;
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); }
}
}
我没有打开这个程序很长一段时间,现在我格式化我的电脑并使用Windows 10 Education进行全新安装。当我运行这个项目时,我意识到该程序没有找到任何开放的COM端口。它不会进入foreach循环,只需System.IO.Ports.SerialPort.GetPortNames()不返回任何端口名称。 我做了一些研究,并在Windows 10中阅读了类似这种情况的问题。 人们提供了完全不同的串行连接解决方案。 我不想重写整个项目。那么有没有人知道这个问题呢?对此有什么简单的解决方案吗?
答案 0 :(得分:0)
升级到Windows 10后,您确定串口本身是否正常工作吗?
$(#linkid).on('click',function(){
url='url/path/to/controller/method';
$('#targetdiv').load(url);
}
下的注册表中(SerialPort.GetPortNames()获取其信息的位置)?有趣的是,我维护使用SerialPort.GetPortNames()枚举串口的软件,它在Windows 10上运行正常。
答案 1 :(得分:0)
这是一个老线程,但由于它没有解决,因为我刚刚在新的Win10笔记本电脑上遇到过同样的问题,我想我会分享我的解决方案。我终于发现我必须从Silicon Labs下载VCP驱动程序,在运行x64安装程序后,一切正常。 我不认为我必须在我的Win7笔记本电脑上这样做,所以这对Win10来说很不方便。
答案 2 :(得分:0)
Мy问题(Win10)是从USB删除设备时,相应的端口没有从列表中消失(SerialPort.GetPortNames(),C#) 而且它甚至保留在寄存器中。 我看到了:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM]
"\\Device\\USBSER000"="COM11"
"\\Device\\USBSER002"="COM53"
"\\Device\\VCP0"="COM4"
"\\Device\\USBSER001"="COM11"
我了解问题何时发生,但我不知道如何绕过它:当我占用端口并通过USB关闭设备时,端口名称保留在寄存器和Windows返回的列表中。