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

时间:2015-06-28 21:12:40

标签: c# arduino serial-port

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

Arduino内部的编程工作已经完成,但C#编程正在给我带来麻烦。

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

  

System.dll中出现未处理的“System.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更改为其他端口,这是针对类似问题提供的主要解决方案之一,但我仍然得到相同的结果。

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

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