当前位置: 首页 > news >正文

树莓派CM4显示测序合集

HDMI 屏幕旋转

#!/usr/bin/env python3
# -*- coding: utf-8 -*-import subprocess
import time
import os
import logging
from pathlib import Path# 配置日志
logging.basicConfig(level=logging.INFO,format='%(asctime)s - %(levelname)s - %(message)s',handlers=[logging.FileHandler('/home/pi/rotate_screen.log'),logging.StreamHandler()]
)def set_environment():"""设置正确的环境变量"""# 设置 DISPLAY 环境变量os.environ['DISPLAY'] = ':0'# 设置 XAUTHORITY 环境变量xauth_path = '/home/pi/.Xauthority'if Path(xauth_path).exists():os.environ['XAUTHORITY'] = xauth_pathelse:logging.warning(f"Xauthority file not found at {xauth_path}")logging.info(f"环境变量设置: DISPLAY={os.environ.get('DISPLAY')}, XAUTHORITY={os.environ.get('XAUTHORITY')}")def rotate_screen():"""旋转屏幕主函数"""# 首先设置环境变量set_environment()# 设置旋转状态变量is_rotated = Falsemax_retries = 5retry_count = 0while not is_rotated and retry_count < max_retries:try:retry_count += 1logging.info(f"尝试第 {retry_count} 次旋转屏幕...")# 直接使用环境变量执行命令,不需要在命令中再次设置result = subprocess.run(['xrandr', '--output', 'HDMI-1', '--rotate', 'left'],capture_output=True,text=True,timeout=10)if result.returncode == 0:logging.info("xrandr 命令执行成功")# 检查当前旋转状态status_result = subprocess.run(['xrandr', '--verbose'],capture_output=True,text=True,timeout=10)if "rotation: left" in status_result.stdout:is_rotated = Truelogging.info("屏幕成功向左旋转")breakelse:logging.warning("屏幕旋转状态未确认,等待后重试...")time.sleep(2)else:logging.error(f"xrandr 命令失败: {result.stderr}")time.sleep(2)except subprocess.CalledProcessError as e:logging.error(f"子进程执行错误: {e}")time.sleep(2)except subprocess.TimeoutExpired:logging.warning("命令执行超时,重试...")time.sleep(2)except Exception as e:logging.error(f"未知错误: {e}")time.sleep(2)if is_rotated:logging.info("屏幕旋转任务完成")return Trueelse:logging.error(f"经过 {max_retries} 次尝试后屏幕旋转失败")return Falsedef create_directory():"""创建目录"""try:dir_path = Path('/home/pi/2026')dir_path.mkdir(exist_ok=True)logging.info(f"目录创建成功: {dir_path}")return Trueexcept Exception as e:logging.error(f"创建目录失败: {e}")return Falseif __name__ == "__main__":logging.info("开始执行屏幕旋转脚本")# 等待系统启动完成logging.info("等待系统启动...")time.sleep(8)# 创建目录create_directory()# 执行屏幕旋转success = rotate_screen()if success:logging.info("脚本执行成功完成")else:logging.error("脚本执行失败")logging.info("脚本执行结束")

在这里插入图片描述
在这里插入图片描述

http://www.dtcms.com/a/392812.html

相关文章:

  • python创建虚拟环境相关命令
  • 如何用AI把博客文章,“洗”成一篇学术论文?
  • 应用密码学课程复习汇总2——古典密码学
  • 应用密码学课程复习汇总1——课程导入
  • PyTorch 中 AlexNet 的构建与核心技术解析
  • 一文读懂:三防手机的定义、特性与使用场景
  • EG800G-CN不联网不定位
  • sqzb_alldsd——板子
  • Windows 快速检测 Docker / WSL2 安装环境脚本(附 GUI 版本)
  • Redis最佳实践——电商应用的性能监控与告警体系设计详解
  • 【C++】C++11(二)
  • 如何解决 pip install 安装报错 ModuleNotFoundError: No module named ‘selenium’ 问题
  • 实测美团LongCat-Flash:当大模型装上“速度引擎”,能否改写智能体战局?
  • unicode ascii utf-8的区别
  • Rust_2025:阶段1:day6.1 collect补充 ,迭代器补充 ,闭包,Hashmap搜索指定值的个数,合并迭代器
  • ESP32- 项目应用2 音乐播放器之音响驱动 #2
  • Datawhale25年9月组队学习:llm-preview+Task2:大模型使用
  • Agent记忆:Memvid、Memary、MemoryOS
  • 《主流PLC品牌型号大全解析》,电气设计时PLC应该怎么选
  • 从92到102,一建实务突破之路:坚持与自我超越
  • 探索C语言中字符串长度的计算方法
  • 使用node框架 Express开发仓库管理系统练习项目
  • 网络系统管理
  • 【Vue3 ✨】Vue3 入门之旅 · 第四篇:组件的创建与传递数据
  • PHP魔法函数和超全局数组介绍——第一阶段
  • 深入剖析“惊群效应”:从Java的notifyAll到epoll的解决方案
  • 鸿蒙应用统一埋点体系设计
  • Rust_2025:阶段1:day6.2 Box ,Cow ,Rc ,Refcell ,Arc,线程(join(),lock(),子线程与主线程通信
  • GD32VW553-IOT V2【微秒延迟时间实现方法】
  • html5是移动设备玖写口吧目盖由