C#SerialPort#Open()方法因为端口名而抛出ArgumentException?

时间:2012-07-23 01:29:01

标签: c# serial-port argumentexception virtual-serial-port

在我的本地计算机上,

  • Windows XP
  • 端口(COM& LPT)
    • COM3
    • RIM虚拟串行端口v2(COM4)
    • RIM虚拟串行端口v2(COM5)

以下代码,

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO.Ports;
using System.Threading;

namespace OpenSerialPortTest
{
    class Test
    {
        static void Main(string[] args)
        {
            foreach (String serialPortName in SerialPort.GetPortNames())
            {
                SerialPort serialPort = new SerialPort(serialPortName);
                try
                {
                    serialPort.Open(); // Line 19
                    Console.WriteLine(serialPort.PortName);
                }
                catch (Exception ex1)
                {
                    Console.WriteLine(ex1);
                    try
                    {
                        serialPort.Close();
                    }
                    catch (Exception ex2)
                    {
                        Console.WriteLine(ex2);   
                    }
                }
            }
            Console.ReadLine();
        }
    }
}

将抛出以下ArgumentException

enter image description here

即,

  

给定的端口名称不以COM / com开头或不解析   一个有效的串口。

有人知道为什么会这样吗?

1 个答案:

答案 0 :(得分:0)

看看 http://social.msdn.microsoft.com/Forums/en/csharpgeneral/thread/35954173-2eeb-46af-bb3e-86840c6b5484

似乎问题是那些COM端口被映射到其他东西并且在响应中给出了这个奇怪的错误。

  

我有完全相同的问题。我发现我有一个Windows打印机设置使用相同的端口。一旦我在打印机设置中更改了端口,SerialPort.Open()就可以工作。