zoukankan      html  css  js  c++  java
  • 1.数码相框-相框框架分析(1)

    转载:https://www.cnblogs.com/lifexy/p/8467503.html

    项目流程

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

    弄清需求

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

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

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

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

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

    设计框架

    通过两部分来完成:

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

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

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

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

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

     

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

    创建7个线程

    -socket接收线程:

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

    -主控线程:

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

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

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

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

     

    当前线程的意义:

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

    对话框:

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

    总结:

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

     

  • 相关阅读:
    awk
    tac
    cat
    less
    more
    head
    vim
    linux安装redis
    Redis for Python开发手册
    Python3.x标准模块库目录
  • 原文地址:https://www.cnblogs.com/jorbin0850/p/11617005.html
Copyright © 2011-2022 走看看