通过 bash 读取/写入 GPIO 板

通过 bash 读取/写入 GPIO 板

尝试让 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

相关内容