Как проверить подключён COM-порт или нет?
Например, пользователь выбрал COM 3, но во время работы этот порт был отключён.
Как грамотно выполнить проверку присутствует ли COM-порт и возможно ли его открыть?
На данный момент делаю вот так(пример):
SerialPort port = new SerialPort("COM 8");
string[] allport = SerialPort.GetPortNames();
bool stat = false;
for (int i = 0; i < allport.Length; i++)
{
if (allport[i] == port.PortName)
{
stat = true;
break;
}
}
if (stat)
port.Open();
else
Console.WriteLine("{0} отключен.", port.PortName);
Но уверен, что данною операцию можно реализовать грамотней.
Ответ
Насколько я понимаю, порт может быть отключён в любой момент. Поэтому я бы делал так: работал с портом как обычно, а при приходе IOException говорил бы пользователю о проблемах при коммуникации с портом.
Проверять можно через
using System.IO.Ports;
var port = new SerialPort("COM99");
port.Open(); // бросает исключение, если порта нет
или
SerialPort.GetPortNames().Contains("COM99")
(как делаете это вы).
Но отлова исключений всё равно не избежать, т. к. порт может появиться или исчезнуть сразу после проверки.
Комментариев нет:
Отправить комментарий