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

EPD_2IN7_V2_Clear() 和 Paint_Clear(WHITE) 的区别

在微雪(Waveshare)墨水屏驱动中,EPD_2IN7_V2_Clear()Paint_Clear(WHITE) 虽然都能实现清屏效果,但二者的底层操作和适用场景有本质区别。以下是详细对比:


1. 功能区别

函数EPD_2IN7_V2_Clear()Paint_Clear(WHITE)
所属模块硬件驱动层(直接操作屏幕)软件绘图层(操作内存中的图像缓存)
作用对象物理屏幕绑定的图像缓存(如 BlackImage
清屏原理发送硬件指令强制全刷为白色将内存中的图像缓存全部填充为白色数据
是否需要显示函数否(立即生效)是(需调用 EPD_Display() 才能更新到屏幕)
刷新方式全刷(耗时约2秒)无刷新(仅修改内存数据)
功耗高(触发高压驱动)低(仅操作内存)

2. 使用场景对比

(1) EPD_2IN7_V2_Clear() 适用场景
  • 初始化屏幕
    首次上电或从睡眠模式唤醒时,强制清除残影。
    EPD_2IN7_V2_Init();
    EPD_2IN7_V2_Clear();  // 硬件级清屏
    
  • 恢复显示异常
    当屏幕因残影或干扰显示异常时,直接复位屏幕状态。
(2) Paint_Clear(WHITE) 适用场景
  • 软件层清空画布
    在内存中准备新图像前,清除旧内容(不立即影响屏幕)。
    Paint_SelectImage(BlackImage);
    Paint_Clear(WHITE);  // 内存缓存清白
    Paint_DrawString_EN(10, 10, "Hello", &Font16, BLACK, WHITE);
    EPD_Display(BlackImage);  // 更新到屏幕
    
  • 局部刷新前的准备
    配合局刷时,仅清除缓存中的特定区域。

3. 关键差异示例

(1) 错误用法导致残影
// 错误:仅清缓存未刷屏,屏幕仍显示旧内容
Paint_Clear(WHITE);  
// 忘记调用 EPD_Display(BlackImage);// 正确:硬件清屏+缓存清屏双保险
EPD_2IN7_V2_Clear();          // 硬件全刷白
Paint_Clear(WHITE);           // 内存缓存清白
EPD_Display(BlackImage);      // 同步到屏幕(冗余但安全)
(2) 性能对比
操作流程耗时残影风险
EPD_2IN7_V2_Clear()2s
Paint_Clear() + EPD_Display()2s
Paint_Clear()0s

4. 何时需要同时使用?

在以下场景建议 组合调用 以兼顾可靠性和显示一致性:

// 场景:长期休眠后恢复显示
void WakeUpFromSleep() {EPD_2IN7_V2_Init();       // 初始化硬件EPD_2IN7_V2_Clear();      // 强制硬件清屏(防残影)Paint_Clear(WHITE);       // 同步清空缓存// 绘制新内容...EPD_Display(BlackImage);  // 更新屏幕
}

5. 总结

选择依据EPD_2IN7_V2_Clear()Paint_Clear(WHITE)
需立即物理清屏✓(如初始化、异常恢复)×
仅清内存缓存×✓(如局部刷新前的准备)
低功耗要求×(高压刷新耗电)✓(无硬件操作)
代码执行速度慢(阻塞式全刷)快(内存操作)

最佳实践

  • 初始化或异常处理时优先用 EPD_2IN7_V2_Clear()
  • 动态更新内容时用 Paint_Clear() + EPD_Display() 组合。
  • 避免冗余调用以节省时间和功耗。
http://www.xdnf.cn/news/8748.html

相关文章:

  • 深度解析视频剪辑SDK开发:从AI字幕提取到多端原生插件集成-优雅草卓伊凡
  • 小白的进阶之路系列之四----人工智能从初步到精通pytorch自定义数据集上
  • Hertz+Kitex快速上手开发
  • 学习日志12 java
  • 低功耗蓝牙BLE之LE Controller Package CRC校验
  • MySQL 定时逻辑备份
  • uni-app学习笔记十二-vue3中组件传值(属性传值)
  • 解决DeepSeek部署难题:提升效率与稳定性的关键策略
  • 《JavaScript 性能优化:从原理到实战的全面指南》
  • vue3中自定义指令使用
  • Vue3 watch 使用与注意事项
  • 在Mathematica中,使用鸟枪法求解在无穷远处的边值常微分方程
  • 动态规划算法:字符串类问题(2)公共串
  • 简单血条于小怪攻击模板
  • 【Linux】深刻理解OS管理
  • Java 8 Stream操作示例
  • 《仿盒马》app开发技术分享-- 原生地图展示(端云一体)
  • 【Python】1. 基础语法(1)
  • webpack优化方法
  • 学习日记-day15-5.25
  • 云原生安全之HTTP协议:从基础到实战的安全指南
  • JavaSE核心知识点03高级特性03-05(注解)
  • 后经济时代开源链动2+1模式AI智能名片S2B2C商城小程序驱动零售企业转型研究
  • JAVA 项目中 maven pom.xml 和 properties 配置文件、spring 配置文件,以及环境变量的关系
  • 《STL--list的使用及其底层实现》
  • 基于aspnet,微信小程序,mysql数据库,在线微信小程序汽车故障预约系统
  • Win11 系统登入时绑定微软邮箱导致用户名欠缺
  • 【TDengine源码阅读】taosMemoryDbgInit函数
  • 基于MATLAB实现传统谱减法以及两种改进的谱减法(增益函数谱减法、多带谱减法)的语音增强
  • 全面理解类和对象(下)