首页 > 其他分享 >韦东山-数码相框(1)

韦东山-数码相框(1)

时间:2024-03-27 14:57:27浏览次数:34  
标签:显示 封装 东山 -- 相框 数码 线程 事件 数据

做工程的步骤

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

项目需求

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

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

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

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

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

设计框架

输入进程

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

graph TB A[触摸屏/按键输入] --> B[事件检测] B --> C{事件类型} C --> D[点击事件] C --> E[移动事件] D --> F[封装事件数据] E --> F F --> G[数据封装完成] G --> H[通过Socket发送] H --> I[数据发送到服务器]

分为三个线程:

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

显示进程

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

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

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

    image

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

标签:显示,封装,东山,--,相框,数码,线程,事件,数据
From: https://www.cnblogs.com/rose24/p/18099123/wei-dongshandigital-photo-frame-1-zlwdn9

相关文章

  • 基于EP4CE6F17C8的FPGA双数码管六十进制秒计数实例
    一、电路模块本例的电路模块与“基于EP4CE6F17C8的FPGA数码管动态显示实例”中的完全一样,此处就不再给出了。二、实验代码本例实现2个数码管循环显示00~59,显示间隔为1秒,代码使用Verilog编写,采用例化的形式,共有三个文件。先编写数码管实现显示字形解码的程序,模块名称为seg_deco......
  • 数码管的动态显示
    1.共阴极数码管实现HELLO #include<reg51.h>charstr[]={0x76,0x79,0x38,0x38,0x3F};//HELLOcharwei[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; voiddelay(intn){ inti=0,j=0; for(i=0;i<n;i++) { for(j=0;j<120;j++); }} voidseg(){ ......
  • FPGA使用两个HC595驱动8位数码管
    FPGA使用两个HC595驱动8位数码管本文章给出使用FPGA3根线来驱动8位数码管的示例代码,输入为disp_data,共7*8=56位,输出输入如图所示。硬件方面参数该程序只能控制数码管的7位,如有小数点位则控制不了,如有需要请自行修改。最低7位是最右边的那个数码管(这个需要根据你自己的板子......
  • 洛谷 P1379 八数码难题 A* 题解
    刚做完一道模板A*,看到这题我直接小脑萎缩了...阿米诺斯!这怎么用A*?!——刚开题的我beeeeeeeeeelike甚至比模板简单(这是绿的...)其实会是会但是纸张的是这玩意我不会搞估价函数我草!然后突然想到能不能把这个状态下有多少个数字不在目标位置作为估价函数?我喜欢\(IDA*\),有兴趣......
  • proteus+keil5仿真学习笔记(第二章 1位数码管计数器)
    第二章1位数码管计数器目录第二章1位数码管计数器前言一、数码管的结构原理二、按键应用三、中断处理四、程序设计及仿真proteus电路程序总结前言主要介绍数码管、按键的应用,并涉及单片机中断处理技术。一、数码管的结构原理数码管结构如下:有两种数码......
  • proteus+keil5仿真学习笔记(第三章 4位数码管计数器)
    第三章4位数码管计数器前言一、多位数码管显示程序二、定时器原理三、程序设计与仿真proteus电路程序总结前言4位数码管计数器与1位数码管计数器相比,增加了片选电路,以确定选择哪个数码管进行工作。单片机定时器的应用也与中断处理相似,需要设置一些规定的寄存器,以......
  • 基于EP4CE6F17C8的FPGA单数码管秒计数实例
    一、电路模块本例的电路模块与“基于EP4CE6F17C8的FPGA数码管动态显示实例”中的完全一样,此处就不再给出了。二、实验代码本例实现1个数码管循环显示字符1~F,显示间隔为1秒,代码使用Verilog编写,采用例化的形式,共有三个文件。先编写数码管实现显示字形解码的程序,模块名称为seg_de......
  • EasyRecovery2024永久免费版数据恢复软件,无论是硬盘、光盘、U盘/移动硬盘还是数码相机
     尊敬的用户们,大家好!今天,我将为大家深入介绍EasyRecovery这款软件的主要功能。EasyRecovery,作为数据恢复领域的佼佼者,凭借其强大的功能和卓越的性能,赢得了广大用户的青睐。首先,让我们来谈谈它的数据恢复功能。EasyRecovery具备出色的数据恢复能力,无论是硬盘、光盘、U盘/移动......
  • FPGA入门笔记008——数码管动态扫描设计与验证
    #FPGA入门笔记008——数码管动态扫描设计与验证1、数码管动态扫描原理​ 8段数码管的结构图如图1所示:图1——8段数码管结构图(a为共阴极,b为共阳极)​ 对于共阴数码管需要给对应段以高电平才会使其点亮,而对于共阳极数码管则需要给低电平才会点亮。AC620上板载的是共阳极数......
  • 845. 八数码(C++)
    在一个 3×3的网格中,1∼8这 8 个数字和一个 x 恰好不重不漏地分布在这 3×3的网格中。例如:123x46758在游戏过程中,可以把 x 与其上、下、左、右四个方向之一的数字交换(如果存在)。我们的目的是通过交换,使得网格变为如下排列(称为正确排列):12345678......