注:本人已购买韦东山老师第三期项目视频,内容来源《数码相框项目视频》,只用于学习记录,如有侵权,请联系删除。

1.数码相框需求框架

数码相框项目需求的框架如下图所示:

  • ① 开发板上电后,进入主界面(Main page),在主界面中有 3 个触摸按钮:浏览模式、连播模式、设置。
  • ② 点击浏览模式,进入到浏览界面(Explore page),浏览界面分成两部分:菜单、图标(文件或者文件夹)。其中菜单,向上:当我们进入了某个文件夹里,想要退出来,点击向上即可退出;选择:当我选中了某个图片之后,点击选择即可显示该图片;下页:可能文件夹非常多,在一个屏幕上显示不完,点击下页即可显示下一页的文件夹;上页:同理下页;功能就相当于一个文件浏览器了。
  • ③ 点击 ② 中的文件图标,就进入到浏览界面(Browse page),在浏览界面中最上面的菜单用于返回上一浏览界面(Explore page)、缩小/放大图片、显示上一幅/下一幅图片、连续播放图片。
  • ④ 点击连播模式,会进入到 Auto page 界面,显示某个目录下的第一张图片;在该界面中,每隔一定的时间就会显示下一幅图片;在显示的过程中,点击当前图片,则进入 Browse page,可以放大缩小当前图片。
  • ⑤ 点击设置,进入设置界面(Setting page),在该界面有有两个触摸按钮:选择目录、设置间隔;点击选择目录则进入Explore page界面,让我们选择某一个文件夹用于连播模式的图片播放;点击设置间隔,会进入 Interval page 界面,点击该界面的上下两个三角形,可设置间隔时间的加减。

2.数码相框程序框架

为了更加容易实现数码相框的功能需求,我们采取由上而下的方法设计程序框架,程序框架如下图所示:

  • ① 在数码相框的项目需求中有很多界面,为了更好的管理这些界面,我们需要以面向对象的思想抽象出一页的结构体(PageAction),并使用 page_manager.c 来管理这些结构体;该结构体的成员如下,后面会再一步一步的完善该结构体:

    PageAction {.run() /* 涉及显示文字和图片 */.GetInputEvent()  /* 获取输入事件 */.Prepare() /* 预先准备好下一个可能的操作对应的图片 */
    };
    
  • ② 上层的 main.c 调用某个 Page(“main”) 中的 Run()函数, Run()函数就会就会取到 main_page.c 这个文件抽象出来的 PageAction 结构体,调用里面的 Run()函数,就会显示出 Main page 界面,就会调用底层的 render.c,根据上层的要求,调用 freetype 库函数(显示文字)或者调用 libjpeg 库函数(显示图片)来得到位图,怎么显示呢?调用底层的 disp_manager.c 在 framebuffer 上显示;
  • ③ 怎么获得输入呢?调用 PageAction 结构里的 GetInputEvent() 函数,最终访问到硬件,即调用 input_manager.c 来根据上层要求,touchscreen.c(触摸屏输入)来获取输入事件。

数码相框(十七、数码相框程序编写_先写框架)相关推荐

  1. python 欢迎自己程序编写_神操作!一句查询让Python帮忙自己写程序

    卧槽,神操作!一句查询让Python帮忙自己写程序 对于很多初入Python编程的同学们而言,对于Python程序的编写,往往会十分生疏,学会了Python的语法,但是转头就忘了,或者是想实现一个基础 ...

  2. python 欢迎自己程序编写_卧槽,神操作!一句查询让Python帮忙自己写程序

    原标题:卧槽,神操作!一句查询让Python帮忙自己写程序 对于很多初入Python编程的同学们而言,对于 Python程序的编写,往往会十分生疏,学会了 Python的语法,但是转头就忘了,或者是想 ...

  3. python登录程序编写-初学Python3 - 写一个登录程序

    本篇主要实现一个简单的登录程序,默认给出一个账号密码,贴出写的代码及过程中遇到的问题. ----------------------------------------要求如下: username p ...

  4. python hello world程序编写_编写高质量代码 改善Python程序的91个建议

    建议1:理解Pythonic概念 建议2:编写Pythonic代码 建议3:理解Python与C语言的不同之处 建议4:在代码中适当添加注释 建议5:通过适当添加空行使代码布局更为优雅.合理 建议6: ...

  5. python hello world程序编写_用Python编写一个简单程序

    按照软件行业传统习惯,当你学习一种新的编程语言如Python时,首先编写一个"Hello World! "程序. 请执行以下步骤,以创造你的"Hello World!&q ...

  6. bat 调用class文件_拯救写框架的程序员!用字节码替代反射,实现任意函数调用...

    作者 | 阿里巴巴文娱高级开发工程师 兰摧 技术类别:JAVA,后端技术,中间件开发,框架开发 技术亮点:字节码实现类似反射的功能,速度接近JAVA原生的调用 一.背景 我们在写一些框架或者中间件时, ...

  7. 程序编写经验教训_编写38本编程书籍的经验教训

    程序编写经验教训 重点 (Top highlight) Unless you've spent a couple of decades coding, you may not remember the ...

  8. 程序编写经验教训_编写您永远都不会忘记的有效绩效评估的经验教训。

    程序编写经验教训 This article is intended for two audiences: people who need to write self-evaluations, and ...

  9. java编写某计算器控制台程序_用java程序编写一个计算器

    点击查看用java程序编写一个计算器具体信息 答:给你一个参考,希望不要被百度吞了当晚餐 import java.awt.BorderLayout; import java.awt.GridLayou ...

最新文章

  1. 江南大学人工智能与计算机学院拟录取名单,江南大学人工智能与计算机学院关于接收2021级硕士研究生调剂的通知...
  2. C#调用非托管代码找不到入口点解决办法
  3. eclipse 创建maven web 项目
  4. HDOJ1269(迷宫城堡)
  5. Spring boot删除员工
  6. 在Spring@Component vs @Repository vs @Service
  7. 【电信增值业务学习笔记】3 语音类增值业务
  8. JavaEE基础(05):过滤器、监听器、拦截器,应用详解
  9. excel两个指标相关性分析_我用Excel发现了数据分析的本质:回归分析
  10. python自动化办公真的好用吗-python如何实现自动化办公?
  11. 多国电子书盈利模式分析
  12. 使用UOS微信桌面版协议登录,wechaty免费版web协议又可以用了
  13. 手机取证设备(手机点验设备、手机合规检测、双路并行手机取证深度分析系统、手机点验数据恢复)
  14. ctfmon是什么启动项_开机启动项命令是什么-百度经验
  15. 神经内科常用评估量表,神经功能缺损评分量表
  16. python小组项目总结报告_项目总结报告多篇汇总
  17. 邮件解析引擎FastMail库使用
  18. 第五人格显示服务器错误,第五人格服务器异常玩家秒变GM,时装随便买,玩家:这感觉真好!...
  19. 夜神模拟器的安装与使用
  20. 使用C#.NET WebBrowser控件导航到不同的网站出现 所请求的资源正在使用中。 (从HRESULT异常:0x800700AA)

热门文章

  1. php 中的time函数,php time函数怎么用?
  2. Python模块(Module)详解
  3. “祖宗”这个词的来历
  4. python画一棵树源代码_Python+Turtle动态绘制一棵树实例分享
  5. FFMpeg example:Filter详解
  6. 中国python之父是谁-Python之父退休
  7. wordpress子比zibll主题V6.4.1免授权博客自媒体付费下载主题
  8. 【博学谷学习记录】超强总结,用心分享|【黑马头条】雪花算法
  9. php indexdb,浏览器端数据库存储方案的整理 -- indexDB 和 localStorage
  10. kvm切换器是什么?