嵌入式电子简单电子相册左右滑动
1.通过操作嵌入式的触屏文件
2.打开lcd的文件显示图片
3.使用读取文件来读取照片的bmp,与获取屏幕的下x,y坐标 确定屏幕位置
代码实现:
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/mman.h>
#include <linux/input.h>//输入设备的头文件int show_bmp(char *path_name,int *addr)
{//读取bmp图片int fd_bmp;fd_bmp = open(path_name,O_RDWR);if(fd_bmp < 0){printf("open bmp fail\n");// printf("path_name\n");// printf("path\n");return -1;}lseek(fd_bmp,54,SEEK_SET);//去掉头54个字节char buf[800*480*3];read(fd_bmp,buf,800*480*3);int x,y;int i = 0;for(y=0;y<480;y++){for(x=0;x<800;x++)*(addr+(479-y)*800+x) = buf[3*(y*800+x)]|buf[3*(y*800+x)+1]<<8|buf[3*(y*800+x)+2]<<16;}close(fd_bmp);return 0;
}int main()
{//打开触摸屏int fd_ts;fd_ts = open("/dev/input/event0",O_RDWR);if(fd_ts < 0){printf("open ts fail\n");return -1;}//打开LCDint fd_lcd;fd_lcd = open("/dev/fb0",O_RDWR);if(fd_lcd < 0){printf("open lcd fail\n");return -1;}//映射LCDint *addr;addr = mmap(NULL,800*480*4,PROT_READ|PROT_WRITE,MAP_SHARED,fd_lcd,0);if(addr == NULL){printf("mmap fail\n");return -1;}//将要显示的图片char *path[5] = {"a.bmp","b.bmp","c.bmp","d.bmp","e.bmp"};//默认第一张图片int i=0;show_bmp(path[i],addr);struct input_event ts;int x,y,x1,y1;while(1){ //取出按下去的值while(1){ read(fd_ts,&ts,sizeof(struct input_event));if(ts.type == EV_ABS&&ts.code == ABS_X){//printf("x=%d ",ts.value); //蓝色x = ts.value; }if(ts.type == EV_ABS&&ts.code == ABS_Y){//printf("y=%d\n",ts.value); //蓝色y = ts.value;}if(ts.type == EV_KEY && ts.code == BTN_TOUCH&&ts.value==1){printf("按下: %d %d\n",x,y);break;} }//取出松手后的值while(1){ read(fd_ts,&ts,sizeof(struct input_event));if(ts.type == EV_ABS&&ts.code == ABS_X){//printf("x=%d ",ts.value); //蓝色x1 = ts.value; }if(ts.type == EV_ABS&&ts.code == ABS_Y){//printf("y=%d\n",ts.value); //蓝色y1 = ts.value;}if(ts.type == EV_KEY && ts.code == BTN_TOUCH&&ts.value==0){ printf("松手:%d %d\n",x1,y1);break;} } //通过比较两者的差值来判断滑动的方向//右滑动if(x1-x > 50){i++; if (i>4) i=0;show_bmp(path[i],addr);printf("right\n"); }//左滑动if(x1-x < -50){i--;if (i<0) i=4;show_bmp(path[i],addr);printf("left\n");} //下滑动if(y1-y > 50){printf("down\n");}//上滑动if(y1-y < -50){printf("up\n");} }return 0;
}
嵌入式电子简单电子相册左右滑动相关推荐
- 基于嵌入式linux电子相册设计,用于LINUX或者嵌入式LINUX的电子相册程序,基于QT开发...
用于LINUX或者嵌入式LINUX的电子相册程序,基于QT开发,包含源代码和编译好的可执行程序 linux_project\album\album.pro .............\.....\al ...
- 嵌入式电子软硬件开发编程培训面对面手把手包学会
1学习内容 1.1电子常识.常见电子器件识别.功能介绍 1.2常见电路分析.数字电路设计.模拟电路设计 1.3PROTEL软件的使用.原理图设计.PCB设计 1.4常用仪器原理.操作 1.5 C语言介 ...
- 嵌入式Qt-控制硬件:滑动条控制RGB灯
前面的几篇文章,介绍Qt例程,都是和硬件无关的,Windows平台和嵌入式平台都能运行. 本篇,来测试一下Qt界面控制嵌入式平台上的硬件,以野火i.MX6ULL板子上的RGB LED为例,实现Qt界面 ...
- 嵌入式linux音乐电子相册制作软件,ApowerShow – 超级轻便的在线照片音乐视频制作软件...
有没有什么好用的照片视频制作软件呢?我大概对比了一下国内的其他软件,发现转场效果很多,但是需要自己去添加.它们的界面感觉有点繁琐,不是那么简洁. 其实除了使用国内的照片视频制作软件,你还可以使用Apo ...
- 防人人网客户端侧滑效果,简单实现Android滑动菜单特效
人人网客户端,有一个侧滑效果不错,就是菜单(menu)和内容(content)可以实现侧滑. 首先,我们先来看一下最终的效果图,有图有真相,这样讲解起来,会更加的清楚. 程序运行时,我们刚开始看到的是 ...
- 毕业设计 嵌入式 电子时钟设计与实现
文章目录 单片机电子时钟程序设计 实现效果 最后 单片机电子时钟程序设计 共用体除非必要,否则学长不推荐使用,枚举的用法比较简单,在本书19章的项目实践中有很好的示例,这节课我们先来练习一下结构体的使 ...
- 简单电子相册视频制作的步骤和要点
1.套用AE模板,找到图片,按住alt将自己的图片拖拉到工作区,将原来的例图覆盖,在按alt+E制作影片,输出为avi格式的视频: 2.导出的视频为avi格式比较大,十几秒就有2G左右,用格式工厂转换 ...
- 模拟滑动android无障碍,Android无障碍简单开发-模拟滑动点击输入等
似乎除了input type=password的edit text 其他所有的UI都可以进行操作.直接开始. 首先配置环境. 创建一个service 清单中代码如下,就算用AS直接创建,也需要配置一些 ...
- ARM嵌入式裸机简单使用
基于正点原子 ALPHA开发板,长文预警,建议收藏用到之后再查看 文章目录 主频与时钟 I.MX6U系统时钟分析 7路PLL 时钟树 外设如何选择时钟 需要初始化的PLL和PFD I.MX6U系统配置 ...
最新文章
- 使用 OpenSSL 替代 Telnet
- ascii码对照表十六进制_ASCII
- 如何为windows服务添加安装程序(转)
- 2019年Vue学习路线图
- 【数据结构与算法】之深入解析“K个逆序对数组”的求解思路与算法示例
- 【英语学习】4000 Words 【V1】【U01】The Lion and the Rabbit
- Sitecore 8.2 页面架构设计:模板与组件
- 设计者模式之GOF23命令模式
- 安装和卸载程序时总是出现2502,2503错误代码的解决方法
- LINUX没有SVN,怎么知道哪些文件修改了
- 2015 年 5 月软考网络工程师真题与参考答案
- 摘要:HenCoder Android 自定义 View 1-7:属性动画 Property Animation(进阶篇)
- ftdi usb转串口驱动
- 关于软件开发的那些事(三):聊聊软件项目管理及成本核算
- MMD中的VMD文件格式详解
- Latex 摘要排版
- 经典网页三剑客html、css 和 JavaScript实现的导航网页
- linux离线日志分析工具,loganalyzer——日志分析工具
- Linux开机自启动挂盘以及进入紧急模式的解决办法
- AI行为树的基础运作原理