数码相框(十七、数码相框程序编写_先写框架)
注:本人已购买韦东山老师第三期项目视频,内容来源《数码相框项目视频》,只用于学习记录,如有侵权,请联系删除。
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(触摸屏输入)来获取输入事件。
数码相框(十七、数码相框程序编写_先写框架)相关推荐
- python 欢迎自己程序编写_神操作!一句查询让Python帮忙自己写程序
卧槽,神操作!一句查询让Python帮忙自己写程序 对于很多初入Python编程的同学们而言,对于Python程序的编写,往往会十分生疏,学会了Python的语法,但是转头就忘了,或者是想实现一个基础 ...
- python 欢迎自己程序编写_卧槽,神操作!一句查询让Python帮忙自己写程序
原标题:卧槽,神操作!一句查询让Python帮忙自己写程序 对于很多初入Python编程的同学们而言,对于 Python程序的编写,往往会十分生疏,学会了 Python的语法,但是转头就忘了,或者是想 ...
- python登录程序编写-初学Python3 - 写一个登录程序
本篇主要实现一个简单的登录程序,默认给出一个账号密码,贴出写的代码及过程中遇到的问题. ----------------------------------------要求如下: username p ...
- python hello world程序编写_编写高质量代码 改善Python程序的91个建议
建议1:理解Pythonic概念 建议2:编写Pythonic代码 建议3:理解Python与C语言的不同之处 建议4:在代码中适当添加注释 建议5:通过适当添加空行使代码布局更为优雅.合理 建议6: ...
- python hello world程序编写_用Python编写一个简单程序
按照软件行业传统习惯,当你学习一种新的编程语言如Python时,首先编写一个"Hello World! "程序. 请执行以下步骤,以创造你的"Hello World!&q ...
- bat 调用class文件_拯救写框架的程序员!用字节码替代反射,实现任意函数调用...
作者 | 阿里巴巴文娱高级开发工程师 兰摧 技术类别:JAVA,后端技术,中间件开发,框架开发 技术亮点:字节码实现类似反射的功能,速度接近JAVA原生的调用 一.背景 我们在写一些框架或者中间件时, ...
- 程序编写经验教训_编写38本编程书籍的经验教训
程序编写经验教训 重点 (Top highlight) Unless you've spent a couple of decades coding, you may not remember the ...
- 程序编写经验教训_编写您永远都不会忘记的有效绩效评估的经验教训。
程序编写经验教训 This article is intended for two audiences: people who need to write self-evaluations, and ...
- java编写某计算器控制台程序_用java程序编写一个计算器
点击查看用java程序编写一个计算器具体信息 答:给你一个参考,希望不要被百度吞了当晚餐 import java.awt.BorderLayout; import java.awt.GridLayou ...
最新文章
- 江南大学人工智能与计算机学院拟录取名单,江南大学人工智能与计算机学院关于接收2021级硕士研究生调剂的通知...
- C#调用非托管代码找不到入口点解决办法
- eclipse 创建maven web 项目
- HDOJ1269(迷宫城堡)
- Spring boot删除员工
- 在Spring@Component vs @Repository vs @Service
- 【电信增值业务学习笔记】3 语音类增值业务
- JavaEE基础(05):过滤器、监听器、拦截器,应用详解
- excel两个指标相关性分析_我用Excel发现了数据分析的本质:回归分析
- python自动化办公真的好用吗-python如何实现自动化办公?
- 多国电子书盈利模式分析
- 使用UOS微信桌面版协议登录,wechaty免费版web协议又可以用了
- 手机取证设备(手机点验设备、手机合规检测、双路并行手机取证深度分析系统、手机点验数据恢复)
- ctfmon是什么启动项_开机启动项命令是什么-百度经验
- 神经内科常用评估量表,神经功能缺损评分量表
- python小组项目总结报告_项目总结报告多篇汇总
- 邮件解析引擎FastMail库使用
- 第五人格显示服务器错误,第五人格服务器异常玩家秒变GM,时装随便买,玩家:这感觉真好!...
- 夜神模拟器的安装与使用
- 使用C#.NET WebBrowser控件导航到不同的网站出现 所请求的资源正在使用中。 (从HRESULT异常:0x800700AA)
热门文章
- php 中的time函数,php time函数怎么用?
- Python模块(Module)详解
- “祖宗”这个词的来历
- python画一棵树源代码_Python+Turtle动态绘制一棵树实例分享
- FFMpeg example:Filter详解
- 中国python之父是谁-Python之父退休
- wordpress子比zibll主题V6.4.1免授权博客自媒体付费下载主题
- 【博学谷学习记录】超强总结,用心分享|【黑马头条】雪花算法
- php indexdb,浏览器端数据库存储方案的整理 -- indexDB 和 localStorage
- kvm切换器是什么?