一两年前,我在 Windows 8 或 Windows 8.1 中编写了一个简单的程序,它提供 Arduino Uno 和我的 C# Form 应用程序之间的串行端口连接。首先,我检查了 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 教育版进行全新安装。当我运行这个项目时,我意识到该程序没有找到任何打开的 com 端口。它不会进入 foreach 循环,只是 System.IO.Ports.SerialPort.GetPortNames() 不会返回任何端口名称。 我做了一些研究并阅读了有关 Windows 10 中这种情况的问题。 人们给出了关于串行连接的完全不同的解决方案。 我不想重写整个项目。那么有没有人知道这个问题?有什么简单的解决方案吗?
最佳答案
您确定升级到 Windows 10 后串口本身工作正常吗?
- 它是否出现在设备管理器中?
- 它是否出现在
HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM
下的注册表中(SerialPort.GetPortNames() 获取其信息的地方)?
有趣的是,我维护了一个使用 SerialPort.GetPortNames() 来枚举串行端口的软件,它在 Windows 10 上运行良好。
关于C# SerialPort GetPortNames 在 Windows 10 上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35561349/