#!/bin/sh DC_DET=/sys/class/gpio/dc_det/value BAT_PWR=/sys/class/gpio/bat_pwr/value LCD_PWR=/sys/class/backlight/backlight/brightness pd_cnt_max=10 pd_cnt=0 while true;do res=`cat $DC_DET` if [ $res = "1" ];then # set backlight to lowest level echo 1 > $LCD_PWR let pd_cnt=$pd_cnt+1 if [ $pd_cnt -gt $pd_cnt_max ];then echo "Cut off battery power!" sync #while true;do # echo 0 > $BAT_PWR #done; poweroff exit 0 else let tmp=$pd_cnt_max-$pd_cnt echo "Power down count: $tmp" fi else # recover lcd backlight level if [ $pd_cnt -gt 0 ];then echo 8 > $LCD_PWR fi pd_cnt=0 fi sleep 1 done exit $?
时间: 2024-02-10 08:25:48 浏览: 122
Seq_det_gray.zip_gray_https.//seq67.com
这段代码是一个无限循环的 shell 脚本,用于检测电源状态并采取相应的操作。
首先,脚本定义了一些变量,包括 `DC_DET`、`BAT_PWR` 和 `LCD_PWR`。
然后,脚本进入一个无限循环。在每次循环中,它会读取 `$DC_DET` 文件的内容,并根据其值进行不同的操作:
- 如果 `$DC_DET` 文件的内容为 "1",表示电源连接正常,则执行以下操作:
- 将 LCD 的亮度设置为最低。
- 递增 `pd_cnt` 变量的值。
- 如果 `pd_cnt` 的值超过了 `pd_cnt_max` 的值,则执行以下操作:
- 同步文件系统。
- 执行 `poweroff` 命令来关机。
- 退出脚本。
- 否则,计算剩余的 `pd_cnt_max - pd_cnt` 并输出到屏幕上。
- 如果 `$DC_DET` 文件的内容不是 "1",表示电源未连接,则执行以下操作:
- 如果 `pd_cnt` 的值大于 0,则将 LCD 的亮度恢复为默认值 8。
- 将 `pd_cnt` 的值重置为 0。
最后,脚本会休眠 1 秒钟后再次进行下一次循环。
总之,该脚本用于监测电源状态,并在电源断开一定时间后执行关机操作。
阅读全文