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 공통 구성이 잘못되었습니다. 둘째, 제가 명령을 보낸 방식은 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

관련 정보