Como conectar-me a um dispositivo serial USB?

12

Eu tenho um dispositivo com um cabo de porta serial USB que gostaria de conectar ao meu Raspberry Pi. O chipset para este cabo USB para serial é o PL-2303 da Prolific Technology, Inc.

Como posso ler dados da conexão serial deste dispositivo usando Python?

Swinders
fonte
1
Pergunta interessante. Esta ajuda força com a parte USB: raspberrypi.stackexchange.com/questions/258/...
Jivings
1
São duas perguntas? Especificamente, 'como posso instalar os drivers para os dispositivos seriais?' e 'como posso conectar-me a um dispositivo serial no Python?'. A pergunta sobre os drivers seria longa neste site. No entanto, a pergunta do Python pode ser mais específica para um site como o StackOverflow. Eu diria que a comunicação com um dispositivo serial no Python é a mesma, independentemente da arquitetura baseada em linux ou do mecanismo de instalação.
RLH 18/06
Não deve haver diferença entre a comunicação com a porta serial integrada (pinos UART) e uma porta serial USB.
Alex Chamberlain
Esta pergunta é: como eu começo com [Teste de configuração \ Litmus para TTL PL2303 em série] ( raspberrypi.stackexchange.com/questions/41553/… )? Uma vez que o hardware for confirmada, então pode-se divertir correndo pyserial aos dados de puxar da porta serial
Gatorback

Respostas:

7

Para conversar com um dispositivo serial usando Python, use o módulo pyserial. Se não estiver disponível em sua distribuição, ele poderá ser instalado, obtendo uma cópia da fonte na página do projeto pyserial e executando "python setup.py install"

Exemplos simples de uso de pyserial estão disponíveis na breve introdução .

O módulo para o PL-2303 está disponível por padrão - veja o repositório do GitHub do firmware - quando você conecta o dispositivo, deve ver que ele é iniciado /var/log/messages. Liguei-me a um Arduino e isso "apenas funcionou" na porta de comunicações /dev/ttyUSB0(dispositivo, driver, chipset etc. diferentes, para que sua milhagem possa variar ).

Hexelpdkk
fonte
Conectou o dispositivo e agora vejo / dev / ttyUSB0, então parece que há uma boa chance de que "funcione".
Swinders
Com pyserial instalado e usando o exemplo miniterm eu posso ver os dados do dispositivo :)
Swinders
4

O PL-2303 é bem suportado e aparecerá como /dev/ttyUSBx. Não são necessários drivers. Leia-o como faria com qualquer porta serial normal. Eu não usei o Python, mas no C ++, eu o abro () no modo sem bloqueio, seleciono () para ver se há dados a serem lidos e, em seguida, faço um read ().

James Bennet
fonte
4

Faça o download do 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

Você pode verificar a disponibilidade do ttyUSB com a linha

ls -ltr /dev|grep -i ttyUSB

Para visualizar a saída serial, use

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

Para quebrar crtl + c

Crie um arquivo testserial.py, cole este código

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