2011-01-06 525 views
3

所以,我收到了以下异常,当我试图在C#应用程序中打开COM1,使用SerialPort.Open()方法:错误在C#中打开串口

“的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(); 
    } 
} 

}

+0

你能告诉我们一些代码吗? – 2011-01-06 03:43:44

回答

1

我想通了。

由于某种原因,Adobe PDF被分配给COM1。如果我将Adobe移动到COM2,那么一切都很好。我想因为Adobe没有积极使用这个端口,所以我不会得到“访问被拒绝”。

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

谢谢您的意见/投票。

1

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

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

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

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

和删除硝基PDF在我的打印机设备