ฉันมีอุปกรณ์ที่มีสายเคเบิลพอร์ตอนุกรม USB ที่ฉันต้องการเชื่อมต่อกับ Raspberry Pi ของฉัน ชิปเซ็ตสำหรับ USB เข้ากับสายเคเบิลอนุกรมนี้คือ PL-2303 จาก Prolific Technology, Inc.
ฉันจะอ่านข้อมูลจากการเชื่อมต่อแบบอนุกรมของอุปกรณ์นี้โดยใช้ Python ได้อย่างไร
ฉันมีอุปกรณ์ที่มีสายเคเบิลพอร์ตอนุกรม USB ที่ฉันต้องการเชื่อมต่อกับ Raspberry Pi ของฉัน ชิปเซ็ตสำหรับ USB เข้ากับสายเคเบิลอนุกรมนี้คือ PL-2303 จาก Prolific Technology, Inc.
ฉันจะอ่านข้อมูลจากการเชื่อมต่อแบบอนุกรมของอุปกรณ์นี้โดยใช้ Python ได้อย่างไร
คำตอบ:
หากต้องการพูดคุยกับอุปกรณ์แบบอนุกรมโดยใช้ Python ให้ใช้โมดูล pyserial หากไม่มีในการแจกจ่ายของคุณสามารถติดตั้งได้โดยรับสำเนาของแหล่งที่มาจากหน้าโครงการ pyserialและเรียกใช้ "python setup.py ติดตั้ง"
ตัวอย่างง่ายๆของการใช้ pyserial มีที่แนะนำสั้น
โมดูลสำหรับ PL-2303 สามารถใช้ได้โดยเริ่มต้น - ดูเฟิร์มแวพื้นที่เก็บข้อมูล GitHub - /var/log/messagesเมื่อคุณเสียบอุปกรณ์ในคุณจะเห็นมันยิงขึ้นใน ฉันได้เชื่อมต่อกับ Arduino และ "เพิ่งทำงาน" บนพอร์ตการสื่อสาร/dev/ttyUSB0(อุปกรณ์ไดรเวอร์ชิปเซ็ตอื่น ๆ ดังนั้นระยะของคุณอาจแตกต่างกันไป )
PL-2303 /dev/ttyUSBxได้รับการสนับสนุนอย่างดีและจะปรากฏเป็น ไม่จำเป็นต้องใช้ไดรเวอร์ อ่านมันตามที่คุณต้องการพอร์ตอนุกรมปกติ ฉันไม่ได้ใช้ Python แต่ใน C ++ ฉันเปิด () ในโหมดที่ไม่มีการบล็อกเลือก () เพื่อดูว่ามีข้อมูลที่จะอ่านหรือไม่แล้วอ่าน ()
ดาวน์โหลด pySerial ( https://pypi.python.org/pypi/pyserial )
wget http://pypi.python.org/packages/source/p/pyserial/pyserial-2.7.tar.gz?raw=true -O pyserial-2.7.tar.gz
tar -xzf pyserial-2.7.tar.gz
cd pyserial-2.7
sudo python setup.py install
คุณสามารถตรวจสอบความพร้อมใช้งาน ttyUSB กับบรรทัด
ls -ltr /dev|grep -i ttyUSB
เพื่อดูการใช้งานอนุกรมเอาท์พุท
tail -f /dev/ttyUSB<NUMBER FROM ABOVE>
เพื่อแยก crtl + c
สร้างไฟล์ testserial.py วางรหัสนี้
#!/usr/bin/python
from time import sleep
import serial
# Establish the connection on a specific port
ser = serial.Serial('/dev/ttyUSB0', 9600)
x = 1 while True:
print ser.readline() # Read the newest output
x += 1
การสอนที่ยอดเยี่ยมสำหรับเรื่องนี้:
http://www.digitalmihailo.com/post/usb-programming-with-python-on-linux
แหล่งข้อมูลที่มีค่าคือhttp://www.lvr.com/usbc.htmเสร็จสมบูรณ์