Разработка драйвера USB на Mac с использованием Python - PullRequest
4 голосов
/ 04 октября 2008

Я хотел бы написать драйвер для общения с моими часами Suunto t3 в Python на Mac. Моя дневная работа заключается в выполнении основной работы в Интернете на C #, поэтому мое знакомство с Python и разработка на Mac ограничено.

Можете ли вы предложить, как начать разработку драйверов в целом, а затем более конкретно на Mac. То есть Как легко увидеть, какие данные передаются на устройство? У меня есть Python 2.5 (MacPorts) и работает.

Ответы [ 2 ]

4 голосов
/ 04 октября 2008

Mac уже имеет базовую инфраструктуру для поддержки USB, поэтому вам понадобится библиотека Python, которая может воспользоваться этим. Для любого проекта Python, который требует последовательной поддержки, будь то USB, RS-232 или GPIB, я бы порекомендовал библиотеку PyVisa на SourceForge. Смотри http://pyvisa.sourceforge.net/.

Если на вашем устройстве нет драйвера VISA, вам придется напрямую работать с системой USB. Для этого вы можете использовать другую библиотеку в SourceForge: http://pyusb.berlios.de/

3 голосов
/ 04 октября 2008

Если часы поддерживают стандартную спецификацию класса устройств USB , такую ​​как HID или последовательная связь, возможно, уже есть драйвер Macintosh для него, встроенный в ОС. В противном случае вам потребуется получить информацию о командах вендора, используемых для связи с ним, из одного из трех источников: производителя; обратный инжиниринг протокола, используемого драйвером Windows; или от других, которые уже пересмотрели протокол для поддержки устройства в Linux или BSD.

USB - это пакетная шина, и очень важно понимать различные типы транзакций. Чтение спецификации USB - хорошее место для начала.

Вы можете увидеть, какие данные передаются на устройство, используя анализатор шины USB, что является дорогостоящим предложением для любителей, но вполне доступно большинству компаний, занимающихся разработкой USB. Например, Catalyst Conquest стоит $ 1199. Другим признанным производителем является LeCroy (ранее CATC) . Существуют также программные USB-анализаторы, которые подключаются к USB-стеку ОС, но они не показывают весь трафик на шине и могут быть не такими надежными.

Я не эксперт Mac, поэтому возьмите этот абзац с небольшим количеством соли: у Apple есть комплект разработки драйверов, называемый I / O Kit , который, очевидно, требует от вас написания драйвера на C ++ , если только они не имеют своего рода структуру драйвера пользовательского режима. Если вы пишете его на Python, он, скорее всего, будет больше похож на библиотеку Python, которая взаимодействует с чьим-либо другим (Apple?) Драйвером USB.

...