在我的本地機器上,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或啓動不會解析爲 有效的串行端口。
有人知道爲什麼會發生這種情況嗎?
檢查端口是否已經先打開! – 2012-07-23 01:33:01
@AhmedGhoneim,'IsOpen'返回'false' – user1329572 2012-07-23 01:33:18
很酷,所以請在打開它之前調用'serialPort.Close();'試試吧:) – 2012-07-23 01:42:17