วิธีการตั้งโปรแกรมอุปกรณ์ USB ด้วย Debian / Python


29

Pi ได้รับการเลื่อนขั้นเป็นอุปกรณ์การศึกษาสำหรับ Python เป็นหลัก สอดคล้องกับสิ่งนี้มีตัวอย่างที่ยอดเยี่ยมบางอย่างทางออนไลน์ของผู้ที่เข้าถึง GPIO จาก Python

อย่างไรก็ตามอุปกรณ์ต่อพ่วงนอกสถานที่ส่วนใหญ่ (ไม่ใช่ที่บ้านก่อ) มีอินเตอร์เฟซ USB การเข้าถึงสิ่งเหล่านี้ทำได้อย่างไรโดยใช้การ์ด Debian / Python มาตรฐาน มีห้องสมุด Python และบทแนะนำที่ดีไหม


1
ฉันคิดว่านี่ต้องเจาะจงมากขึ้น คุณพยายามทำอะไรกับ USB อย่างแน่นอน
Jivings

นี่เป็นคำถามที่ดีมากฉันสงสัยอยู่เสมอว่าจะสร้างอุปกรณ์ USB ได้อย่างไร
เชนฮัดสัน

1
แอปพลิเคชันเฉพาะที่ฉันมีอยู่ในใจคือระบบประเภท JMRI เพื่อเข้าถึงอินเตอร์เฟสคอนโทรลเลอร์ DCC โมเดลทางรถไฟ (เช่น. เช่น Digitrax PR3) แต่นั่นเป็นวิธีที่เฉพาะเจาะจงเกินไปสำหรับเว็บไซต์นี้! คำถามนี้มีจุดมุ่งหมายที่ระดับต่ำกว่า "ฉันจะพูดกับอุปกรณ์ใด ๆ บน USB จาก Python" ได้อย่างไร - โดยทั่วไปแล้วโปรแกรมเมอร์จะมีเอกสารประกอบโปรโตคอลสำหรับอุปกรณ์ที่ต้องการตั้งโปรแกรม
winwaed

ฉันจะดูคำถามนี้อย่างระมัดระวัง ฉันกำลังดูจอสัมผัสสองจอทั้งที่มีชุดคำสั่ง ASCII อย่างง่ายและอินเตอร์เฟส USB ซึ่งฉันต้องการลองใช้กับ RasPi
Ray Depew

คำตอบ:


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 ก็นำฉันมาที่หน้านี้

ฉันได้รับคำตอบจาก David Sykes เมื่อวันที่ 15 มิถุนายน 2012 ด้วยการอ้างอิง PyUSB และจากนั้นฉันก็พบว่าการติดตั้ง Python & PyUSB ของ ADAFruitเป็นส่วนหนึ่งของการแฮก Microsoft Kinect ของพวกเขา ..

ฉันรู้สึกว่าฉันสามารถผ่านมันได้อย่างรวดเร็วถ้ามันเป็นเพียงแค่ในพีซีของฉัน แต่การทำสิ่งนี้ผ่าน RaspberryPi ทำให้ฉันต้องวนซ้ำ หากคุณอ่านคำแนะนำนั้นคุณจะพบสิ่งกีดขวางบนถนนเดียวกันกับที่ฉันทำซึ่งคุณไม่สามารถดาวน์โหลดเนื้อหาได้และคุณจะไม่สามารถทำสิ่งที่พวกเขาพูดได้โดยไม่ต้องใช้ไฟล์ ดังนั้นคุณจะรับไฟล์ได้อย่างไรถ้าคุณไม่สามารถดาวน์โหลดได้? [อาจมีวิธีดาวน์โหลดไฟล์เหล่านี้ แต่ใน Pi ของฉันฉันได้รับข้อผิดพลาด 400 ในการปลอมแปลงแหล่งที่มาและ Midori จะไม่ดาวน์โหลดไฟล์ Tar หรือ Zip]

การอ้างอิง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 ของคุณขึ้นอยู่กับสิ่งที่คุณทำมาก่อนหน้านี้ แต่การทำคำสั่งอีกครั้งจะไม่ทำร้ายมันเพียงแค่บอกฉันว่าไฟล์นั้นทันสมัย

คำสั่งสุดท้าย "- อัพเกรด 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 มาตรฐาน .. ฉันส่วนใหญ่อ้างอิงแหล่งข้อมูลเช่นระบบการเรียนรู้ของ ADAFRUIT ที่ทำกับรุ่น B ส่วนใหญ่ แต่ทุกอย่างที่ฉันทำมาจนถึงตอนนี้กำลังทำงานกับ B +

หวังว่าข้อมูลจะช่วยให้ทุกคนที่ติดอยู่ในจุดเดียวกัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.