C# SerialPort#Open() метод генерирует ArgumentException из-за имени порта?
На моей локальной машине,
- 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
,
То есть,
Указанное имя порта не начинается с COM/com или не разрешается в допустимый последовательный порт.
Кто-нибудь знает, почему это происходит?
1 ответ
Решение
Взгляните на http://social.msdn.microsoft.com/Forums/en/csharpgeneral/thread/35954173-2eeb-46af-bb3e-86840c6b5484
Кажется, проблема была в том, что эти COM-порты были сопоставлены с чем-то другим, и в ответ выдает эту странную ошибку.
У меня была точно такая же проблема. Я обнаружил, что у меня была установка принтера для Windows, чтобы использовать тот же порт. Как только я изменил порт в настройках принтеров, SerialPort.Open() заработал.