Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Работа с USB-портом напрямую


Автор: source777 13.3.2008, 17:47
Дано: Компьютер с 6 USB-портами, к одному из которых подсоединяется устройство.
Задача: Писать в это устройство управляющие команды и читать с него данные.
Проблема: Как определить символическое имя файла устройства? 

Если кто сталкивался с подобной задачей, поделитесь, пожалуйста, опытом...

Автор: igm 13.3.2008, 19:13
тема, тяжолая ... могу тока ссылку дать на проект написаный в Pascal сам не пробывал, 
если разберешся как записать или счить с USB поделись советом 
http://pascal.sources.ru/hardware/usb4pas.htm

Автор: Riply 13.3.2008, 19:47
Цитата(source777 @  13.3.2008,  17:47 Найти цитируемый пост)
Проблема: Как определить символическое имя файла устройства? 


Если я правильно поняла вопрос, то
imho, удобнее всего, вытаскивать подобную информацию через SetupAPI.
Там есть много чего полезного  smile 

Автор: source777 13.3.2008, 22:30
Цитата(Riply @  13.3.2008,  19:47 Найти цитируемый пост)
Если я правильно поняла вопрос, то
imho, удобнее всего, вытаскивать подобную информацию через SetupAPI.
Да, я тоже только упоминания про SetupAPI находил, вот только я что-то не пойму откуда GUID нужного устройства брать, он где-то в реестре записывается при подключении?..

Цитата(igm @  13.3.2008,  19:13 Найти цитируемый пост)
могу тока ссылку дать на проект написаный в Pascal сам не пробывал
Спасибо, конечно, но там модуль по ссылке уже устарел...

Цитата(igm @  13.3.2008,  19:13 Найти цитируемый пост)
если разберешся как записать или счить с USB поделись советом 
Когда разберусь, я пожалуй даже статью об этом напишу, ибо реально мало что-то инфы об этом в инете, хотя USB вроде не вчера появился...

Добавлено через 14 минут и 47 секунд
Вроде нашёл в реестре нечто похожее в ветках HKLM\System\ControlSet001\Enum\USB\Vid_xxxx&Pid_xxxx\ 

Автор: Riply 13.3.2008, 23:16
Цитата(source777 @  13.3.2008,  22:30 Найти цитируемый пост)
Да, я тоже только упоминания про SetupAPI находил, вот только я что-то не пойму откуда GUID нужного устройства брать, он где-то в реестре записывается при подключении?..


Все GUID перечислены в MSDN, я брала оттуда.

Rouse_  выкладывал хорошую программу, демонстрирующую работу с SetupAPI.
Не знаю, есть ли она на его сайте. Если нет - попробуй у него спросить. 
Может сохранилась.

Автор: igm 14.3.2008, 19:00
что значит устарел?

Автор: source777 15.3.2008, 01:03
Цитата(Riply @  13.3.2008,  23:16 Найти цитируемый пост)
Все GUID перечислены в MSDN, я брала оттуда.
А откуда там все? Что то я сомневаюсь, что в  MS хотя бы слышали про мой вольтметр...

Цитата(Riply @  13.3.2008,  23:16 Найти цитируемый пост)
Rouse_  выкладывал хорошую программу, демонстрирующую работу с SetupAPI.
Это та, которая отключает доступ к USB-накопителям? 


Цитата

что значит устарел?
То и значит, там считается что USB подключен через PCI, сейчас такого днём с огнём не найдёшь, а в 98-ом было актуально...



Автор: Riply 15.3.2008, 11:04
Цитата(source777 @  15.3.2008,  01:03 Найти цитируемый пост)
А откуда там все? Что то я сомневаюсь, что в  MS хотя бы слышали про мой вольтметр...


 smile 
Нет не слышали. Но зато знают GUID всех "классов" устроийств, потдерживаемых Windows.
А имея на руках GUID "класса", можно получить все устройства "этого класса", которые есть в системе,
вместе с полной информацией о них.
Твой вольтметр будет среди них  smile 

Цитата(source777 @  15.3.2008,  01:03 Найти цитируемый пост)
Это та, которая отключает доступ к USB-накопителям? 

Нет, другая. Вроде называлась DevList.
Она как раз и перечисляла все устройства в системе, как Control Panel -> System -> HardWare -> Device Manager
Только выводила гораздо больше информации.

Автор: Demogargon 23.3.2008, 09:59
Я не специалист в этой области, но может быть, Вам DOS-имя устройства для Ваших целей использовать. 
Код

function QueryDosDevice( 
ipDeviceName : pchar // Dos-имя устройства
ipTargetPath : pChar // Буфер для результата
ucchMax : DWORD // Размер буфера pResult
): DWORD;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)