GPIOボードを操作するには、スクリプトからアクセスする必要があります。私が使用する方法は次のとおりです。
stty -F /dev/ttyACM1 115200 raw -echo #CONFIGURE SERIAL PORT
exec 3</dev/ttyACM1 #REDIRECT SERIAL OUTPUT TO FD 3
cat <&3 > /tmp/ttyDump.dat & #REDIRECT SERIAL OUTPUT TO FILE
PID=$! #SAVE PID TO KILL CAT
echo "gpio readall" > /dev/ttyACM1 #SEND COMMAND STRING TO SERIAL PORT
sleep 5s #WAIT FOR RESPONSE
kill $PID #KILL CAT PROCESS
exec 3<&- #FREE FD 3
cat /tmp/ttyDump.dat #DUMP CAPTURED DATA
ボードが動作しています。画面からアクセスし、同じコマンドを入力して結果を得ることができ、それが壊れたスクリプトであることがわかります。私は何が間違っていましたか?
注 - このスクリプトはstackexchangeの他の場所からコピーされました。
答え1
私の問題を発見しました。まず、私のtty共通設定が間違っています。第二に、私がコマンドを送った方法は、GPIOボードが何をすべきかわかりませんでした。これは働きます:
stty -F /dev/ttyACM1 -cstopb -crtscts cs8 9600 #CONFIGURE SERIAL PORT
exec 3</dev/ttyACM1 #REDIRECT SERIAL OUTPUT TO FD 3
cat <&3 > /tmp/ttyDump.dat & #REDIRECT SERIAL OUTPUT TO FILE
PID=$! #SAVE PID TO KILL CAT
# echo "Process ID is $PID"
printf "gpio read 0\r" > /dev/ttyACM1 #SEND COMMAND STRING TO SERIAL PORT
sleep .2s #WAIT FOR RESPONSE
kill $PID #KILL CAT PROCESS
exec 3<&- #FREE FD 3
cat /tmp/ttyDump.dat #DUMP CAPTURED DATA