树莓派如何关闭显示输出?

一、尝试

树莓派通过hdmi连接了一块1920*1080的屏幕,平时时竖屏放置,用来显示日历和其他一些信息,树莓派7*24小时运行, 导致屏幕一直处于工作状态,所以我打算只在一定的时间内进行显示输出

在百度上搜索了如何休眠之类的方法,找到可以通过xset的相关命令使树莓派进入休眠或是唤醒

// 强制进入休眠
sudo xset dpms force off
// 强制唤醒
sudo xset dpms force on

但是在我尝试强制进入休眠时,屏幕只是短暂黑了下屏,再次恢复正常,并不行,不知道哪里出了问题,尝试重新写入系统镜像,用一个新系统试下

新系统启动后屏幕变回了默认的横屏模式,神奇的事发生了,这时再执行强制进入休眠,竟然成功了,当鼠标移动可以正常唤醒,可是当我重启设置了启动时,旋转90deg时,休眠命令再次失效了,多次在横屏竖屏切换尝试了几次,竖屏下都不行,只有横屏下休眠命令可以正常工作,看来是个bug(似乎之前竖屏下,自动休眠就没有正常工作过,应该也是这个原因导致的)

虽然在横屏模式下可以实现命令休眠,但是发现屏幕并没有熄灭,好像只是换了一个黑色的屏保,这点与预期有差距,我们是想让显示屏熄灭,进入待机状态

之后又百度了很久,没有发现什么好的办法。只得转到google上继续查找,最终找到了turn off hdmi的相关命令

// 关闭显示输出
sudo vcgencmd display_power 0
// 开启显示输出
sudo vcgencmd display_power 1

运行关闭显示输出命令后,屏幕熄灭、进入待机状态,此时树莓派依然是正常工作状态,如果你通过vnc连接树莓派,会发现一切如常,说明这个命令是在硬件层面关闭了显示输出

二、定时任务

编辑定时任务

sudo crontab -e

添加

# 每天7:30开启显示
30 7 * * * vcgencmd display_power 1

# 周一至周五每天8点关闭显示
0 8 * * 1-5 vcgencmd display_power 0

# 周一至周五每天19点开启显示
0 19 * * 1-5 vcgencmd display_power 1

# 每天0:30点关闭显示
30 0 * * * vcgencmd display_power 0