Como eu encontro em qual porta serial meu Arduino está conectado com um script de shell?

2

Estou escrevendo um pequeno script agora que envia alguns dados para o Arduino por meio de um script de shell bash. O comando que envia os dados é assim:

alias led_green="echo -e -n '\x10' > /dev/ttyACM1"

Como você pode ver, eu tenho / dev / ttyACM1 codificado no programa. Isso é problemático, porque se eu mudar as portas USB, o valor também mudará e meu script não funcionará. Eu me pergunto se há uma maneira de saber com qual porta o arduino está conectado, para que o script sempre seja executado, desde que haja um arduino conectado.

    
por watersnake 05.02.2016 / 17:36

1 resposta

1

Eu sugeriria alternar de alias para uma função, que usa um loop para passar por uma lista de arquivos de dispositivos.

Supondo que não há outros dispositivos, você pode usar um loop for para determinar qual dispositivo existe.

$ for i in $(seq 0 99) ; do                                                    
>    [ -e "/dev/ttyACM$i"  ] && break                                            
> done

Se você ecoar o valor de $i após o loop sair, esse será o valor do dispositivo encontrado.

No entanto, se por exemplo você tem /dev/ttyACM0 e /dev/ttyACM1 dispositivos lá e eles correm na taxa de transmissão diferente você pode percorrê-los e testar stty -a -F /dev/ttyACM$i | grep $BAUD_RATE

Se os dois dispositivos forem executados na mesma taxa de transmissão, bem. . . não há muito o que fazer - tem que usar o modo manual.

    
por Sergiy Kolodyazhnyy 09.05.2016 / 17:29