【问题标题】:Serial port shown in device manager but unable to access/found?设备管理器中显示串行端口但无法访问/找到?
【发布时间】:2014-06-10 15:37:32
【问题描述】:

我已经安装了 Arduino 虚拟 USB 串行端口驱动程序,它在我的设备管理器中显示为 COM4。我通过在 powershell 中列出所有可用的串行端口来仔细检查

> [System.IO.Ports.SerialPort]::getportnames()
COM1
COM4

但是,当我尝试对串行端口进行回显时,它说它不存在

> echo helloworld > COM4
The system cannot find the file specified.

我正在尝试将一些固件上传到我的 arduino,但我一直被端口拒绝。尝试不同的 USB 会给我同样的结果。我写了一个小程序测试串口,报错:

串口“COM4”不存在。

【问题讨论】:

    标签: serial-port arduino


    【解决方案1】:

    Windows 上串行端口的设备名称是\\.\COMn,其中n 是端口号。设备驱动程序可以模拟 DOS 设备名称,如果它选择这样做的话,就像“COM4”一样,在设备驱动程序代码中非常简单。但这种情况越来越少见,尤其是对于大于 2 的端口号,尤其是对于大于 4 的端口号。因此,看到您的 echo 命令失败并不罕见。

    一个串口不能被共享,它只能被一个进程打开一次,其他所有试图打开它的人都会得到失败的 ERROR_ACCESS_DENIED 错误代码。必然地,串行端口位于 OSI 模型的最底层,没有任何协议可以仲裁对端口的访问。或者换句话说,操作系统没有指导谁应该获取端口接收的数据。只能有一个候选者,即首先打开端口的进程。因此,您收到的错误消息并不少见,您必须确保没有其他人在使用该端口。包括Arduino串口监视器。

    【讨论】:

    • 谢谢,这解释了为什么重新启动计算机可以解决问题。非常详尽的解释
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-10
    • 1970-01-01
    • 1970-01-01
    • 2017-09-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多