USB HID
От: DenisKaVak  
Дата: 11.01.07 18:36
Оценка:
Народ, подскажите как писать\читать в этот порт заданному устройству. Данные о устройстве известны. Виден как hid — мышка. Пишу на делфи. В принцыпе понимаю маленько как это сделать через setupapi.dll and hid.dll, но сколько не мучился не получается. В надежде купил книгу Агурова... но там ни один пример не компилица, надо ещё какие-то библиотеки или доп. что-то ставить...Было бы более ясно если бы было написано на "чистом" делфи...
Спасибо
Re: USB HID
От: Rius Россия  
Дата: 11.01.07 19:39
Оценка:
Здравствуйте, DenisKaVak, Вы писали:

DKV>Народ, подскажите как писать\читать в этот порт заданному устройству. Данные о устройстве известны. Виден как hid — мышка. Пишу на делфи. В принцыпе понимаю маленько как это сделать через setupapi.dll and hid.dll, но сколько не мучился не получается. В надежде купил книгу Агурова... но там ни один пример не компилица, надо ещё какие-то библиотеки или доп. что-то ставить...Было бы более ясно если бы было написано на "чистом" делфи...

DKV>Спасибо

http://www.progz.ru/forum/index.php?showtopic=24176

p.s. пробовал подключатся к мышке — винда не дает, возможно просто уже занято...
свое устройство вполне рабочее
примеры работы с hid есть в инете, если поискать
Re[2]: USB HID
От: Аноним  
Дата: 11.01.07 20:30
Оценка:
Здравствуйте, Rius, Вы писали:


R>http://www.progz.ru/forum/index.php?showtopic=24176


R>p.s. пробовал подключатся к мышке — винда не дает, возможно просто уже занято...

R>свое устройство вполне рабочее
R>примеры работы с hid есть в инете, если поискать

Все эти ссылки я уже "перелопатил" много раз за последнии четыре дня!
Везде по разному, или код кусками приводят! Ну "начинающий" я, с разбегу не въеду!
Мне не обязательно как к мышке, мне бы для начала прочитать VendorID,ProductID и параметры уст-ва, верез CreatFile!
Если у кого есть пример (100% работающий на чистом делфи) на делфи как определить все подключенные уст-ва, как считать их данные, и т.д. приведите его....
Re[3]: USB HID
От: DenisKaVak  
Дата: 11.01.07 20:54
Оценка:
Хорошо, бубу задавать конкретные вопросы:
"открыть" — устройство —
HANDLE = CreateFile(address,
GENERIC_READ|GENERIC_WRITE,
FILE_SHARE_READ|FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
0,
NULL)

Где взять address для HID зная его VendorID и ProductID?
Re[4]: USB HID
От: Rius Россия  
Дата: 12.01.07 03:45
Оценка:
Здравствуйте, DenisKaVak, Вы писали:

DKV>Хорошо, бубу задавать конкретные вопросы:

DKV>"открыть" — устройство —
DKV>HANDLE = CreateFile(address,
DKV> GENERIC_READ|GENERIC_WRITE,
DKV> FILE_SHARE_READ|FILE_SHARE_WRITE,
DKV> NULL,
DKV> OPEN_EXISTING,
DKV> 0,
DKV> NULL)

DKV>Где взять address для HID зная его VendorID и ProductID?


здесь address в CreateFile — строка — один из путей для hid-устройств, найденных по guid (для hid выделен свой guid)
потом перебирается перечень этих устройств, поочередно запрашиваем инфу из каждого и ищем, у кого из них есть нужные VendorID и ProductID
здесь примеры
Re[5]: USB HID
От: DenisKaVak  
Дата: 12.01.07 04:33
Оценка:
Здравствуйте, Rius, Вы писали:

R>здесь address в CreateFile — строка — один из путей для hid-устройств, найденных по guid (для hid выделен свой guid)

R>потом перебирается перечень этих устройств, поочередно запрашиваем инфу из каждого и ищем, у кого из них есть нужные VendorID и ProductID
R>здесь примеры


Не надо ссылок пожалуйста!!! Я их уже все видел...
То что address в CreateFile это путь я догадываюсь... Только откуда его брать? Конкретно какой функцией его подучить, что передать ей в параметрах, желательно с примером на делфи?


Офтоп: Давайте не будем посылать на другие сайты что мол там есть примеры и т.д. Если по теме нечего сказать то лучше не отвечать, чем разводить "огород". Конкретный вопрос=конкретный ответ.
Спасибо!!!
Re[6]: USB HID
От: Rius Россия  
Дата: 12.01.07 05:16
Оценка: +1
Здравствуйте, DenisKaVak, Вы писали:

DKV>Не надо ссылок пожалуйста!!! Я их уже все видел...

DKV>То что address в CreateFile это путь я догадываюсь... Только откуда его брать? Конкретно какой функцией его подучить, что передать ей в параметрах, желательно с примером на делфи?


DKV>Офтоп: Давайте не будем посылать на другие сайты что мол там есть примеры и т.д. Если по теме нечего сказать то лучше не отвечать, чем разводить "огород". Конкретный вопрос=конкретный ответ.

DKV>Спасибо!!!

не имеет смысла копировать сюда код или цитировать по книге Агурова, если не хотите сами изучать имеющиеся примеры.
Re: USB HID
От: MegaVoltik  
Дата: 12.01.07 09:22
Оценка:
DKV>Народ, подскажите как писать\читать в этот порт заданному устройству. Данные о устройстве известны. Виден как hid — мышка. Пишу на делфи. В принцыпе понимаю маленько как это сделать через setupapi.dll and hid.dll, но сколько не мучился не получается. В надежде купил книгу Агурова... но там ни один пример не компилица, надо ещё какие-то библиотеки или доп. что-то ставить...Было бы более ясно если бы было написано на "чистом" делфи...

Смотри вот такую примочку EasyHID. Она заточена под построение USB интерфейса с микроконтроллероми. Внутри есть библиотека mcHID.dll в которой есть все нужные функции для работы с HID из языков высокого уровня. Она генерит события твоему приложению о подключении, отключении, приходе данных... И т.д. всё работает проверено.
Чем больше нас, тем меньше их...
Re[2]: USB HID
От: DenisKaVak  
Дата: 12.01.07 14:10
Оценка:
Здравствуйте, MegaVoltik, Вы писали:

MV>Смотри вот такую примочку EasyHID. Она заточена под построение USB интерфейса с микроконтроллероми. Внутри есть библиотека mcHID.dll в которой есть все нужные функции для работы с HID из языков высокого уровня. Она генерит события твоему приложению о подключении, отключении, приходе данных... И т.д. всё работает проверено.


Спасибо БОЛЬШОЕ!!! Очень полезная весчь!!!
Re: USB HID
От: Pavel_Agurov Россия  
Дата: 14.01.07 13:10
Оценка:
>В надежде купил книгу Агурова... но там ни один пример не компилица,
>надо ещё какие-то библиотеки или доп. что-то ставить...
>Было бы более ясно если бы было написано на "чистом" делфи...

Если прочитать внимательно, то в книге написано — либо поставьте библиотеку JEDI, либо используйте самостоятельно написанный модуль импорта функций. Выкладывать на диск библиотеку я не хочу. Абсолютно все примеры из книги (из обоих книг) работают. Утверждение про "чистый Delphi" это конечно забавно — может и WinApi выкинуть?
Re[2]: USB HID
От: DenisKaVak  
Дата: 15.01.07 14:37
Оценка:
Здравствуйте, Pavel_Agurov, Вы писали:


P_A>Если прочитать внимательно, то в книге написано — либо поставьте библиотеку JEDI, либо используйте самостоятельно написанный модуль импорта функций. Выкладывать на диск библиотеку я не хочу. Абсолютно все примеры из книги (из обоих книг) работают. Утверждение про "чистый Delphi" это конечно забавно — может и WinApi выкинуть?



Я к тому чтобы все исходники компилились без установки доп. библиотек, а если таковые используются то хотябы прилагались бы!
Re[6]: USB HID
От: maloyDS Россия  
Дата: 04.03.07 07:56
Оценка:
Здравствуйте, DenisKaVak, Вы писали:

DKV>Здравствуйте, Rius, Вы писали:


R>>здесь address в CreateFile — строка — один из путей для hid-устройств, найденных по guid (для hid выделен свой guid)

R>>потом перебирается перечень этих устройств, поочередно запрашиваем инфу из каждого и ищем, у кого из них есть нужные VendorID и ProductID
R>>здесь примеры


DKV>Не надо ссылок пожалуйста!!! Я их уже все видел...

DKV>То что address в CreateFile это путь я догадываюсь... Только откуда его брать? Конкретно какой функцией его подучить, что передать ей в параметрах, желательно с примером на делфи?


DKV>Офтоп: Давайте не будем посылать на другие сайты что мол там есть примеры и т.д. Если по теме нечего сказать то лучше не отвечать, чем разводить "огород". Конкретный вопрос=конкретный ответ.

DKV>Спасибо!!!

Немного модифицированный пример из Агурова
 HidD_GetHidGuid(HidGuid);
 PnPHandle := SetupDiGetClassDevs(@HidGuid, nil, 0, DIGCF_PRESENT or DIGCF_DEVICEINTERFACE);
 If PnPHandle = Pointer(INVALID_HANDLE_VALUE) then Exit;

 Try
  DevIndex := 0;
  Repeat
   DeviceInterfaceData.cbSize := SizeOf(TSPDeviceInterfaceData);
   Success := SetupDiEnumDeviceInterfaces(PnPHandle, nil, HidGuid, DevIndex, DeviceInterfaceData);
   If Success then begin
    DevData.cbSize := SizeOf(DevData);
    BytesReturned  := 0;
    SetupDiGetDeviceInterfaceDetail(PnPHandle, @DeviceInterfaceData, nil, 0, @BytesReturned, @DevData);
    If (BytesReturned <> 0) and (GetLastError = ERROR_INSUFFICIENT_BUFFER) then begin
     FunctionClassDeviceData := AllocMem(BytesReturned);
     FunctionClassDeviceData.cbSize := 5;
     If SetupDiGetDeviceInterfaceDetail(PnPHandle, @DeviceInterfaceData, FunctionClassDeviceData, BytesReturned, @BytesReturned, @DevData) then     begin
 {Вот здесь определяется имя!!!}
      HidName:= StrPas(PChar(@FunctionClassDeviceData.DevicePath));
      lbDevices.Items.Add(HidName);
     End;
     FreeMem(FunctionClassDeviceData);
    End;
   End;
   Inc(DevIndex);
  Until not Success;
 Finally
  SetupDiDestroyDeviceInfoList(PnPHandle);
 End;

Далее
HidHandle:= CreateFile(@HidName[1],
                 0,
                 FILE_SHARE_READ or FILE_SHARE_WRITE,
                 nil,
                 OPEN_EXISTING, 0, 0);

и работаешь с HidHandle
Re[2]: USB HID
От: maloyDS Россия  
Дата: 04.03.07 08:11
Оценка:
Здравствуйте, Pavel_Agurov, Вы писали:

>>В надежде купил книгу Агурова... но там ни один пример не компилица,

>>надо ещё какие-то библиотеки или доп. что-то ставить...
>>Было бы более ясно если бы было написано на "чистом" делфи...

P_A>Если прочитать внимательно, то в книге написано — либо поставьте библиотеку JEDI, либо используйте самостоятельно написанный модуль импорта функций. Выкладывать на диск библиотеку я не хочу. Абсолютно все примеры из книги (из обоих книг) работают. Утверждение про "чистый Delphi" это конечно забавно — может и WinApi выкинуть?


Павел, у Вас в книге есть пример использования функции HidD_GetInputReport. В библиотеке JEDI она не описана, самому подключить не удалось, может подскажете как решить эту проблему?
Заранее спасибо.
Re[4]: USB HID
От: OdesitVadim Украина  
Дата: 05.03.07 12:50
Оценка:
Здравствуйте, DenisKaVak, Вы писали:

DKV>Хорошо, бубу задавать конкретные вопросы:

DKV>"открыть" — устройство —
DKV>HANDLE = CreateFile(address,
DKV> GENERIC_READ|GENERIC_WRITE,
DKV> FILE_SHARE_READ|FILE_SHARE_WRITE,
DKV> NULL,
DKV> OPEN_EXISTING,
DKV> 0,
DKV> NULL)

DKV>Где взять address для HID зная его VendorID и ProductID?

Крайне несоветую открывать устройство с флагом GENERIC_WRITE и ему подобными(запись). Некоторые устройства (мышь к примеру) с этим флагом не откроются. Вначале открываете с ключами для чтения.Убеждаетесь,что это ваше устройство и оно запись держит, а только потом переоткрываете.
Только недавно исправлял код одного С++шника.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.