Antecedentes
Estou tentando me conectar a um dispositivo usando UART
através de um cabo micro-USB e GNU screen
do Ubuntu e OSX .
No Ubuntu e OSX eu posso obter a conexão serial mais recente com o seguinte comando, que executei logo depois de ter conectado meu dispositivo e ligado.
ls -t /dev/tty* | head -n 1
Em Ubuntu eu recebo (esta é realmente a saída de ll
e -n 3
para que eu possa ver melhor o que é mostrado)
crw-rw---- 1 root dialout 166, 0 Jan 29 10:51 /dev/ttyACM0
crw-rw-rw- 1 root tty 5, 0 Jan 29 10:14 /dev/tty
crw-rw---- 1 root dialout 4, 68 Jan 21 16:19 /dev/ttyS4
e o primeiro item está correto (ou seja, eu posso screen /dev/ttyACM0 115200
).
Em Mac , em vez disso, obtenho este
crw--w---- 1 atcold tty 16, 4 29 Jan 10:56 /dev/ttys004
crw-rw-rw- 1 root wheel 19, 44 29 Jan 10:56 /dev/tty.usbmodemfd121
crw--w---- 1 atcold tty 16, 6 28 Jan 16:21 /dev/ttys006
e o primeiro item está errado (não consigo me conectar a ele), enquanto o primeiro é o segundo (e eu tive que desligar e ligar o aparelho duas vezes, já que na primeira vez não havia nenhum /dev/tty.usbmodemfd121
em todos).
Pergunta
Minha pergunta é fácil. Como posso acessar automaticamente a conexão serial correta ? Eu estou tentando evitar dar muitos problemas para o usuário final tentando resolver esse problema automaticamente.
Resposta
Este é o meu script final:)
read -p "Connect the switched off board, then press <Enter>" temp
ls /dev/tty* > /tmp/old_tty
read -p "Turn on the board and press <Enter>" temp
ls /dev/tty* > /tmp/new_tty
screen $(comm -13 /tmp/old_tty /tmp/new_tty) 115200