![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Участник клуба
Регистрация: 13.01.2009
Сообщений: 1,353
|
![]()
Здравствуйте. Весь код выкладывать не имеет смысла, буду краток.
Есть указатель HDEVINFO hDevInfo и есть структура SP_DEVINFO_DATA spDevInfoData Все заполнено и с помощью функции SetupDiGetDeviceRegistryProperty я могу получить информацию об устройстве, используя определенные флаги SPDRP_*, но не могу получить имя com-порта на котором это устройство висит. Нашел такой способ: Код:
Код:
У меня права администратора. Подскажите пожалуйста, что я делаю неправильно?
"Тебе то может на меня и насрать, но твои глаза меня обожают!"
![]() |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,821
|
![]()
GetLastError что говорит?
|
![]() |
![]() |
![]() |
#3 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,368
|
![]()
Какая область памяти, это же манипулятор реестра.
Приведите пример использования, а то похоже вы не пользуетесь как реестром. Прочее, наверно будет легче пройтись по всем COM портам и задетектить нужные устройства. Последний раз редактировалось waleri; 05.06.2014 в 17:28. |
![]() |
![]() |
![]() |
#4 |
Участник клуба
Регистрация: 13.01.2009
Сообщений: 1,353
|
![]() Код:
Код:
Код:
"Тебе то может на меня и насрать, но твои глаза меня обожают!"
![]() Последний раз редактировалось ImmortalAlexSan; 05.06.2014 в 19:10. Причина: Вопрос решен |
![]() |
![]() |
![]() |
#5 |
Старожил
Регистрация: 29.09.2009
Сообщений: 9,713
|
![]()
Описание API вызова библиотеки GetNumCom.DLL (через SetupAPI):
Screen0.jpg http://www.youtube.com/watch?v=F1SBCI7BglQ p.s.: данная информация доступна через SetupAPI/WMI/реестр. Служба WMI на чистых осях по-умолчанию отключена. Реестр может быть заблокирован настройками антивируса или политиками безопасности.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation Последний раз редактировалось raxp; 05.06.2014 в 21:30. |
![]() |
![]() |
![]() |
#6 |
Новичок
Джуниор
Регистрация: 26.01.2016
Сообщений: 2
|
![]()
А если усложнить задачку (она реальная).
Имеем 5 одновременно подключенных устройств (все на FTDI). 2 одного типа, 3 - другого. Для каждого типа своя программа, запущенная либо по одному экземпляру и по очереди работает со своими типами. Либо запущены несколько экземпляров по количеству приборов. Списки легко формируются по DeviceDescription (код типа прибора, в USBDeview = Device Name) и DeviceSerialNo (совпадает с зав.номером изделия). В реестр не заносится Device Name - он считывается с подключенной FTDI. Остальные параметры "\??\USB#VID_0403&PID_6001#15021103 #{a..." могут быть одинаковыми. 15021103 - это серийный номер железяки, он уникален только для одного типа изделия. PID менять не хотелось бы. Какие есть идеи, как это все подключить.? |
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 23.01.2016
Сообщений: 608
|
![]()
Для FTDI и использовать API от FTDI для идентификации. D2XX. К тому же, даже для одинаковых FTDI всегда можно сменить через FT_Prog имя для чипа, так что проблема идентификации для нескольких одинаковых чипов решаема.
И к слову, раз речь про FTDI, то и считывать-записывать желательно через их же API, т.е. библиотеку и драйвер напрямую, минуя виртуальный COM порт. Это тупо быстрее и удобнее, ибо API содержит все для обнаружения подключенного устройства с соответствующими идентификаторами. |
![]() |
![]() |
![]() |
#8 |
Новичок
Джуниор
Регистрация: 26.01.2016
Сообщений: 2
|
![]()
Есть одно небольшое "но". При считывании через D2XX теряются данные. Не всегда, но часто. И количество потерянных байт разное. Через VCP таких проблем нет.
|
![]() |
![]() |
![]() |
#9 |
Форумчанин
Регистрация: 23.01.2016
Сообщений: 608
|
![]()
...значит у вас корявый алгоритм считывания. Работаю с потоком данных 10 мегабайт/сек с Link-порта через FPGA в USB через FT2232H и API FTDI D2XX. Ни одного потерянного байта.
|
![]() |
![]() |
![]() |
#10 |
Пользователь
Регистрация: 08.05.2014
Сообщений: 17
|
![]()
А как её в проекте С++ подключить и вызвать функцию gets?
Точнее как подключить dll понятно, а как правильно задать прототип вызываемой функции gets, уточните пожалуйста. Последний раз редактировалось Cha1000000; 12.04.2016 в 14:20. |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Получить данные с СОМ-порта | Lampard7 | Win Api | 0 | 19.10.2011 19:48 |
Как правильно получить дескриптор на устройство | Master_Devel | Win Api | 2 | 24.05.2011 23:54 |
Функция CallWndProc. Получить путь к папке или файлу к которому преднозначено сообщение | Irat | Помощь студентам | 1 | 16.02.2008 23:36 |
Проверить подключено ли устройство к usb | Иллидан | Win Api | 7 | 19.01.2008 23:26 |
Как получить данные с COM-порта или другого любого порта? | DeLure | Общие вопросы C/C++ | 5 | 20.09.2007 00:50 |