No Linux, desejo enviar uma sequência de comandos (ou seja, alguns dados) para uma porta serial (contendo caracteres de controle) e ouvir a resposta (que geralmente também pode conter caracteres de controle).
Como posso fazer isso da maneira mais simples possível no Linux? Um exemplo é apreciado!
serial-port
Alex
fonte
fonte
Respostas:
Todos os dispositivos no Unix são mapeados para um arquivo de dispositivo, as portas seriais seriam
/dev/ttyS0
/dev/ttyS1
....Primeiro, dê uma olhada nas permissões desse arquivo, vamos supor que você esteja usando
/dev/ttyS1
.ls -l /dev/ttyS1
Você desejará acesso read.write, se este for um sistema compartilhado, considere as conseqüências de segurança de abri-lo para todos.
Um método bruto muito simples de gravar no arquivo usaria o
echo
comando simple .e ler
Você pode ter um gato correndo em um terminal e ecoar em um segundo.
Se tudo estiver sem sentido, então a taxa de transmissão, as configurações de bits podem precisar de configuração antes de você começar a enviar.
stty
vai fazer isso. !! OBSERVAÇÃO stty usará stdin como descritor de arquivo padrão para afetar.Comandos equivalentes.
Isso pode ser suficiente para você escrever algo e registrar? Não tenho certeza do que você está tentando alcançar.
Para um mais interativo, lembra que sua abordagem de configurações padrão seria usá-
minicom
lo, é apenas um programa que faz tudo o que mencionei até agora. (semelhante ao hiperterminal no Windows, você pode estar familiarizado).Uma solução intermediária usaria um programa de terminal como o
screen
que funcionará em um dispositivo serial.man screen
man minicom
man stty
Para maiores informaçõesfonte
# stty -speed 38400 -f /dev/ttyUSB1
retornastty: invalid argument '-speed'
Tudo o que você precisa fazer é abrir dois terminais. No primeiro terminal você
cat
tudo do dispositivo, por exemplono outro terminal, você pode enviar caracteres hexadecimais e texto arbitrários para o terminal, como por exemplo:
O
echo -e
comando permite a interpretação de escapes de barra invertida.É preciso ter certeza de que (i) as configurações seriais (velocidade, comprimento das palavras, fluxo ctrl etc.) estão corretas e (ii) o dispositivo serial (na outra extremidade) não está bloqueando.
fonte
Programas que falam com dispositivos seriais:
ou a partir do shell você pode fazer:
fonte
exec 99<&-
ouexec 99>&-
deveria ser usado. Ou possivelmente os dois?Esta poderia ser uma abordagem melhor:
fonte
Você pode ler e gravar em um dispositivo simultaneamente:
Sua mensagem é enviada para o segundo
cat
a partirstdin
, e os primeiroscat
relés a resposta astdout
, transformando o seu terminal em uma sala de chat.Para terminar,
ctrl-c
e depois executarfg
, em seguida,ctrl-c
novamente.fonte