Como você usa minicom com stdin e stdout?

1

Eu preciso me comunicar com o Python por meio de um conversor USB para RS-232 em um dispositivo. O aplicativo minicom se conecta perfeitamente, então, se eu pudesse executá-lo no modo não interativo, tudo seria ótimo.

Lendo a documentação, há algumas opções interessantes, mas não estou entendendo completamente nenhuma delas:

 -t   Terminal type. With this flag, you can override the environment 
      TERM variable. 

 -S   script.   Run  the named script at startup.

Como canalizar dados entre meu aplicativo e minicom ? Devo usar outra coisa?

    
por Vorac 02.09.2013 / 22:24

2 respostas

6

minicom é ótimo para uso interativo, mas não é a ferramenta certa para E / S programática.

Seu programa Python local deve simplesmente abrir o nó /dev para a porta serial. Funciona exatamente como gravar em um arquivo:

fd = os.open('/dev/ttyUSB0', os.O_RDWR)
fd.write(...)

O único bit complicado é configurar a taxa de bits e tal. Para isso, use a biblioteca termios do Python :

attr = termios.tcgetattr(fd)
attr[5] = attr[6] = termios.B9600
termios.tcsetattr(fd, termios.TCSANOW, attr)

Os documentos do Python para isso praticamente presumem que você usou essa API do C e só precisa de ajuda para traduzir para o Python. Então, se você seguir esse caminho, você deve usar clássicos como o Programação Avançada no Ambiente Unix de Stevens e Rago .

Uma biblioteca de nível mais alto que coloca você acima do nível termios e dá a você portabilidade para sistemas do tipo não * ix é pySerial .

    
por 02.09.2013 / 23:58
0

A resposta de Warren Young acima está correta, no entanto, no interesse da preguiça, há uma resposta melhor:

cat $file > /dev/ttyUSB0 também funciona. Quanto às chamadas tc(g|s)etattr , elas são tratadas pelo comando stty (por exemplo, stty -F /dev/ttyUSB0 9600 )!

    
por 10.08.2018 / 02:13