尝试让 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 common 配置错误。其次,我发送命令的方式使得 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