Как запрограммировать USB-устройство с помощью Debian / Python

29

Pi рекламируется как образовательное устройство в первую очередь для Python. В соответствии с этим, в интернете уже есть несколько замечательных примеров людей, получающих доступ к GPIO из Python.

Тем не менее, большинство готовых (а не домашних) периферийных устройств имеют интерфейсы USB. Как можно получить к ним доступ, используя стандартную карту Debian / Python? Есть ли библиотека Python и хороший учебник?

winwaed
источник
1
Я думаю, что это должно быть более конкретным. Что вы пытаетесь сделать с USB точно?
Jivings
Это очень хороший вопрос, я всегда задавался вопросом, как сделать USB-устройства.
Шейн Хадсон
1
Конкретное приложение, которое я имею в виду, - это система типов JMRI для доступа к интерфейсу контроллера DCC модели железной дороги (например, например, Digitrax PR3). Но это слишком специфично для этого сайта! Вопрос нацелен на более низкий уровень «как мне общаться с любым устройством на USB от Python» - подразумевается, что у программиста есть документация по протоколу для устройства, которое они хотят запрограммировать.
winwaed
Я собираюсь внимательно посмотреть на этот вопрос. Я смотрю на два сенсорных дисплея, оба с простыми наборами команд ASCII и интерфейсами USB, которые я хочу попробовать с RasPi.
Рэй Депью

Ответы:

11

По сути, USB - это просто устройство последовательной связи. Способ передачи данных является стандартным, но то, из чего состоят эти данные, зависит от устройства. Ваш производитель контроллера изобрел API, который состоит из команд и сообщений в форме «сделай это» или «это происходит»

Если вы знаете этот API, вы сможете общаться. Две возможные полезные ссылки

https://walac.github.io/pyusb/

https://web.archive.org/web/20130327005316/http://www.digitalmihailo.com/post/usb-programming-with-python-on-linux

Ценный источник информации - USB Complete

Дэвид Сайкс
источник
Спасибо - да, это тот уровень, на который я нацелился на мой вопрос. Протоколы / API продукта для определенных периферийных устройств - это другие вопросы или вопрос документации поставщика.
winwaed
2

Приклеиваем это здесь для кого-то еще на следе кролика, которым я был сегодня (5 октября 2014). ПРИМЕЧАНИЕ: это из очень неопытного PoV, поэтому, это может быть очевидно для многих из вас, но это было не для меня, и потребовалось время, чтобы выяснить это.

Я пытаюсь подключить простой лазерный сканер штрих-кода к RaspberryPi B + через USB, буквально не имея опыта работы с Linux / RBPi и т. Д. В конечном итоге поиск Google привел меня на эту страницу.

Я получил ответ, предоставленный Дэвидом Сайксом 15 июня 2012 года со ссылкой на PyUSB, и оттуда я обнаружил, что ADAFruit установил Python & PyUSB как часть их взлома Microsoft Kinect.

Я чувствую, что мог бы пройти через это довольно быстро, если бы он был только на моем ПК. Но делать это с помощью RaspberryPi действительно было круто. Если вы прочитаете это руководство, вы попадете на тот же контрольно-пропускной пункт, который я сделал, когда вы не можете загружать вещи, и вы не можете просто смешивать то, что они говорят, без файлов. Итак, как вы получаете файлы, если вы не можете их скачать? [Возможно, есть способ загрузить эти файлы, но на моем Pi я продолжал получать сообщение об ошибке 400 в исходной кузнице, и Midori не загружал файлы Tar или Zip.]

REFERENCING PyUSB Walac в , вы можете ввести в первую часть в LXTerminal , чтобы получить libusb , но тогда следующая команда дается предполагает , что вы имеете файлы для PyUSB и что вы можете найти их с помощью каталога.

Итак, вот мои измененные шаги, чтобы установить LibUSB и PyUSB на RaspberryPi:

Порядок команд, которые я ввел в LXTerminal:

sudo apt-get install python libusb-1.0

Подтвердите с помощью Y

sudo apt-get install python-pip

тогда

sudo pip install --upgrade pyusb

ПРИМЕЧАНИЕ: что-то из этого уже может быть на вашем RBPi, в зависимости от того, что вы делали до этого, но повторное выполнение команд не повредит, просто мне сказали, что файл обновлен.

Последняя команда «--upgrade pyusb» дала мне следующее:

Downloading/unpacking pyusb
Downloading pyusb-1.0.0b1.tar.gz (44Kb): 44Kb downloaded
Running setup.py egg_info for package pyusb

Installing collected packages: pyusb
Running setup.py install for pyusb

Successfully installed pyusb
Cleaning up...

Итак, я думаю, что теперь все хорошо, и я могу вернуться к своим урокам.

Опять же, я использую RaspberryPi B +, стандартную установку NOOBS. В основном я ссылаюсь на источники, такие как система обучения LEADN от ADAFRUIT, которая была сделана в основном с моделью B, но все, что я делал до сих пор, работает на B +.

Надеюсь, эта информация поможет всем, кто застрял в этой же точке.

B1llaB0ng23
источник