現在、bash Shellスクリプトを介してArduinoにデータを送信する小さなスクリプトを作成しています。データを送信するコマンドは次のようになります。
alias led_green="echo -e -n '\x10' > /dev/ttyACM1"
ご覧のとおり、/ dev/ttyACM1をプログラムにハードコーディングしています。 USBポートを変更すると値も変更され、スクリプトが機能しないため、これには問題があります。 arduinoがどのポートに接続されているかをプログラムで判断する方法があるので、arduinoが接続されている限りスクリプトは常に実行されるのではないかと思います。
Aliasからfunctionに切り替えることをお勧めします。この関数は、ループを使用してデバイスファイルのリストを調べます。
他のデバイスがないと仮定すると、forループを使用して、どのデバイスが存在するかを判断できます。
$ for i in $(seq 0 99) ; do
> [ -e "/dev/ttyACM$i" ] && break
> done
ループの終了後に$i
の値をエコーすると、検出されたデバイスの値になります。
ただし、たとえば、/dev/ttyACM0
および/dev/ttyACM1
デバイスがあり、それらがdifferentボーレートで実行されている場合、それらをループしてstty -a -F /dev/ttyACM$i | grep $BAUD_RATE
をテストできます。
両方のデバイスが同じボーレートで動作するなら、まあ。 。 。することはあまりありません-手動で行う必要があります。