Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.53/43: Рейтинг темы: голосов - 43, средняя оценка - 4.53
TanT
эволюционирую потихоньку
467 / 465 / 91
Регистрация: 30.06.2009
Сообщений: 1,399
1

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

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

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

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

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

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

Имя СOM порта через диспетчер устройств
Благодарю за помощь! Мне необходимо через диспетчер устройств Windiws вытащить...

Как определить, что имя файла состоит полностью из цифр?
Привет всем. Есть текстовый файл со списком имён файлов, приведу пример,...

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

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

13
odip
Эксперт С++
7162 / 3221 / 76
Регистрация: 17.06.2009
Сообщений: 14,161
27.10.2009, 22:54 2
Видимо эволюция идет в сторону амеб.
Как ты думаешь можно тебе помочь, если ты даже не назвали ни устройство, ни драйвер, ни зачем тебе это нужно.
0
TanT
эволюционирую потихоньку
467 / 465 / 91
Регистрация: 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
Эксперт С++
7162 / 3221 / 76
Регистрация: 17.06.2009
Сообщений: 14,161
28.10.2009, 15:15 4
можно программным способом определить из всего множества доступных COM портом именно этот?
требуется для оганизации программного поиска СОМ порта к которому подключенно устройство
Сначала ты просил совсем другое - ты спрашивал - как сделать фиксированный COM-порт для этого устройства.
Теперь ты спрашиваешь - как определить на какой COM-порт устройство село само.

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

Добавлено через 1 минуту
Насколько я понимаю определить куда село устройство намного проще чем заставить его сесть на заданный COM-порт.
0
TanT
эволюционирую потихоньку
467 / 465 / 91
Регистрация: 30.06.2009
Сообщений: 1,399
28.10.2009, 17:32  [ТС] 5
произошла типичная подмена понятий, отбросим предшествующее недопонимание.
Задача: определить на какой COM-порт устройство село само.
0
TanT
эволюционирую потихоньку
467 / 465 / 91
Регистрация: 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 / 61 / 3
Регистрация: 25.05.2009
Сообщений: 521
29.10.2009, 13:11 7
Как вариант - получить список портов ДО подключения устройства и ПОСЛЕ.
0
odip
Эксперт С++
7162 / 3221 / 76
Регистрация: 17.06.2009
Сообщений: 14,161
29.10.2009, 13:30 8
получить список портов ДО подключения устройства и ПОСЛЕ.
Устройство может быть подключено еще до загрузки компьютера.
Или до запуска программы.
0
DrMcSheen
60 / 61 / 3
Регистрация: 25.05.2009
Сообщений: 521
29.10.2009, 13:55 9
Цитата Сообщение от TanT Посмотреть сообщение
Типы ком портов бывают такие
\Device\VSerial0 со значением СОМ9 - это виртуальный сом порт.
\Device\Serial0 - родной СОМ порт
\Device\VCP0 - переходник USB to RS232
И все эти названия прописаны в драйвере, который можно править обычным блокнотом без потери работоспособности.
0
TanT
эволюционирую потихоньку
467 / 465 / 91
Регистрация: 30.06.2009
Сообщений: 1,399
29.10.2009, 16:36  [ТС] 10
DrMcSheen, я хотел подчеркнуть, что названия стандартные и определить конкретное устройство по ним не возможно, так как устройства различаются лишь этими типами и система присваивает им номера по очерёдности подключения.
0
DrMcSheen
60 / 61 / 3
Регистрация: 25.05.2009
Сообщений: 521
29.10.2009, 18:25 11
Цитата Сообщение от TanT Посмотреть сообщение
DrMcSheen, я хотел подчеркнуть, что названия стандартные и определить конкретное устройство по ним не возможно, так как устройства различаются лишь этими типами и система присваивает им номера по очерёдности подключения.
Номера присваивает система, согласен. Но это лишь последняя цифра "0" в вышеперечисленных названиях. И даже у стандартных устройств, как ни странно, есть драйвера
В твоём случае, просто для интереса, подключи устройство, посмотри его ник в реестре и в папке с его драйвером поищи файл, содержащий эту строку. Без нуля, ессно. Точно найдёшь. И исправь.
0
TanT
эволюционирую потихоньку
467 / 465 / 91
Регистрация: 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 / 61 / 3
Регистрация: 25.05.2009
Сообщений: 521
30.10.2009, 06:28 13
Цитата Сообщение от TanT Посмотреть сообщение
где этот ник в реестре? где эта папка с драйвером?
Ну с определением "ник" я просто прикололся, имея в виду его имя.
Где находится папка с драйвером - это надо тебя спросить: когда система пишет "найдено новое устройство", ведётся автоматический поиск драйверов в папке %windir%\inf. В случае отсутствия - просит указать путь к *.inf файлу, т.е. к папке с драйвером.
Вобщем, подключай устройство, определи, на какой порт оно село, смотри в реестре - кста, путь ты верный нашел - как оно обозвалось, и ищи файл, содержащий эту строку. В папке с драйвером. В папке windows\inf. Во всём компьютере, наконец, если не знаешь, кто и откуда дрова ставил.
Найденный файл может быть *.inf, *.cat, *.sys, да в принципе любой, но ссылка на него есть в файле описания драйвера - в inf.
В найденном файле правишь эту строку на своё усмотрение - она может быть упомянута неоднократно, здесь универсального метода нет, всё методом тыка - главное, чтобы в реестре отобразилось именно это новое имя устройства, и из своей программы по этой строке будешь определять нужный порт.

Не по теме:

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

0
TanT
эволюционирую потихоньку
467 / 465 / 91
Регистрация: 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

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

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

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


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

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

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