在c#中打开串口时出错

时间:2011-01-06 03:14:37

标签: c# .net serial-port

当我尝试使用SerialPort.Open()方法在c#应用程序中打开COM1时,我收到以下异常:

“ArgumentException:给定的端口名称不是以COM / com开头,也不是解析为有效的串口”

但是,如果我在设备管理器中禁用Com1端口,然后启用,一切正常。从那时起,没有问题。我可以运行应用程序并打开端口。但是,如果我重置PC,我会遇到同样的问题,直到我禁用然后启用。

启动计算机时,Com1似乎未打开。当Com1打开,我尝试用我的应用程序打开时,我没有得到ArgumentException。相反,我得到一个例外,即拒绝访问该端口。

我只尝试使用Windows 7计算机。我正在使用VS2010。我试过.net 3.5& 4.0。

所以,正如我所说,应用程序工作正常我重置端口。有什么想法吗?

代码(这是一个简单的测试应用程序):

public partial class Form1 : Form
{
    SerialPort port = new SerialPort();

    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        string[] ports = SerialPort.GetPortNames();

        foreach (string element in ports)
        {
            textBox1.Text = element + "\r\n";
        }
    }

    private void button1_Click(object sender, EventArgs e)
    {
        port.PortName = "COM1";
        port.BaudRate = 9600;
        port.Parity = Parity.None;
        port.DataBits = 8;
        port.StopBits = StopBits.One;
        port.Handshake = Handshake.None; // Handshake.RequestToSend;
        port.ReadTimeout = 1000;
        port.WriteTimeout = 500;
        try
        {
            port.Open();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.ToString());
        }
        button1.Text = port.IsOpen.ToString();
    }
}

}

2 个答案:

答案 0 :(得分:1)

我明白了。

Adob​​e PDF由于某种原因被分配给COM1。如果我将Adobe移动到COM2,那么一切都很好。我想,因为Adobe没有主动使用该端口,这就是为什么我没有“拒绝访问”。

我不知道为什么Adobe PDF需要一个串口。

观看/投票的谢谢。

答案 1 :(得分:1)

我禁用了comport然后再次启用!!

然后将其重命名为例如COM6!一些COM6。一些步骤是:

控制面板=>设备管理器=>串行端口(COM ... =>高级设置=>

从组合框中更改端口名称,

在我的打印机设备中删除nitro-PDF