2009-12-03 1 views
3

У меня возникли проблемы с подключением через USB, от Mac до внешнего устройства HID. Аппаратное обеспечение было отлично зарекомендовало себя при работе под платформой Windows XP, но я не могу найти хороший пример программирования HID с Cocoa/object-C. Несколько примеров доступны в центре Apple, но они либо плохо документированы, либо слишком сложны (с точки зрения программного обеспечения со смешанными объективами C и C, что затрудняет понимание файла) или не обновляется. Ну, я должен сказать, что я больше инженер-электронщик, чем специалист по программному обеспечению! До сих пор я могу перечислять USB-порт, идентифицировать свое устройство с помощью инструментов HID Apple (я читал PID и VID), но я, к сожалению, не могу отправить отчет и/или прочитать отчет с внешнего устройства. Я бы с уверенностью признал, что один из вас использовал новый API HID для Apple и может поделиться некоторыми ноу-хау. С другой стороны, есть ли какой-либо инструмент «USB-шпион», работающий с OSX от Apple? Большое вам спасибо за вашу помощьКак использовать порт USB/HID с объективом-c в среде Mac?

Michael

ответ

1

Вы не собираетесь найти Objective-C интерфейс для HID. По крайней мере, не более чем обертка. Благодаря динамической привязке и задержке обмена сообщениями Objective-c плохо подходит для программирования зависимых от времени задач, таких как драйверы устройств или для общения с ними. Вам нужно будет работать в C.

Ресурсы Apple: Accessing Hardware From Applications, HID Class Device Interface Guide будут вашими лучшими ресурсами. This tech note предлагает хороший обзор.

Профилировщик Apple System сканирует вашу цепочку USB, чтобы увидеть, какие устройства видны для самого оборудования.

Edit01:

не могу поверить, что я забыл о /Developer/Applications/Utilities/IORegistryExplorer. Это дает подробную разбивку всего оборудования дерева.

1

Так что да, вам нужно будет погрузиться и написать C, а не Objective-C, чтобы сделать вашу вещь.

К счастью, есть еще один ресурс Apple, чтобы облегчить работу USB/HID Manager.

the HID Utilities Sample/Library from Apple См

+0

Привет, Спасибо много к вам господа: ваши ответы сэкономить много бесполезного «поиск и попробовать» время. На основе ваших комментариев новый код дает лучший доступ к моему HID-устройству: внешний MCU выдает некоторый отчет (проверяется с помощью сигналов SCL/SDA), но операция не такая, как ожидалось. Основываясь на информации Apple, выясняется, что API, посвященный HID, не поддерживает концепцию канала, определенную USB. Следовательно, вместо API HID высокого уровня должны использоваться функции ReadPipe и WritePipe. Оставляя в стороне файлы, предоставленные Apple, есть ли у вас примеры использования таких функций? – Michael

+0

Боюсь, я не могу помочь. Уровень устройства не мой бейливик. В последний раз, когда я пытался, меня преследовала толпа вил, размахивая инженерами QA. Я просто знаю, что если это связано с аппаратным обеспечением, код всегда будет на равном C. – TechZen

+0

IOKit на самом деле является подмножеством C++. –