Разработка драйвера USB на Mac с использованием Python
Я хотел бы написать драйвер для разговора с моими часами Suunto T3 в Python на Mac. Моя дневная работа заключается в выполнении основных веб-работ на C#, поэтому мое знакомство с Python и разработка на Mac ограничены.
Можете ли вы предложить, как можно начать разработку драйверов в целом, а затем более конкретно на Mac. Т.е. как легко увидеть, какие данные передаются на устройство? У меня есть Python 2.5 (MacPorts) и работает.
2 ответа
Mac уже имеет базовую инфраструктуру для поддержки USB, поэтому вам понадобится библиотека Python, которая может воспользоваться этим. Для любого проекта Python, который нуждается в последовательной поддержке, будь то USB, RS-232 или GPIB, я бы порекомендовал библиотеку PyVisa на SourceForge. Смотрите http://pyvisa.sourceforge.net/.
Если на вашем устройстве нет драйвера VISA, вам придется напрямую работать с системой USB. Для этого вы можете использовать другую библиотеку в SourceForge: http://pyusb.berlios.de/
Если часы поддерживают стандартную спецификацию класса USB-устройств, такую как HID или последовательная связь, возможно, уже имеется драйвер для Macintosh, встроенный в ОС. В противном случае вам потребуется получить информацию о командах вендора, используемых для связи с ним, из одного из трех источников: производителя; обратный инжиниринг протокола, используемого драйвером Windows; или от других, которые уже пересмотрели протокол для поддержки устройства в Linux или BSD.
USB - это пакетная шина, и очень важно понимать различные типы транзакций. Чтение спецификации USB - хорошее место для начала.
Вы можете увидеть, какие данные передаются на устройство, используя анализатор шины USB, что является дорогостоящим предложением для любителя, но вполне доступно большинству компаний, занимающихся разработкой USB. Например, завоевание Catalyst составляет $1199. Другим признанным производителем является LeCroy (ранее CATC). Существуют также программные USB-анализаторы, которые подключаются к USB-стеку операционной системы, но они не показывают весь трафик на шине и могут быть не такими надежными.
Я не эксперт по Mac, поэтому возьмите этот абзац с небольшим количеством соли: у Apple есть комплект разработки драйверов, называемый I / O Kit, который, очевидно, требует от вас написания драйвера на C++, если только у них нет своего пользователя. рамки Если вы пишете его на Python, он, скорее всего, будет больше похож на библиотеку Python, которая взаимодействует с чьим-либо другим (Apple?) Драйвером USB.