Как использовать порт USB / HID с target-c в среде Mac - PullRequest
3 голосов
/ 07 октября 2011

Я пытаюсь реализовать приложение в Snow Leopard, считывая данные с USB / HID-устройства. В моем приложении я попытался выполнить следующие шаги:

  1. IOHIDManagerCreate ()
  2. CreateDeviceMatchingDictionary ()
  3. IOHIDManagerSetDeviceMatching ()
  4. IOHIDManagerOpen ()
  5. IOHIDManagerCopyDevices ()
  6. Создание ссылки для устройства (IOHIDDeviceRef)
  7. На основеIOHIDDeviceRef i Извлекает сведения об устройстве, такие как (Device ProductIDKey, Device VendorIDKey, Device ProductKey, Device Serial NumberKey, Device VersionNumberKey и т. Д.)
  8. IOHIDDeviceOpen (), т.е.IOHIDDeviceCopyMatchingElements ();Т.е. копировать совпадающие элементы с устройства;
  9. Создать элемент ссылки (т.е. IOHIDElementRef);
  10. Используя IOHIDElementRef, я получил информацию об использовании устройства, Cocookie устройства, страницу использования устройства и т. Д. До этого Моё приложение работало нормально.

Мои сомнения:

  1. Как можно считывать данные из конечной точки 1, мое устройство является устройством специального назначения, имеющим только одну конечную точку (Прерывание не синхронизированоконечная точка данных)?
  2. Есть ли у них какой-либо канал, связанный с конечной точкой 1 (устройство HID)?;
  3. Есть ли у них какие-либо функции ReadPipe и WritePipe в приложении на основе HIDManager?
  4. Возможно ли получитьданные из USB / HID с использованием IOHIDDeviceSetReoprtWithCallback ()?

Все, что сделал по этой ссылке: http://developer.apple.com/library/mac/#documentation/DeviceDrivers/Conceptual/HID/new_api_10_5/tn2187.html#//apple_ref/doc/uid/TP40000970-CH214-SW7 ...

Большое спасибо за вашу помощь..

1 Ответ

1 голос
/ 26 апреля 2012

Вы пытаетесь использовать функции HID с не HID-устройством.HID - это устройство интерфейса с человеком.Любое устройство HID должно соответствовать «Определению класса устройства для HID».

Я подозреваю, что ваше устройство не соответствует этой спецификации.

Поэтому вы должны использовать другой интерфейс ОС для работы с вашим устройством.Я предлагаю использовать libusb .Это кроссплатформенная библиотека для работы с USB-устройствами на низком уровне.Это позволит вам читать / записывать конечную точку напрямую.

...