这个代码是实现了上下左右滑动功能。使用的板子是800*480大小的

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>
#include <strings.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/mman.h>
#include <fcntl.h>
#include <unistd.h>
#include <linux/input.h>
#define UP    1
#define DOWN  2
#define LEFT  3
#define RIGHT 4#define RGB_SIZE 800*480*3
#define LCD_SIZE 800*480
int lcd_fd;
int main()
{lcdinit();char *p[8]= {"/home/czz/00.bmp","/home/czz/1.bmp","/home/czz/2.bmp","/home/czz/3.bmp","/home/czz/4.bmp","/home/czz/5.bmp","/home/czz/7.bmp","/home/czz/88.bmp"};int i=0;while(1){display(p[i]);int dirt=GetDirection();if(dirt==1) //up{i=(i+7)%8;}else if(dirt==2)  //down{i=(i+1)%8;}else if(dirt==3)  //left{i=(i+7)%8;}else{i=(i+1)%8;}display(p[i]);}lcdclose();return 0;
}
int lcdinit()
{lcd_fd = open("/dev/fb0", O_RDWR);if (lcd_fd == -1){printf("Open lcd failed!!\n");return -1;}
}
int lcdclose()
{close(lcd_fd);
}
int display(char *p)
{lseek(lcd_fd,0,SEEK_SET);int bmp_fd = open(p, O_RDWR);if (bmp_fd == -1){printf("Open bmp filed\n");return -1;}off_t offset = lseek(bmp_fd, 54, SEEK_SET);if (offset == -1){printf("Offset failed!\n");return -1;}char bmp_buf[RGB_SIZE];size_t re_ret = read(bmp_fd, bmp_buf, RGB_SIZE);if (re_ret == -1){printf("Read failed!\n");return -1;}int lcd_buf[LCD_SIZE];int i;for (i=0; i<LCD_SIZE; i++){lcd_buf[i] = bmp_buf[i*3+2]<<16 | bmp_buf[i*3+1]<<8 | bmp_buf[i*3+0]<<0;}int fli_buf[LCD_SIZE];int x, y;for(y = 0; y < 480; y++){for(x = 0; x < 800; x++){fli_buf[y*800+x] = lcd_buf[(479-y)*800+x];}}size_t wr_fd = write(lcd_fd, fli_buf, LCD_SIZE*4);if (wr_fd == -1){printf("Write data into lcd failed!\n");return -1;}close(bmp_fd);return 0;
}
int GetDirection()
{int fd = open("/dev/input/event0",O_RDWR);if(fd == -1){printf("Open Error!\n");return -1;}struct input_event event0;int res = 0;int x_start = -1;int y_start = -1;int x_end = -1;int y_end = -1;while(1){res = read(fd,&event0,sizeof(event0));if(res != sizeof(event0)){continue;}if(event0.type == EV_KEY && event0.code == BTN_TOUCH && event0.value == 0){break;}if(event0.type == EV_ABS){if(event0.code == ABS_PRESSURE && event0.value == 0){break;}if(event0.code == ABS_X){if(x_start == -1){x_start = event0.value;}x_end = event0.value;}if(event0.code == ABS_Y){if(y_start == -1){y_start = event0.value;}y_end = event0.value;}}}if(abs(x_end - x_start) > abs(y_end - y_start)){if(x_end - x_start > 0){return RIGHT;}elsereturn LEFT;}if(abs(x_end - x_start) < abs(y_end - y_start)){if(y_end - y_start > 0){return DOWN;}elsereturn UP;}
}

粤嵌——电子相册代码实现相关推荐

  1. 利用粤嵌LinuxGEC6818开发板实现电子相册

    实验目的 利用粤嵌LinuxGEC6818开发板实现电子相册,要求如下: 实验操作必须在Linux操作系统下完成 源代码模块化设计 实现水平或者垂直滑动切换图片 实验步骤 因为操作需要在Linux下运 ...

  2. 基于粤嵌gec6818开发板嵌入式开发电子相册,音乐播放,视频播放,2048游戏

    一.功能与要求 实现功能:本系统需要使用粤嵌的GEC-6818开发板设计一款娱乐影音系统,其中包括图片显示(相册).音乐播放.视频播放,游戏四个部分,在每个部分内部,具有操控各个部分的功能触摸按键.本 ...

  3. 粤嵌gec6818LED屏幕上画图 太极图 图片显示 电子相册 2048小游戏 实现识别触摸坐标的识别 电子自助点餐设计等项目

    交叉开发     在一个有编辑/编译功能的PC机上进行编辑/编译,生成的可执行文件通过     交叉开发工具下载到目标机(GEC-6818)          开发板 --- Linux内核 --- ...

  4. C语言实现电子音乐相册---粤嵌GEC6818嵌入式系统实训

    C语言实现电子音乐相册---粤嵌GEC6818嵌入式系统实训 功能演示: 版本介绍 滑动式 点击放大式 完整版 至尊版 获取方式 功能演示: 演示视频: 滑动式 点击放大式 版本介绍 分为滑动式.点击 ...

  5. python语言怎么学-怎么学Python语言呢?粤嵌Python学习路线入门

    Python的设计具有很强的可读性,相比其他语言经常使用英文关键字和一些标点符号,Python具有比其他语言更有特色的语法结构.随着大数据,人工智能时代的来临,Python已经成为有发展潜质的机器语. ...

  6. 粤嵌GE6818实现识别触摸坐标的识别

    推荐阅读:C语言实现2048小游戏-粤嵌GE6818嵌入式系统实训 C语言实现电子音乐相册-粤嵌GEC6818嵌入式系统实训 代码 // main.c #include "bmp.h&quo ...

  7. Linux交叉编译+粤嵌LCD实现三色图

    推荐阅读:C语言实现2048小游戏-粤嵌GEC6818嵌入式系统实训 C语言实现电子音乐相册-粤嵌GEC6818嵌入式系统实训 #include <stdio.h> #include &l ...

  8. C语言实现2048小游戏---粤嵌GE6818嵌入式系统实训

    C语言实现2048小游戏---粤嵌GE6818嵌入式系统实训 实现的全部功能: 功能演示: 版本介绍 简易版--大佬选这个 完整版--想保研.想得高分.想要装逼的同学选这个 至尊版--零基础的.想要装 ...

  9. 基于6818粤嵌开发板的2048游戏项目

    小白笔记 目录 前言 一.lcd.c代码 lcd屏幕初始化 在lcd屏幕上任意一点显示颜色 关闭lcd屏幕 lcd.h 二.bmp.c代码 bmp格式 bmp图片读取 bmp.h 三.work.c部分 ...

最新文章

  1. Spring如何处理线程并发
  2. csky linux 编译内核,TQ2440的EmbedSky_hello模块编译内核问题及解决
  3. layer弹出层 获取index
  4. python数码管应用到物流_使用Python,实现程序运行计时的数码管表示
  5. 带括号多项式版四则运算
  6. 华为、海康--硬件工程师面经
  7. html5将网页保存成图片,保存网页为图片(保存整个网页为图片)
  8. 第十二章:如何制定里程碑
  9. Shi-Tomasi角点检测算法
  10. i12蓝牙耳机怎么设置成中文_耳朵里的小精灵——乐迈车载智能蓝牙耳机
  11. kubernetes 401 You have been logged out because your token has expired
  12. matlab拟合数据并输出公式,曲线拟合以及生成公式
  13. 串口、终端应用程序 API termios
  14. 名编辑电子杂志大师教程 | 设置电子杂志的高宽比例
  15. 重组的脱氧核糖核酸酶 I,生物工艺级相关研究
  16. Android中怎么重新启动APP或系统
  17. 计算机网络主要由哪三个部分组成,计算机网络由哪几个部份组成
  18. 微信开发者工具中显示实时时间
  19. Android简易登录界面
  20. AcWing861 二分图的最大匹配 匈牙利算法

热门文章

  1. 第6章:可维护性软件构建方法 6.2可维护性设计模式
  2. JQuery中的queue()及dequeue()
  3. UIbutton 圆角和边线
  4. WebView + jQuery
  5. 修改sqlplus中显示时间日期的格式
  6. flex图表数据动态更新效果示例
  7. Everest 0.6 设置ADSL上网
  8. asp.net用url重写URLReWriter实现任意二级域名 (转)
  9. php 写入exif,PHP写入读取图片自定义信息_exif或者什么的?
  10. 两个点 定位_深圳Mark点定位的一般原理与步骤