我使用lirc和raspberrypi构建了一个乐高遥控器。
一切正常,但现在我遇到了问题。火车不断需要信号。我写过这个剧本:
#!/bin/bash
while :
do
if [ -t 0 ]; then stty -echo -icanon -icrnl time 0 min 0; fi
keypress=''
clear;
echo "Dies ist das Lego
1 = vorwärts
2 = rückwärts
3 = stop
"
read -n 1 text
if [ "$text" = "1" ];
then
while [ "x$keypress" = "x" ]; do
irsend SEND_ONCE LEGO_Combo_Direct FORWARD_FLOAT
keypress="`cat -v`"
done
fi
if [ "$text" = "2" ];
then
while [ "x$keypress" = "x" ]; do
irsend SEND_ONCE LEGO_Combo_Direct BACKWARD_FLOAT
keypress="`cat -v`"
done
fi
if [ "$text" = "3" ];
then
while [ "x$keypress" = "x" ]; do
irsend SEND_ONCE LEGO_Combo_Direct BRAKE_BRAKE
keypress="`cat -v`"
done
fi
done
我的问题是read -n 1 text
上的脚本停止了。
如果sombody可以帮助我使用keypress
$text
脚本不再停止。
提前致谢:)
答案 0 :(得分:0)
看起来有点过于复杂。 怎么样:
#!/bin/bash
#
if [ -t 0 ]; then stty -echo -icanon -icrnl time 0 min 0; fi
clear;
echo "Dies ist das Lego
1 = vorwärts
2 = rückwärts
3 = stop
"
keypress=''
command='BRAKE_BRAKE'
while true;
do
keypress="`cat -v`"
case "$keypress" in
"") ;;
1) command="FORWARD_FLOAT";;
2) command="BACKWARD_FLOAT";;
3) command="BRAKE_BRAKE";;
x) echo "Terminating..."; break;;
esac
irsend SEND_ONCE LEGO_Combo_Direct $command
done
肯定你想添加一些清理代码来将终端恢复到icanon模式......