У меня есть приложение, в котором я записываю данные в последовательный порт через конвертер USB в RS422. Этот конвертер подключен к моему компьютеру через USB-концентратор. Проблема, с которой я сталкиваюсь, заключается в том, что каждый раз, когда я меняю ПК, на котором я запускаю приложение, меняется имя COM-порта. Поэтому мне придется изменить это в моем коде и перекомпилировать код для запуска приложения.
В настоящее время следующий код, который я использую для инициализации последовательного порта:
if ((comport = CreateFile("\\\\.\\COM7", GENERIC_WRITE, 0,
NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL)) == INVALID_HANDLE_VALUE)
{
return false;
}
Здесь я исключительно упоминаю название COM-порта. Я хотел бы знать, есть ли API, чтобы узнать состояние COM-портов и на лету распознать COM-порт, к которому подключен мой преобразователь?
Как правильно определить все доступные последовательные порты в Windows?
Этот вопрос может помочь вам, по крайней мере, немного. Так что, вероятно, это невозможно с API, как следует из второго ответа. Последовательные порты не подключены & играть.
Таким образом, можно перечислить все порты.
Единственно возможный способ — опросить каждое устройство в списке. И подождите, пока не получите ожидаемый ответ. Это не так приятно.
РЕДАКТИРОВАТЬ:
Может быть возможно получить дружественное имя, если это то, что вы хотите.
Как получить понятное имя COM-порта в Windows?
Вместо изменения COM-порта в вашем приложении вы можете установить COM-порт для вашего кабеля из
Диспетчер устройств -> Порты -> Щелкните правой кнопкой мыши по имени кабеля -> Свойства -> Настройка порта -> Дополнительно -> Номер Com-порта (Вы можете выбрать номер порта в соответствии с приложением)
Не нужно ничего менять в вашем приложении.