尝试访问通信端口时拒绝C#访问

本文关键字:访问 拒绝 通信 | 更新日期: 2023-09-27 18:00:25

我正在Visual Studio中制作一个简单的Windows窗体应用程序,它将允许我控制连接到Arduino的LED条的亮度设置。

Arduino内部的编程已经很好了,但C#编程给我带来了麻烦。

当试图通过端口发送字符串信息时,我收到以下消息:

类型为"System"的未处理异常。System.dll中出现UnauthorizedAccessException。附加信息:拒绝访问端口"COM3"。

这是一段给我带来麻烦的代码:

  private void trackBar1_Scroll(object sender, EventArgs e)
    {    
        String color = trackBar1.Value.ToString();
        System.IO.Ports.SerialPort myPort = new System.IO.Ports.SerialPort("COM3");
        if (myPort.IsOpen == false){
         //if not open, open the port
            myPort.Open(); // Error is shown here.
        }
        if (myPort.IsOpen){
            myPort.WriteLine(color);
        }
    }

我没有包括任何关闭端口的内容,因为首先我想让它发挥作用,但我不明白发生了什么。我很确定没有其他应用程序在使用该端口;Arduino通过USB连接,以便接收电源,但除此之外,它不会从任何其他进程接收或发送电源。

我尝试过将端口从COM3更改为其他端口,这是针对类似问题给出的主要解决方案之一,但仍然得到了相同的结果。

谢谢你的帮助。

尝试访问通信端口时拒绝C#访问

COM端口上出现拒绝访问错误的最常见原因是COM端口已被其他程序打开。您可以使用portmon来查看是哪个程序。它很可能是您自己的程序,因为您从未正确关闭端口。

这在N.K的一条评论中得到了回答:确保串行监视器不工作。