Як я можу підключитися до послідовного USB-пристрою?


12

У мене є пристрій з USB-кабелем послідовного порту, який я хотів би підключити до свого Raspberry Pi. Чипсет цього USB для послідовного підключення до нього PL-2303 від Prolific Technology, Inc.

Як я можу прочитати дані з послідовного підключення цього пристрою за допомогою Python?


1
Цікаве запитання. Це може допомогти з USB частини: raspberrypi.stackexchange.com/questions/258 / ...
Jivings

1
Це два питання? Зокрема, "як я можу встановити драйвери для послідовних пристроїв?" і "як я можу підключитися до послідовного пристрою в Python?". Питання щодо водіїв буде довго на цьому сайті. Однак питання Python може бути більш конкретним для такого сайту, як StackOverflow. Я б припустив, що спілкування з послідовним пристроєм на Python однакове, незалежно від архітектури на базі linux чи механізму встановлення.
RLH

Не повинно бути різниці між спілкуванням із вбудованим послідовним портом (штифтами UART) та послідовним портом USB.
Алекс Чемберлен

Ці питання свідчить: як почати роботу з [тест Configuration \ лакмусовим для PL2303 TTL до серійного] ( raspberrypi.stackexchange.com/questions/41553 / ... )? Як тільки апаратне забезпечення підтверджене, можна зайнятися запущеним пісеріалом, щоб витягнути дані з послідовного порту
gatorback

Відповіді:


7

Для розмови з послідовним пристроєм за допомогою Python використовуйте модуль pyserial. Якщо він недоступний у вашому дистрибутиві, його можна встановити, отримавши копію джерела зі сторінки проекту pyserial та запустивши "python setup.py install"

Прості приклади використання pyserial доступні в короткому вступі .

Модуль для PL-2303 доступний за замовчуванням - дивіться прошивку GitHub-сховища - коли ви підключаєте пристрій, ви повинні побачити його /var/log/messages. Я підключився до Arduino, і він просто працював на порту зв'язку /dev/ttyUSB0(різний пристрій, драйвер, чіпсет тощо), тому ваш пробіг може відрізнятися ).


Підключив пристрій, і тепер я бачу / dev / ttyUSB0, тому схоже, що є хороший шанс, що він "просто запрацює".
Шахраї

При встановленому пісеріалі та за допомогою прикладу miniterm я бачу дані з пристрою :)
шахраї

4

PL-2303 добре підтримується, і він буде виглядати як /dev/ttyUSBx. Не потрібні драйвери. Прочитайте його, як і будь-який звичайний серійний порт. Я не використовував Python, але в C ++ я відкриваю () в режимі, що не блокує, виберіть (), щоб побачити, чи є дані для читання, а потім прочитайте ().


4

Завантажте 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

-3

Чудовий підручник для цього:

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

Цінним джерелом інформації є http://www.lvr.com/usbc.htm Complete


1
Хоча це теоретично може відповісти на питання, бажано було б сюди включити істотні частини відповіді та надати посилання для довідки. Також ваше друге посилання порушено.
Стів Робіллард
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.