С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 57, средняя оценка - 4.74
TanT
эволюционирую потихоньку
466 / 464 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
#1

Определить имя/тип COM порта - C++

27.10.2009, 11:02. Просмотров 7503. Ответов 13
Метки нет (Все метки)

Есть USB-устройство, есть к нему драйвер, который позволяет общаться с устройством будто оно подключенно по СОМ порту. собственно этот драйвер, как я понимаю, эмулирует данный COM порт, и даёт ему имя устройства.

Собственно вопрос: можно программным способом определить из всего множества доступных COM портом именно этот? как это сделать, какие сведенья необходимо знать/получить?

(среда Visual C++, система Windows ХР)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.10.2009, 11:02
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Определить имя/тип COM порта (C++):

Во время компиляции определить, является ли тип полным - C++
Доброго времени суток. Это уже моя далеко не первая попытка создать детектор неполных типов. Требуется кросс-платформа:...

Имя СOM порта через диспетчер устройств - C++ Builder
Благодарю за помощь! Мне необходимо через диспетчер устройств Windiws вытащить имя СОМ порта. Как лучше это сделать??

Как определить, что имя файла состоит полностью из цифр? - C++ Builder
Привет всем. Есть текстовый файл со списком имён файлов, приведу пример, здесь две цифры в имени, может быть 2, 3 и больше, не имеет...

Не удаётся определить тип устройства по указанному расширению файла (TMediaOlayer) - C++ Builder
Появилась такая ошибка. До этого программа воспроизводила аудио нормально. Вроде и код не менял, однако всё равно выёживается. Вот код...

Как определить тип Sender'a объекта при использовании динамически созданных объекитах - C++ Builder
Есть динамически созданные объекты на форме: int counter=0; for(int i=1; i<4; i++) { for(int j=1; j<4; j++) { ...

Ввести фамилию, имя и отчество одной строкой, определить длину каждого слова (XE4, визуальный режим) - C++ Builder
добрый вечер, уважаемые программисты, а также всем людям, который любят программирование. помогите, пожалуйста, написать программу на языке...

13
odip
Эксперт С++
7159 / 3221 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
27.10.2009, 22:54 #2
Видимо эволюция идет в сторону амеб.
Как ты думаешь можно тебе помочь, если ты даже не назвали ни устройство, ни драйвер, ни зачем тебе это нужно.
0
TanT
эволюционирую потихоньку
466 / 464 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
28.10.2009, 06:14  [ТС] #3
Цитата Сообщение от odip Посмотреть сообщение
Видимо эволюция идет в сторону амеб.
попрошу без оскорблений
Человек звучит гордо, а обезьяна - перспективно (с)

Цитата Сообщение от odip Посмотреть сообщение
Как ты думаешь можно тебе помочь, если ты даже не назвали ни устройство, ни драйвер, ни зачем тебе это нужно.
Я и спрашивал
какие сведенья необходимо знать/получить?
1. устройство MSP430
2. сведения о драйвере в системе гласят:
c:\WINDOWS\system32\DRIVERS\klfltdev.sys
c:\WINDOWS\system32\DRIVERS\usbser.sys
3. требуется для оганизации программного поиска СОМ порта к которому подключенно устройство
0
odip
Эксперт С++
7159 / 3221 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
28.10.2009, 15:15 #4
можно программным способом определить из всего множества доступных COM портом именно этот?
требуется для оганизации программного поиска СОМ порта к которому подключенно устройство
Сначала ты просил совсем другое - ты спрашивал - как сделать фиксированный COM-порт для этого устройства.
Теперь ты спрашиваешь - как определить на какой COM-порт устройство село само.

Давай еще эволюционируй немного и определись с задачей..

Добавлено через 1 минуту
Насколько я понимаю определить куда село устройство намного проще чем заставить его сесть на заданный COM-порт.
0
TanT
эволюционирую потихоньку
466 / 464 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
28.10.2009, 17:32  [ТС] #5
произошла типичная подмена понятий, отбросим предшествующее недопонимание.
Задача: определить на какой COM-порт устройство село само.
0
TanT
эволюционирую потихоньку
466 / 464 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
29.10.2009, 12:15  [ТС] #6
Короче, тему надо закрывать помощи ждать уже не стоит.

Самостоятельно выяснил следующее:
программным способом найти определённое устройство можно только послав ему какой-то запрос через COM порт и получив (в случае - ну наконец-то повезло) ответ. соответственно устройство должно корректо отвечать на ваш запрос о чём с ним желательно "договориться".
собственно так всегда и поступают, доверяя выбор пользователю или перебирая все порты в поисках того, который ответит. а всё потому, что кроме типа ком порта в реестре по адресу HKEY_LOCAL_MACHINE\HARDWARE\DEVICEM AP\SERIALCOMM\ ничего узнать не удасться

Типы ком портов бывают такие
\Device\VSerial0 со значением СОМ9 - это виртуальный сом порт.
\Device\Serial0 - родной СОМ порт
\Device\VCP0 - переходник USB to RS232
0
DrMcSheen
60 / 60 / 1
Регистрация: 25.05.2009
Сообщений: 521
29.10.2009, 13:11 #7
Как вариант - получить список портов ДО подключения устройства и ПОСЛЕ.
0
odip
Эксперт С++
7159 / 3221 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
29.10.2009, 13:30 #8
получить список портов ДО подключения устройства и ПОСЛЕ.
Устройство может быть подключено еще до загрузки компьютера.
Или до запуска программы.
0
DrMcSheen
60 / 60 / 1
Регистрация: 25.05.2009
Сообщений: 521
29.10.2009, 13:55 #9
Цитата Сообщение от TanT Посмотреть сообщение
Типы ком портов бывают такие
\Device\VSerial0 со значением СОМ9 - это виртуальный сом порт.
\Device\Serial0 - родной СОМ порт
\Device\VCP0 - переходник USB to RS232
И все эти названия прописаны в драйвере, который можно править обычным блокнотом без потери работоспособности.
0
TanT
эволюционирую потихоньку
466 / 464 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
29.10.2009, 16:36  [ТС] #10
DrMcSheen, я хотел подчеркнуть, что названия стандартные и определить конкретное устройство по ним не возможно, так как устройства различаются лишь этими типами и система присваивает им номера по очерёдности подключения.
0
DrMcSheen
60 / 60 / 1
Регистрация: 25.05.2009
Сообщений: 521
29.10.2009, 18:25 #11
Цитата Сообщение от TanT Посмотреть сообщение
DrMcSheen, я хотел подчеркнуть, что названия стандартные и определить конкретное устройство по ним не возможно, так как устройства различаются лишь этими типами и система присваивает им номера по очерёдности подключения.
Номера присваивает система, согласен. Но это лишь последняя цифра "0" в вышеперечисленных названиях. И даже у стандартных устройств, как ни странно, есть драйвера
В твоём случае, просто для интереса, подключи устройство, посмотри его ник в реестре и в папке с его драйвером поищи файл, содержащий эту строку. Без нуля, ессно. Точно найдёшь. И исправь.
0
TanT
эволюционирую потихоньку
466 / 464 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
29.10.2009, 20:59  [ТС] #12
Цитата Сообщение от DrMcSheen Посмотреть сообщение
Номера присваивает система, согласен. Но это лишь последняя цифра "0" в вышеперечисленных названиях. И даже у стандартных устройств, как ни странно, есть драйвера
В твоём случае, просто для интереса, подключи устройство, посмотри его ник в реестре и в папке с его драйвером поищи файл, содержащий эту строку. Без нуля, ессно. Точно найдёшь. И исправь.
про драйвера я в курсе
можно поподробней про пути к ним. где этот ник в реестре? где эта папка с драйвером?
по адресу HKEY_LOCAL_MACHINE\HARDWARE\DEVICEM AP\SERIALCOMM\ я находил только стандартное название переходника USB to RS232. а именно там система раздаёт номера ком портов. пробовал подключать ещё что-нить подобное и лицезрел следующее такое же устройство тока с другой циферкой.

проясните ситуцию если не сложно
0
DrMcSheen
60 / 60 / 1
Регистрация: 25.05.2009
Сообщений: 521
30.10.2009, 06:28 #13
Цитата Сообщение от TanT Посмотреть сообщение
где этот ник в реестре? где эта папка с драйвером?
Ну с определением "ник" я просто прикололся, имея в виду его имя.
Где находится папка с драйвером - это надо тебя спросить: когда система пишет "найдено новое устройство", ведётся автоматический поиск драйверов в папке %windir%\inf. В случае отсутствия - просит указать путь к *.inf файлу, т.е. к папке с драйвером.
Вобщем, подключай устройство, определи, на какой порт оно село, смотри в реестре - кста, путь ты верный нашел - как оно обозвалось, и ищи файл, содержащий эту строку. В папке с драйвером. В папке windows\inf. Во всём компьютере, наконец, если не знаешь, кто и откуда дрова ставил.
Найденный файл может быть *.inf, *.cat, *.sys, да в принципе любой, но ссылка на него есть в файле описания драйвера - в inf.
В найденном файле правишь эту строку на своё усмотрение - она может быть упомянута неоднократно, здесь универсального метода нет, всё методом тыка - главное, чтобы в реестре отобразилось именно это новое имя устройства, и из своей программы по этой строке будешь определять нужный порт.

Не по теме:

быстро, качественно, бесплатно. Выбери любые два. - надо взять на вооружение

0
TanT
эволюционирую потихоньку
466 / 464 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
30.10.2009, 21:09  [ТС] #14
жалко нынче уже выходной, попробую проработать ваш вариант в понедельник, не вдумывался в ответ

Не по теме:

быстро, качественно, бесплатно. Выбери любые два. - надо взять на вооружение


бери, мне не жалко, не я придумал. главное наставление - соответсвуй
0
30.10.2009, 21:09
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.10.2009, 21:09
Привет! Вот еще темы с ответами:

Класс в Visual Studio, который может определить имя компьютера и т.д. - Visual C++
:):):):)

как определить тип переменной в функции f(void x) - Visual C++
Добрый день, есть функция которая принимает значение типа void, а уже в зависимости от типа делает операции int f(void x) { ...

Как определить тип интерфейса COM-порта - C#
Доброго времени суток. По роду деятельности часто работаю с различными физическими интерфейсами обмена RS-232, RS-485, RS-422. Через...

Определить имя пользователя и тип процессора - Visual Basic .NET
подскажите, как с использованием 2х апи функций (GetUserName и GetSystemInfo) определить имя пользователя и тип процессора? может у...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.