因此,当我尝试使用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();
}
}
}
最佳答案:
我想到了。
由于某些原因,Adobe PDF被分配给COM1。如果我将Adobe移至COM2,那么一切都很好。我想是因为Adobe没有积极使用该端口,所以这就是为什么我不会“拒绝访问”的原因。
我不知道为什么Adobe PDF完全需要一个串行端口。
感谢意见/投票。