Страницы

Поиск по вопросам

вторник, 30 октября 2018 г.

Проверка наличия COM порта

Как проверить подключён 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")
(как делаете это вы).
Но отлова исключений всё равно не избежать, т. к. порт может появиться или исчезнуть сразу после проверки.

Комментариев нет:

Отправить комментарий