реклама на сайте
подробности

 
 
> программный доступ к перечню устройств (портов)
Ioann
сообщение Feb 25 2008, 05:58
Сообщение #1


Участник
*

Группа: Validating
Сообщений: 32
Регистрация: 7-06-05
Пользователь №: 5 790



Доброго времени суток, коллеги!

Возникла проблемка:
На компьютер (ОС Windows) устанавливаются дополнительные устройства (через мосты USB - UART)
В частности используется микросхема CP2103. Настройка->Панель управления -> система показывает
среди портов COM и LPT : "CP210x USB to UART Bridge Controller (COM3)". Если перед этим поставить ещё какие-либо виртуальные COM порты (например GPRS модем через мобилку), либо воткнуть в другой USB порт, то будет уже не COM3, а другой номер.

Как программно определить, на какой COM порт стал этот мост?
(где программно найти указанную строку? - операционная система же её где-то хранит...)

Попытку открывать все порты подряд и слать какую-то сигнатуру прошу не предлагать.

Спасибо.

Сообщение отредактировал Ioann - Feb 25 2008, 06:04
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Ioann
сообщение Feb 28 2008, 06:49
Сообщение #2


Участник
*

Группа: Validating
Сообщений: 32
Регистрация: 7-06-05
Пользователь №: 5 790



Спасибо за ответы, смотрел я пример, что указал vshemm, но если честно, то почти ничего не понял...

Попробовал воспользоваться функциями SetupDiGetClassDevs, SetupDiEnumDeviceInterfaces и SetupDiGetDeviceInterfaceDetail так:

HDEVINFO info;
SP_DEVINFO_DATA DeviceInfoData;
SP_DEVICE_INTERFACE_DATA DeviceInterfaceData;
SP_DEVICE_INTERFACE_DETAIL_DATA DeviceInterfaceDetailData;
CString a;
info = SetupDiGetClassDevs(NULL,NULL,NULL,DIGCF_ALLCLASSES);
SetupDiEnumDeviceInterfaces(info, &DeviceInfoData, NULL, NULL, &DeviceInterfaceData);
SetupDiGetDeviceInterfaceDetail(info, &DeviceInterfaceData, NULL, NULL, NULL, &DeviceInfoData);

на функцию CM_Get_Device_ID ругается Undeclared identifier... - во!

#include <setupapi.h> сделал, библиотеку setupapi.lib подключил.
в SetupDiGetClassDevs я не понял с параметром _GUID и сделал его NULL
не ясны также и другие параметры... А САМОЕ ГЛАВНОЕ - КАК получить от-туда строку типа "CP210x..."

Обясните, мне непонятливому...
Буду очень благодарен.
Go to the top of the page
 
+Quote Post
DenisN
сообщение Feb 28 2008, 09:13
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 36
Регистрация: 4-12-07
Пользователь №: 32 968



Цитата(Ioann @ Feb 28 2008, 08:49) *
в SetupDiGetClassDevs я не понял с параметром _GUID и сделал его NULL
не ясны также и другие параметры...


Разбирайтесь! В интернете много исходников не подобные темы, например - EnumDevices: http://www.codeproject.com/KB/system/EnumDevices.aspx

Цитата(Ioann @ Feb 28 2008, 08:49) *
А САМОЕ ГЛАВНОЕ - КАК получить от-туда строку типа "CP210x..."


А нужно ли получать эту строку? В программе на VB сперва сравнивают VID и PID, а если совпадут с нужными - читают номер порта (строку "COMxx") из соответствующей записи в реестре.

Сообщение отредактировал DenisN - Feb 28 2008, 09:14
Go to the top of the page
 
+Quote Post
Ioann
сообщение Mar 6 2008, 09:24
Сообщение #4


Участник
*

Группа: Validating
Сообщений: 32
Регистрация: 7-06-05
Пользователь №: 5 790



Разобрался, как это делается под Windows2000 - XP, спасибо, ссылки на проекты помогли очень.
Остался один небольшой момент - как это делалось под Windows 9x - если кто знает - просьба написать в личку или на YolkinIvan@inbox.ru.

Вообще - всем спасибо, тему можно закрыть.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 29th July 2025 - 08:08
Рейтинг@Mail.ru


Страница сгенерированна за 0.01457 секунд с 7
ELECTRONIX ©2004-2016