韦东山-数码相框(1)

做工程的步骤

  1. 弄清需求
  2. 设计框架
  3. 编写代码
  4. 测试

项目需求

  1. 上电,LCD显示一副图片;

  2. 然后根据默认配置,决定停留还是自动显示下一副;

  3. 点击一下,出现对话框,选择手动显示或者自动显示;

  4. 根据手势的上下左右设计对应的执行逻辑:向上放大,向下缩小,左右是显示上/下一副图像。

  5. 当左右移动速度很快时,显示下下一副图像。

设计框架

输入进程

可以通过触摸屏或者按键对屏幕的事件、时间、类型、数据进行封装,通过socket发送给服务器。事件有点击事件、移动事件;数据的类型有方向、幅度、速度,以及位置数据。

触摸屏/按键输入
事件检测
事件类型
点击事件
移动事件
封装事件数据
数据封装完成
通过Socket发送
数据发送到服务器

分为三个线程:

  • 主控线程:得到上报的事件,通过socket发送数据
  • ts线程:使用tslib读取触摸TS屏幕,封装事件,上报数据
  • 按键线程:读取按键数据,封装事件,上报数据

显示进程

  1. 一个线程,接受socket数据,根据数据进入哪个进程。数据放入全局变量里面,属于同一个进程的线程可以使用这个变量。

  2. 然后分五个线程,当前、左、右、上、下线程,将对应功能的数据提前准备好。通过这样的方式,可以更快的加载数据,优化用户体验。

  3. 通过libjpeg库,将图片解压出来,存入到驱动分配的对应的内存。使用mmap可以直接让线程操作内存数据。

    image

  4. 最后通过主控线程,控制图片的显示,如果要显示图片,用DMA传输到显存,通过LCD驱动显示。用DMA的原因是因为DMA传输数据很快。

  • 11
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值