2013-04-09 3 views
0

У меня есть приложение, в котором я записываю данные в последовательный порт через преобразователь USB в RS422. Этот кабель преобразователя подключается к компьютеру через USB-концентратор. Проблема, с которой я сталкиваюсь, заключается в том, что каждый раз, когда я меняю компьютер, на котором я запускаю приложение, изменяется имя COM-порта. Поэтому мне придется изменить это в своем коде и перекомпилировать код для запуска приложения. В настоящее время Ниже приведен код, я использую для инициализации последовательного порта:Логика для распознавания имени COM-порта, к которому подключен разъем USB к RS422 (для приложения Windows))

if ((comport = CreateFile("\\\\.\\COM7", GENERIC_WRITE, 0, 
     NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL)) == INVALID_HANDLE_VALUE) 
    { 
     return false; 
    } 

Здесь я только упомянуть имя COM-порта. Я хотел бы знать, есть ли API для определения статуса COM-портов и «на лету» распознать COM-порт, к которому подключен мой конвертер?

+0

Можете ли вы сохранить имя порта в каком-то конфигурационном файле? Таким образом вам не придется перекомпилировать вашу программу, просто измените текст в файле конфигурации. –

+0

Это можно сделать, но я бы хотел, чтобы это было автоматически и произошло во время процесса инициализации приложения. – vik22

ответ

1

What is proper way to detect all available serial ports on Windows? Этот вопрос может помочь вам, по крайней мере, немного. Так что, вероятно, это невозможно с API, как предполагает второй ответ. Последовательные порты не являются разъемами & play.

Таким образом, можно перечислить все порты. Единственный возможный способ, о котором я думаю, - опросить каждое устройство, которое находится в списке. И ждите, пока не получите ответ, который вы ожидаете. Это не очень приятно.

EDIT: Возможно, получится дружелюбное имя, если это то, что вы хотите. How do I get the friendly name of a COM port in Windows?

0

Вместо изменения COM-порт в приложении вы можете установить COM-порт для кабеля от

Диспетчер устройств -> Порты -> Щелкните правой кнопкой мыши ваше имя кабель -> Свойства -> Port Setting -> Advanced -> Com Port Number (номер порта в соответствии с приложением)

Не нужно ничего менять в приложении.