在openwrt编译时,可以在package/ramips/application/目录下找到很多实用的工具,比如这个gpio
在make menuconfig中选择编译到固件并安装到路由器即可使用gpio指令
1、读取io口状态,用于检测按键事件 gpio r
cnt=0
checkbnt() {
reg=`gpio r |grep bin|cut -d' ' -f16`
if [ "$reg" == "1" ]; then
if [ $cnt -gt 3 ];then
echo reverse
else
if [ $cnt -gt 0 ]; then
echo reboot
fi
fi
else
cnt=$(($cnt + 1))
fi
}
while true
do
checkbnt
sleep 1
done
这里我修改了gpio驱动源码的输出格式,所以用cut来获取19号口的标志位
2、用于控制led或者其他外部器件的输出指令 gpio w * 或者gpio l *
gpio w在源码中是测试指令,需要修改源代码才能做到精确输出。水平差一点小伙伴可以用gpio l指令来改变端口输出状态
if [ "$procnum_qq" == "1 ok," ]; then
gpio l 8 4000 0 1 0 4000 //一直亮
# gpio l 10 0 4000 0 1 4000
else
gpio l 8 0 4000 0 1 4000 //一直灭
# gpio l 10 4000 0 1 0 4000
代表着 gpio l <gpio> <on> <off> <blinks> <rests> <times>