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