粤嵌——电子相册代码实现
这个代码是实现了上下左右滑动功能。使用的板子是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;}
}
粤嵌——电子相册代码实现相关推荐
- 利用粤嵌LinuxGEC6818开发板实现电子相册
实验目的 利用粤嵌LinuxGEC6818开发板实现电子相册,要求如下: 实验操作必须在Linux操作系统下完成 源代码模块化设计 实现水平或者垂直滑动切换图片 实验步骤 因为操作需要在Linux下运 ...
- 基于粤嵌gec6818开发板嵌入式开发电子相册,音乐播放,视频播放,2048游戏
一.功能与要求 实现功能:本系统需要使用粤嵌的GEC-6818开发板设计一款娱乐影音系统,其中包括图片显示(相册).音乐播放.视频播放,游戏四个部分,在每个部分内部,具有操控各个部分的功能触摸按键.本 ...
- 粤嵌gec6818LED屏幕上画图 太极图 图片显示 电子相册 2048小游戏 实现识别触摸坐标的识别 电子自助点餐设计等项目
交叉开发 在一个有编辑/编译功能的PC机上进行编辑/编译,生成的可执行文件通过 交叉开发工具下载到目标机(GEC-6818) 开发板 --- Linux内核 --- ...
- C语言实现电子音乐相册---粤嵌GEC6818嵌入式系统实训
C语言实现电子音乐相册---粤嵌GEC6818嵌入式系统实训 功能演示: 版本介绍 滑动式 点击放大式 完整版 至尊版 获取方式 功能演示: 演示视频: 滑动式 点击放大式 版本介绍 分为滑动式.点击 ...
- python语言怎么学-怎么学Python语言呢?粤嵌Python学习路线入门
Python的设计具有很强的可读性,相比其他语言经常使用英文关键字和一些标点符号,Python具有比其他语言更有特色的语法结构.随着大数据,人工智能时代的来临,Python已经成为有发展潜质的机器语. ...
- 粤嵌GE6818实现识别触摸坐标的识别
推荐阅读:C语言实现2048小游戏-粤嵌GE6818嵌入式系统实训 C语言实现电子音乐相册-粤嵌GEC6818嵌入式系统实训 代码 // main.c #include "bmp.h&quo ...
- Linux交叉编译+粤嵌LCD实现三色图
推荐阅读:C语言实现2048小游戏-粤嵌GEC6818嵌入式系统实训 C语言实现电子音乐相册-粤嵌GEC6818嵌入式系统实训 #include <stdio.h> #include &l ...
- C语言实现2048小游戏---粤嵌GE6818嵌入式系统实训
C语言实现2048小游戏---粤嵌GE6818嵌入式系统实训 实现的全部功能: 功能演示: 版本介绍 简易版--大佬选这个 完整版--想保研.想得高分.想要装逼的同学选这个 至尊版--零基础的.想要装 ...
- 基于6818粤嵌开发板的2048游戏项目
小白笔记 目录 前言 一.lcd.c代码 lcd屏幕初始化 在lcd屏幕上任意一点显示颜色 关闭lcd屏幕 lcd.h 二.bmp.c代码 bmp格式 bmp图片读取 bmp.h 三.work.c部分 ...
最新文章
- Spring如何处理线程并发
- csky linux 编译内核,TQ2440的EmbedSky_hello模块编译内核问题及解决
- layer弹出层 获取index
- python数码管应用到物流_使用Python,实现程序运行计时的数码管表示
- 带括号多项式版四则运算
- 华为、海康--硬件工程师面经
- html5将网页保存成图片,保存网页为图片(保存整个网页为图片)
- 第十二章:如何制定里程碑
- Shi-Tomasi角点检测算法
- i12蓝牙耳机怎么设置成中文_耳朵里的小精灵——乐迈车载智能蓝牙耳机
- kubernetes 401 You have been logged out because your token has expired
- matlab拟合数据并输出公式,曲线拟合以及生成公式
- 串口、终端应用程序 API termios
- 名编辑电子杂志大师教程 | 设置电子杂志的高宽比例
- 重组的脱氧核糖核酸酶 I,生物工艺级相关研究
- Android中怎么重新启动APP或系统
- 计算机网络主要由哪三个部分组成,计算机网络由哪几个部份组成
- 微信开发者工具中显示实时时间
- Android简易登录界面
- AcWing861 二分图的最大匹配 匈牙利算法
热门文章
- 第6章:可维护性软件构建方法 6.2可维护性设计模式
- JQuery中的queue()及dequeue()
- UIbutton 圆角和边线
- WebView + jQuery
- 修改sqlplus中显示时间日期的格式
- flex图表数据动态更新效果示例
- Everest 0.6 设置ADSL上网
- asp.net用url重写URLReWriter实现任意二级域名 (转)
- php 写入exif,PHP写入读取图片自定义信息_exif或者什么的?
- 两个点 定位_深圳Mark点定位的一般原理与步骤