自个调试的时候写的简简单单脚本 Android/Linux 都兼容
简单的LED循环控制shell脚本
脚本功能介绍
这个脚本是用来控制一些LED灯的亮灭的。它定义了五个函数,每个函数都是一个无限循环,用来向/sys/devices/platform/leds/leds/led文件写入一些数字,来控制不同的LED灯的状态。每个函数都在后台运行,所以可以同时控制多个LED灯。最后一个函数还调用了另一个脚本/opt/test_gpio2.sh来控制一些GPIO引脚的电平。
使用示例
要运行这个脚本,只需要在终端中输入:
bash led.sh
然后就可以看到一些LED灯开始闪烁。要停止这个脚本,只需要按Ctrl+C,就可以发送SIGINT信号来终止所有的后台进程。
#!/bin/bash # 定义GPIO编号的数组 DO=(27 28 29 30) # 输出端口 IN=(107 108 109 110) # 输入端口 # 导出GPIO for i in ${DO[@]} ${IN[@]}; do echo $i > /sys/class/gpio/export done # 设置方向 for i in ${DO[@]}; do echo out > /sys/class/gpio/gpio$i/direction done for i in ${IN[@]}; do echo in > /sys/class/gpio/gpio$i/direction done # 循环控制和读取电平 while true; do # 设置DO为高电平 for i in ${DO[@]}; do echo 1 > /sys/class/gpio/gpio$i/value echo "Set DO$i to high level" done # 读取IN的电平,并打印到屏幕上 for i in ${IN[@]}; do value=$(cat /sys/class/gpio/gpio$i/value) echo -n "IN$i: $value " done echo # 换行 # 打印时间戳 date "+%Y-%m-%d %H:%M:%S" # 延迟一秒钟 sleep 1 # 设置DO为低电平 for i in ${DO[@]}; do echo 0 > /sys/class/gpio/gpio$i/value echo "Set DO$i to low level" done # 读取IN的电平,并打印到屏幕上 for i in ${IN[@]}; do value=$(cat /sys/class/gpio/gpio$i/value) echo -n "IN$i: $value " done echo # 换行 # 打印时间戳 date "+%Y-%m-%d %H:%M:%S" # 延迟一秒钟 sleep 1 done
简单的GPIO逻辑控制shell脚本
脚本功能介绍
这个脚本是用来控制一些GPIO引脚的电平的。它接受四个参数,分别是gpio方向、gpio number、gpio value和restore。gpio方向可以是in或out,表示输入或输出。gpio number是一个0到159之间的整数,表示要控制的引脚的编号。gpio value可以是0或1,表示要设置的电平,只有在gpio方向为out时才有效。restore可以是on或off,表示是否在退出脚本时恢复原来的引脚状态。
这个脚本会根据rockchip rk3568 gpio计算规则,将gpio number转换为GPIOx_Ay的形式,并检查是否有权限访问gpio,是否已经被导出或占用。然后,它会将引脚导出到sysfs中,并设置引脚的方向和值。如果引脚的方向为输入,它会循环读取引脚的值,直到按下Ctrl-C;如果引脚的方向为输出,它会根据是否提供了gpio value参数来设置或切换引脚的值,直到按下Ctrl-C。最后,它会根据restore参数来决定是否取消导出并恢复原来的引脚状态。
使用示例
要运行这个脚本,需要在终端中输入:
bash test_gpio2.sh gpio_direction gpio_number [gpio_value] [restore]
例如:
bash test_gpio2.sh in 10 # 将gpio10设置为输入,并循环读取值 bash test_gpio2.sh out 20 1 # 将gpio20设置为输出,并设置值为1 bash test_gpio2.sh out 30 # 将gpio30设置为输出,并在0和1之间切换值 bash test_gpio2.sh in 40 on # 将gpio40设置为输入,并循环读取值,在退出时恢复原来的状态
简单的循环监听GPIO状态shell脚本
脚本功能介绍
这个脚本是用来控制一些GPIO引脚的电平,并读取另一些GPIO引脚的电平的。它定义了两个数组,分别是DO和IN,表示输出端口和输入端口的编号。它会将这些端口导出到sysfs中,并设置相应的方向。然后,它会循环地将输出端口的电平设置为高或低,并读取输入端口的电平,并打印到屏幕上,每次操作之间延迟一秒钟。
使用示例
要运行这个脚本,只需要在终端中输入:
bash gpio.sh
然后就可以看到类似下面的输出:
Set DO27 to high level Set DO28 to high level Set DO29 to high level Set DO30 to high level IN107: 0 IN108: 0 IN109: 0 IN110: 0 2023-07-05 15:09:48 Set DO27 to low level Set DO28 to low level Set DO29 to low level Set DO30 to low level IN107: 1 IN108: 1 IN109: 1 IN110: 1 2023-07-05 15:09:49
要停止这个脚本,只需要按Ctrl-C,就可以发送SIGINT信号来终止循环。