C# SerialPort GetPortNames 在 Windows 10 上不起作用

标签 c# arduino-uno serial-communication

一两年前,我在 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/

相关文章:

c# - 如何使用 C# 将所有特殊字符替换为字符串

c# - LINQ 和内存分配

c# - Azure 服务总线消息死信的 DeadLetter ErrorDescription 的最大长度是多少?

无法使用 Arduino Uno 使用 RF 433 MHz 发射器发送消息

c++ - arduino错误: expected ',' or '...' before numeric constant

c# - 用于使用反射编写脚本的 XML SAX 解析器

arduino - VS Code给出Arduino的标题错误?缺少官方 header ?

winapi - Win32 API : ReadFile not timing out

c++ - Windows 中的串行通信 - ClearCommError 在读取缓冲区中找不到数据

java - 来自 USB 的自定义信号