Làm cách nào để kết nối với thiết bị nối tiếp USB?


12

Tôi có một thiết bị có cáp cổng nối tiếp USB mà tôi muốn kết nối với Raspberry Pi của mình. Chipset cho USB nối tiếp này là PL-2303 của Prolific Technology, Inc.

Làm cách nào tôi có thể đọc dữ liệu từ kết nối nối tiếp của thiết bị này bằng Python?


1
Câu hỏi thú vị. Điều này có thể giúp với phần USB: raspberrypi.stackexchange.com/questions/258/iêu
Jivings

1
Đây có phải là hai câu hỏi? Cụ thể, 'làm cách nào tôi có thể cài đặt trình điều khiển cho các thiết bị nối tiếp?' và 'làm cách nào tôi có thể kết nối với thiết bị nối tiếp trong Python?'. Câu hỏi liên quan đến trình điều khiển sẽ dài trên trang web này. Tuy nhiên, câu hỏi Python có thể cụ thể hơn đối với một trang web như StackOverflow. Tôi cho rằng việc giao tiếp với một thiết bị nối tiếp trên Python là như nhau, bất kể kiến ​​trúc dựa trên linux hay cơ chế cài đặt.
RLH

Không có sự khác biệt giữa giao tiếp với cổng nối tiếp trên bo mạch (chân UART) và cổng nối tiếp USB.
Alex Chamberlain

Câu hỏi này đọc: làm thế nào để tôi bắt đầu với [Cấu hình \ Thử nghiệm Litmus cho PL2303 TTL đến Nối tiếp] ( raspberrypi.stackexchange.com/questions/41553/ ))? Sau khi phần cứng được xác nhận, người ta có thể giải trí chạy pyserial để lấy dữ liệu từ cổng nối tiếp
gatorback

Câu trả lời:


7

Để nói chuyện với một thiết bị nối tiếp bằng Python, hãy sử dụng mô-đun pyserial. Nếu nó không có sẵn trong bản phân phối của bạn, nó có thể được cài đặt bằng cách lấy một bản sao của nguồn từ trang dự án pyserial và chạy "python setup.py install"

Các ví dụ đơn giản về việc sử dụng pyserial có sẵn trong phần giới thiệu ngắn .

Mô-đun cho PL-2303 có sẵn theo mặc định - xem kho lưu trữ phần mềm GitHub - khi bạn cắm thiết bị vào, bạn sẽ thấy thiết bị khởi động /var/log/messages. Tôi đã kết nối với Arduino và "chỉ hoạt động" trên cổng giao tiếp /dev/ttyUSB0(thiết bị khác, trình điều khiển, chipset, v.v., vì vậy số dặm của bạn có thể thay đổi ).


Đã kết nối thiết bị và bây giờ tôi thấy / dev / ttyUSB0 vì vậy có vẻ như rất có thể nó sẽ "chỉ hoạt động".
Swinder

Với pyserial được cài đặt và sử dụng ví dụ miniterm, tôi có thể xem dữ liệu từ thiết bị :)
Swinder

4

PL-2303 được hỗ trợ tốt và nó sẽ xuất hiện dưới dạng /dev/ttyUSBx. Không cần trình điều khiển. Đọc nó như bất kỳ cổng nối tiếp bình thường. Tôi chưa sử dụng Python, nhưng trong C ++, tôi mở () nó ở chế độ không chặn, chọn () để xem có dữ liệu nào được đọc không, sau đó thực hiện đọc ().


4

Tải xuống 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

Bạn có thể kiểm tra tính khả dụng của ttyUSB với dòng

ls -ltr /dev|grep -i ttyUSB

Để xem đầu ra nối tiếp sử dụng

tail -f /dev/ttyUSB<NUMBER FROM ABOVE>

Để thoát ra crtl + c

Tạo một tệp testserial.py dán mã này

#!/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

-3

Hướng dẫn tuyệt vời cho điều đó:

http://www.digitalmihailo.com/post/usb-programming-with-python-on-linux

Một nguồn thông tin có giá trị là http://www.lvr.com/usbc.htm Hoàn thành


1
Trong khi điều này về mặt lý thuyết có thể trả lời câu hỏi, tốt hơn là nên bao gồm các phần thiết yếu của câu trả lời ở đây, và cung cấp liên kết để tham khảo. Ngoài ra liên kết thứ hai của bạn bị hỏng.
Steve Robillard
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.