Разработка USB-драйверов на Mac с использованием Python

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

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

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
4
0
6 635
2

Ответы 2

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

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

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

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

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

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

Другие вопросы по теме