我在 C# 中使用 System.IO.Ports.SerialPort 类。从位于不同 dll 中的帮助程序类打开串行端口时引发 UnAuthorizedAccessException。如果端口是从win表单本身打开的,则打开端口是成功的!
_portNames = new List<string>();
_portNames.AddRange(SerialPort.GetPortNames());
_serialPort = new SerialPort();
_serialPort.DataReceived += new SerialDataReceivedEventHandler(serialPort_DataReceived);
_serialPort.ErrorReceived += new SerialErrorReceivedEventHandler(serialPort_ErrorReceived);
var index = 0;
while (!_serialPort.IsOpen && index < _portNames.Count)
{
try
{
_serialPort.PortName = _portNames[index++];
_serialPort.Open();
}
catch (Exception ee)
{
_logger.Log(ee.Message, EventLogEntryType.Warning);
}
}