Как я могу подключиться к последовательному USB-устройству?

12

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

Как я могу прочитать данные из последовательного соединения этого устройства, используя Python?

Swinders
источник
1
Интересный вопрос. Это может помочь с USB-частью: raspberrypi.stackexchange.com/questions/258/…
Jivings
1
Это два вопроса? В частности, «как я могу установить драйверы для последовательных устройств?» и «как я могу подключиться к последовательному устройству в Python?». Вопрос о драйверах будет долго на этом сайте. Тем не менее, вопрос Python может быть более конкретным для сайта, такого как StackOverflow. Я бы предположил, что связь с последовательным устройством на Python одинакова, независимо от архитектуры на основе Linux или механизма установки.
RLH
Не должно быть никакой разницы между связью с встроенным последовательным портом (выводы UART) и последовательным портом USB.
Алекс Чемберлен
Этот вопрос гласит: как начать работу с [Конфигурация \ Тест Litmus для PL2303 TTL в Serial] ( raspberrypi.stackexchange.com/questions/41553/… )? Как только аппаратное обеспечение будет подтверждено, можно использовать запущенный pyserial для извлечения данных из последовательного порта
gatorback

Ответы:

7

Чтобы общаться с последовательным устройством, использующим Python, используйте модуль pyserial. Если его нет в вашем дистрибутиве, его можно установить, получив копию исходного кода со страницы проекта pyserial и запустив «python setup.py install»

Простые примеры использования pyserial доступны в кратком введении .

Модуль для PL-2303 доступен по умолчанию - см. Репозиторий GitHub с прошивкой - когда вы подключаете устройство, вы должны увидеть, как оно запускается /var/log/messages. Я подключился к Arduino, и он «просто работал» на коммуникационном порте /dev/ttyUSB0(другое устройство, драйвер, чипсет и т. Д., Поэтому ваш пробег может отличаться ).

Hexelpdkk
источник
Подключил устройство, и теперь я вижу / dev / ttyUSB0, так что, похоже, есть хорошие шансы, что он будет «просто работать».
Swinders
С установленным pyserial и на примере miniterm я вижу данные с устройства :)
Swinders
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
VeggieVampire
источник
-3

Отличный урок для этого:

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

Ценным источником информации является http://www.lvr.com/usbc.htm Complete.

Фадаби Нави
источник
1
Хотя это может теоретически ответить на вопрос, было бы предпочтительным включить сюда основные части ответа и предоставить ссылку для справки. Также ваша вторая ссылка не работает.
Стив Робиллард