Cách lập trình thiết bị USB với Debian / Python


29

Pi đang được quảng bá như một thiết bị giáo dục chủ yếu cho Python. Cùng với điều này, đã có một số ví dụ tuyệt vời về những người truy cập GPIO từ Python.

Tuy nhiên, hầu hết các thiết bị ngoại vi (chứ không phải nhà pha chế) đều có giao diện USB. Làm thế nào để một người truy cập vào những thứ này bằng cách sử dụng thẻ Debian / Python tiêu chuẩn? Có một thư viện Python có sẵn, và một hướng dẫn tốt?


1
Tôi nghĩ rằng điều này cần phải được cụ thể hơn. Bạn đang cố gắng làm gì với USB chính xác?
Jivings

Đây là một câu hỏi rất hay, tôi đã luôn tự hỏi làm thế nào để tạo ra các thiết bị USB.
Shane Hudson

1
Ứng dụng cụ thể mà tôi có trong đầu là một hệ thống loại JMRI để truy cập vào giao diện bộ điều khiển DCC đường sắt mô hình (ví dụ như Digitrax PR3). Nhưng đó là cách quá cụ thể cho trang web này! Câu hỏi nhằm vào cấp độ thấp hơn "làm thế nào để tôi nói chuyện với bất kỳ thiết bị nào trên USB từ Python" - người ta mặc nhiên cho rằng lập trình viên có tài liệu giao thức cho thiết bị mà họ muốn lập trình.
winwaed

Tôi sẽ xem câu hỏi này một cách cẩn thận. Tôi đang xem hai màn hình cảm ứng, cả hai đều có bộ lệnh ASCII đơn giản và giao diện USB, mà tôi muốn thử với RasPi.
Ray Depew

Câu trả lời:


11

USB là trái tim chỉ là một thiết bị giao tiếp nối tiếp. Làm thế nào dữ liệu được truyền đạt là tiêu chuẩn, nhưng dữ liệu đó bao gồm những gì phụ thuộc vào thiết bị. Nhà sản xuất bộ điều khiển của bạn sẽ phát minh ra một api bao gồm các lệnh và thông báo có dạng 'làm điều này' hoặc 'điều này đang xảy ra'

Nếu bạn biết api này, bạn sẽ có thể giao tiếp. Hai liên kết có thể hữu ích là

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

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

Một nguồn thông tin có giá trị là USB Complete


Cảm ơn - vâng đó là loại cấp độ mà tôi đã nhắm đến cho câu hỏi của mình. Các giao thức / API sản phẩm cho các thiết bị ngoại vi cụ thể là các câu hỏi khác hoặc là vấn đề đối với tài liệu của nhà cung cấp.
winwaed

2

Dán cái này ở đây cho bất cứ ai khác trên con đường thỏ mà tôi có ngày hôm nay (ngày 5 tháng 10 năm 2014). LƯU Ý: đây là từ một PoV rất thiếu kinh nghiệm, vì vậy, điều này có thể rõ ràng với nhiều bạn, nhưng nó không phải là cho tôi và mất một lúc để tìm ra.

Tôi đang cố gắng giao diện một máy quét mã vạch laser đơn giản với RaspberryPi B + thông qua USB, theo nghĩa đen là không có kinh nghiệm với Linux / RBPi, v.v ... Cuối cùng, việc tìm kiếm Google đã đưa tôi đến trang này.

Tôi đã nhận được câu trả lời do David Sykes cung cấp vào ngày 15 tháng 6 năm 2012 với tài liệu tham khảo PyUSB và từ đó tôi tìm thấy Cài đặt Python & PyUSB của ADAF , như một phần trong việc hack Microsoft Kinect ..

Tôi cảm thấy mình có thể vượt qua nó khá nhanh nếu chỉ là trên PC. Nhưng làm điều này thông qua một RaspberryPi đã thực sự ném tôi cho một vòng lặp. Nếu bạn đọc qua hướng dẫn đó, bạn sẽ gặp phải rào cản tương tự tôi đã làm khi bạn không thể tải xuống nội dung và bạn không thể đơn giản nghiền ngẫm những điều họ nói mà không có tệp. Vậy làm thế nào để bạn có được các tập tin nếu bạn không thể tải chúng xuống? [Có thể có một cách để tải xuống các tệp này, nhưng trên Pi của tôi, tôi liên tục gặp Lỗi 400 trên giả mạo nguồn và Midori sẽ không tải xuống các tệp Tar hoặc Zip.]

Tham khảo PyUSB của Walac , bạn có thể nhập phần đầu tiên vào LXTerminal để nhận libusb nhưng sau đó lệnh tiếp theo được đưa ra giả sử bạn có các tệp cho PyUSB và bạn có thể định vị chúng qua thư mục.

Vì vậy, ĐÂY là các bước thay đổi của tôi để cài đặt LibUSB và PyUSB trên RaspberryPi:

Thứ tự các lệnh tôi đã nhập vào LXTerminal:

sudo apt-get install python libusb-1.0

Xác nhận với Y

sudo apt-get install python-pip

sau đó

sudo pip install --upgrade pyusb

LƯU Ý: một số điều này có thể đã có trên RBPi của bạn tùy thuộc vào những gì bạn đã thực hiện trước đó, nhưng thực hiện lại các lệnh sẽ không làm hại nó, nó chỉ đơn giản cho tôi biết rằng tệp đã được cập nhật.

Lệnh cuối cùng "- nâng cấp pyusb" đã cho tôi như sau:

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

VÌ VẬY, tôi nghĩ bây giờ mọi thứ đều tốt và tôi có thể quay lại hướng dẫn của mình.

Một lần nữa, tôi đang sử dụng RaspberryPi B +, cài đặt NOOBS tiêu chuẩn .. Tôi hầu hết đã tham khảo các nguồn như hệ thống LEARN của ADAFRUIT được tạo ra với chủ yếu là Model B, nhưng mọi thứ tôi đã làm cho đến nay đều hoạt động trên B +.

Hy vọng rằng thông tin đó sẽ giúp bất cứ ai khác bị mắc kẹt tại điểm đó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.