博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
1.数码相框-相框框架分析(1)
阅读量:6917 次
发布时间:2019-06-27

本文共 737 字,大约阅读时间需要 2 分钟。

项目流程

  • 弄清需求(需要完成什么)
  • 设计框架(怎么实现需求)
  • 编写代码(怎么通过代码设计)
  • 测试

弄清需求

(1)上电,LCD显示一副图片

(2)根据配置文件,决定停留当前界面还是自动显示下一张

(3)点击一下,出现一个对话框(手动显示,自动显示)

(4)上放大,下缩小,左右滑动切换图片

(5)左右滑动很快时,切换上上/下下一张

设计框架

通过两部分来完成:

1)输入进程(如下图所示)

创建3个线程:触摸线程、按键线程、主控线程

-触摸线程:不停调用tslib,当有数据后,封装成事件,上报主控线程

-按键线程:没按下时休眠,按下时便产生中断,封装好上报主控线程

-主控线程:收到数据后,用socket发送给显示进程

 

 

2)显示进程(如下图所示)

创建7个线程

-socket接收线程:

用来接收socket,比如收到左划的数据,便通知事件到主控线程

-主控线程:

根据得到的事件,然后调用驱动通过DMA将准备好的数据(位于某个内存上)放到显存地址framebuffer上.

-其它5个进程(当前,左,右,上,下):

比如当主控显示完一个图片后,则开始准备好(解压上幅图片/下幅图片,放大,缩小等数据),方便主控线程直接调用,从而提高速度.

图片数据是通过应用程序用库libjpeg解压(将jpeg格式转换为LCD显示格式),使用mmap()函数传到某个内存上.

 

 

当前线程的意义:

之前我们说过,当点击一下,会出现一个对话框,若退出对话框后, 便会通知当前线程,从而显示当前图片。

对话框:

按钮以及边框直接做成一个个图片,调用对话框时,直接覆盖LCD显存上即可

 

总结:

使用多线程好处在于:每个模块独立起来,方便以后修改,而且全局变量在多线程里可以共用.

 

 

 

 

下章学习:

       

转载地址:http://eexcl.baihongyu.com/

你可能感兴趣的文章
saltstack搭建集群3
查看>>
Python学习(13)--Lambda表达式和switch语句的实现
查看>>
the vmrc console has disconnected attempting to reconnect
查看>>
配置bind主域名服务器
查看>>
DeepMind让AI系统拥有记忆,教机器学习系统举一反三打游戏
查看>>
WordPress用户登录后根据不同的角色跳转到不同的页面处理
查看>>
利用autobench测试web服务器极限并发数
查看>>
视图和模型变换
查看>>
Matlab绘图控制命令
查看>>
C#实现CAD数据转shape或mdb
查看>>
使用MiniProfiler给Asp.net MVC和Entity Framework号脉(附源码)
查看>>
机器学习的算法选择
查看>>
java:正则表达式 --转http://blog.csdn.net/yangjiali014/archive/2007/06/19/1658235.aspx
查看>>
猜想:一组勾股数a^2+b^2=c^2中,a,b之一必为4的倍数。
查看>>
RVM 安装与使用帮助
查看>>
django学习笔记(4)
查看>>
Hadoop集群(第3期)_VSFTP安装配置
查看>>
centos7查看系统版本,查看机器位数x86-64
查看>>
Android GIS开发系列-- 入门季(6)GraphicsLayer添加文字与图片标签
查看>>
.Net处理Oracle中Clob类型字段总结
查看>>