文章目录
- 1、需求分析
- 2、设计框架
- 3、编写代码
- 4、测试
下一节:2、数码相框之显示文字
设计产品时的思路大体如下:
- 弄清需求
- 设计框架
- 编写代码
- 测试
1、需求分析
2、设计框架
系统工作大致流程如下:
1、输入进程
- 触摸屏线程(或按键线程)不断调用tslib得到触摸屏(或按键数据)数据,封装好数据上报给主控,若使用
socket
方式上报数据的话,就可以很容易去掉触摸屏线程或者按键线程。 - 主控线程得到上报的数据之后发出
socket
;
2、显示进程
- 根据接收线程中接收到的数据决定显示五幅图片中的哪一个;
- 若想显示左边的图片,则主控立刻启动DMA,将左边线程对应内存中的数据传输到LCD的显存中;
- 若发现当前在屏幕上按下手动显示、自动显示的对话框,就直接将对应菜单的图片显示在显存上;若要对话框消失,则将之前的图片数据移过来就可以恢复之前显示的图片了。
所以数码相框的总体框架如下:
1、输入进程
- 触摸屏线程:使用
tslib
得到触摸屏上的数据,将事件进行封装,然后上报给主控线程; - 按键线程:读取按键,将事件进行封装,然后上报给主控线程;
- 主控线程:得到上报的事件,使用
socket
发送给显示进程
2、显示进程
socket线程
:接收socket
数据;- 放大线程:准备好当前图片的放大数据;
- 缩小线程:准备好当前图片的缩小数据;
- 上一幅线程:准备好上一幅图片的数据;
- 下一幅线程:准备好下一幅图片的数据;
- 当前图片线程:准备好当前要显示的图片;
- 主控线程:根据
socket
得到的事件,决定显示哪一幅图片;
3、驱动程序
- 分配五块内存用来存放图片数据;
- 设置DMA操作用来传输图片数据;
- 设置
mmap
用来给应用程序和操作系统之间进行数据传输; - 还有触摸屏、按键、LCD的驱动程序;
其中使用线程为了各个线程之间可以共享一些资源变量等等。使用进程是为了保持独立。
程序的框架如下:
触摸屏:主按线程,通过socket发给显示进程---------------------------封装事件:ts线程 按键线程---------------------------操作系统
封装的数据有:时间、类型(点击、上下左右移动)、位置、速度、幅度显示
放大(上) 缩小(下) 左边 右边 当前 显示控制 接收sochketlibjpegmmap
----------------------------------------
内存 内存 内存 内存 内存framebuffer-----------LCD
3、编写代码
暂时未到此步骤。
4、测试
暂时未到此步骤。
下一节:2、数码相框之显示文字