Cara memprogram perangkat USB dengan Debian / Python

29

Pi sedang dipromosikan sebagai perangkat pendidikan terutama untuk Python. Sejalan dengan ini, sudah ada beberapa contoh hebat orang yang mengakses GPIO dari Python.

Namun, sebagian besar periferal off-the-shelf (daripada buatan sendiri) memiliki antarmuka USB. Bagaimana cara mengaksesnya menggunakan kartu Debian / Python standar? Apakah ada perpustakaan Python yang tersedia, dan tutorial yang bagus?

menang
sumber
1
Saya pikir ini perlu lebih spesifik. Apa yang sebenarnya Anda coba lakukan dengan USB?
Jivings
Ini adalah pertanyaan yang sangat bagus, saya selalu bertanya-tanya bagaimana cara membuat perangkat USB.
Shane Hudson
1
Aplikasi spesifik yang ada dalam pikiran saya adalah sistem tipe JMRI untuk mengakses antarmuka pengendali DCC model kereta api (mis. Seperti Digitrax PR3). Tapi itu terlalu spesifik untuk situs ini! Pertanyaannya ditujukan pada level yang lebih rendah "bagaimana saya berbicara dengan perangkat apa pun di USB dari Python" - secara implisit diasumsikan bahwa programmer memiliki dokumentasi protokol untuk perangkat yang ingin mereka programkan.
Menang
Saya akan menonton pertanyaan ini dengan hati-hati. Saya sedang melihat dua layar panel sentuh, baik dengan set perintah ASCII sederhana dan antarmuka USB, yang ingin saya coba dengan Raspi.
Ray Depew

Jawaban:

11

USB pada dasarnya hanyalah alat komunikasi serial. Bagaimana data dikomunikasikan adalah standar, tetapi data itu terdiri dari apa yang bergantung pada perangkat. Pembuat pengontrol Anda akan menemukan api yang terdiri dari perintah dan pesan dari formulir 'lakukan ini', atau 'ini sedang terjadi'

Jika Anda tahu api ini, Anda harus dapat berkomunikasi. Ada dua tautan yang sangat membantu

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

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

Sumber informasi yang berharga adalah USB Complete

David Sykes
sumber
Terima kasih - ya itu adalah level yang saya tuju untuk pertanyaan saya. Protokol / API produk untuk periferal tertentu adalah pertanyaan lain, atau masalah untuk dokumentasi vendor.
Menang
2

Menempelkan ini di sini untuk orang lain pada jejak kelinci seperti saya hari ini (5 Oktober 2014). CATATAN: ini dari PoV yang sangat tidak berpengalaman sehingga, ini mungkin jelas bagi banyak dari Anda, tetapi itu bukan untuk saya dan butuh waktu untuk mencari tahu.

Saya mencoba untuk antarmuka pemindai barcode laser sederhana ke RaspberryPi B + melalui USB, secara harfiah tidak ada pengalaman dengan Linux / RBPi dll. Akhirnya pencarian Google membawa saya ke halaman ini.

Saya mendapatkan jawaban yang diberikan oleh David Sykes pada 15 Juni 2012 dengan referensi PyUSB dan dari sana saya menemukan Instalasi Python & PyUSB dari ADAF , sebagai bagian dari peretasan Microsoft Kinect mereka ..

Saya merasa saya bisa melewatinya dengan cepat jika hanya ada di PC saya. Tetapi melakukan ini melalui RaspberryPi benar-benar membuat saya untuk loop. Jika Anda membaca panduan itu, Anda akan menemukan penghalang yang sama dengan yang saya lakukan di mana Anda tidak dapat mengunduh hal-hal dan Anda tidak bisa begitu saja menyumbat hal-hal yang mereka katakan tanpa file. Jadi bagaimana Anda mendapatkan file jika Anda tidak bisa mengunduhnya? [Mungkin ada cara untuk mengunduh file-file ini, tetapi pada Pi saya, saya terus mendapatkan Error 400 pada forge sumber dan Midori tidak akan mengunduh file Tar atau Zip.]

Referensi Walac ini PyUSB , Anda dapat memasukkan ke bagian pertama ke LXTerminal untuk mendapatkan libusb tapi kemudian perintah selanjutnya diberikan mengasumsikan Anda memiliki file untuk PyUSB dan bahwa Anda dapat menemukan mereka melalui direktori.

Jadi DI SINI adalah langkah saya yang diubah untuk menginstal LibUSB dan PyUSB pada RaspberryPi:

Urutan perintah yang saya masukkan ke LXTerminal:

sudo apt-get install python libusb-1.0

Konfirmasikan dengan Y

sudo apt-get install python-pip

kemudian

sudo pip install --upgrade pyusb

CATATAN: beberapa di antaranya mungkin sudah ada di RBPi Anda, tergantung pada apa yang telah Anda lakukan sebelumnya, tetapi melakukan perintah lagi tidak akan menyakitinya, itu hanya memberi tahu saya bahwa file tersebut mutakhir.

Perintah terakhir "--upgrade pyusb" memberi saya yang berikut:

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...

SO, saya pikir semuanya baik-baik saja sekarang dan saya bisa kembali ke tutorial saya.

Sekali lagi, saya menggunakan RaspberryPi B +, instal NOOBS standar .. Saya kebanyakan mereferensikan sumber seperti sistem BELAJAR ADAFRUIT yang sebagian besar dibuat dengan Model B, tetapi semua yang saya lakukan sejauh ini bekerja pada B +.

Semoga info itu akan membantu siapa pun yang terjebak pada titik yang sama.

B1llaB0ng23
sumber