赞
踩
- //main.c 文件
-
- #include "bmptool.h"
- int main(int argc,char *argv[])
- {
- dlist mylist=list_init();
- show_search_bmp(argv[1],mylist);
- dlist p=mylist;
- show_bmp(mylist->msg.path);
-
- while(1)
- {
- hand_touch(p);
- if(p->location.x<=800&&p->location.x>400)
- {
- p=p->next;
- }
- else
- {
- p=p->prev;
- }
- show_bmp(p->msg.path);
-
- }
- }
-
- //dlist_and_bmp.c文件
- #include "bmptool.h"
-
-
- int show_search_bmp(const char *dir,struct doublelist *list)
- {
- DIR *fd=opendir(dir);
- char buf[1024]={0};
- bzero(buf,1024);
- if(fd==NULL)
- {
- perror("open is fail\n");
- return -1;
- }
- struct dirent *mydirent;
- while((mydirent=readdir(fd))!=NULL)
- {
- if(strcmp(mydirent->d_name,".")==0||strcmp(mydirent->d_name,"..")==0)
- continue;
-
- if(mydirent->d_type==DT_DIR)
- {
- bzero(buf,100);
- sprintf(buf,"%s/%s",dir,mydirent->d_name);
- show_search_bmp(buf,list);
- }
- else if(strstr(mydirent->d_name,".bmp"))
- {
- bzero(buf,100);
- sprintf(buf,"%s/%s",dir,mydirent->d_name);
- struct stat l;
- stat(buf, &l);
- list_add_tail1(buf,l.st_size,list);
-
- }
-
- }
-
- return 0;
-
- }
-
- int hand_touch(struct doublelist *list)
- {
- int touchfd;
- struct input_event myevent;
- int x;
- int y;
- int flag=0;
- int hlag=0;
- touchfd=open("/dev/input/event0",O_RDWR);
- if(touchfd==-1)
- {
- perror("打开触摸屏失败\n");
- return -1;
- }
- while(1)
- {
- read(touchfd,&myevent,sizeof(myevent));
- //判断事件类型--》触摸事件
- if(myevent.type==EV_ABS) //是触摸事件
- {
- //进一步判断读取是x坐标,还是y坐标
- if(myevent.code==ABS_X) //是x坐标
- {
- printf("读取的x坐标是: %d\n",myevent.value);
- flag=1;
- x=myevent.value;
- printf("坐标y=%d\n",x);
- }
- if(myevent.code==ABS_Y) //是y坐标
- {
- hlag=1;
- y=myevent.value;
- printf("坐标y=%d\n",y);
- }
- if(flag==1&&hlag==1)
- {
- hlag=0;
- flag=0;
- break;
- }
- }
-
- }
- list->location.x=x;
- list->location.y=y;
- close(touchfd);
- return 0;
- }
- //链表的初始化
- struct doublelist *list_init()
- {
- dlist list=malloc(sizeof(struct doublelist));
- strcpy(list->msg.path,"1");
- list->msg.size=-1;
- list->location.x=0;
- list->location.y=1;
- list->next=list;
- list->prev=list;
- return list;
- }
-
-
- int show_bmp(char *argv)
- {
- int i,j;
- char bmpbuf[800*480*3];
- int tembuf[800*480];
- int lcdbuf[800*480];
-
- int lcdfd=open("/dev/fb0",O_RDWR);
- if(lcdfd==-1)
- {
- perror("open lcd error");
- return -1;
-
- }
- printf("%s\n",argv);
- int bmpfd=open(argv,O_RDWR);
- if(bmpfd==-1)
- {
- perror("open bmp error");
- return -1;
- }
-
- read(bmpfd,bmpbuf,800*480*3);
- for(i=0,j=0;i<800*480;i++,j+=3)
- {
- tembuf[i]=0x00<<24|bmpbuf[j]|bmpbuf[j+1]<<8|bmpbuf[j+2]<<16;
-
- }
-
- for(j=0;j<480;j++)
- {
- for(i=0;i<800;i++)
- {
- lcdbuf[800*j+i]=tembuf[800*(479-j)+i];
- }
- }
- write(lcdfd,lcdbuf,800*480*4);
- close(lcdfd);
- close(bmpfd);
-
- }
-
-
- //尾插法
- int list_add_tail1(char *path,int size,struct doublelist *list)
- {
-
- node newnode=malloc(sizeof(struct doublelist));
- strcpy(newnode->msg.path,path);
- newnode->msg.size=size;
- dlist p=list;
-
- if(strcmp(list->msg.path,"1")==0&&list->msg.size==-1)
- {
- strcpy(list->msg.path,path);
- list->msg.size=size;
- return 0;
- }
- while(p->next!=list)
- {
- p=p->next;
- }
- list->prev=newnode;
- newnode->next=list;
- newnode->prev=p;
- p->next=newnode;
-
- return 0;
- }
-
- int list_show(struct doublelist *list)
- {
- struct doublelist *p=list;
- //顺打印
- if(list==NULL)
- {
- printf("这是空表\n");
- return 0;
- }
- while(p->next!=list)
- {
- printf("文件所在的绝对地址:%s\n",p->msg.path);
- printf("文件大小:%d\n",p->msg.size);
- p=p->next;
- }
- printf("文件所在的绝对地址:%s\n",p->msg.path);
- printf("文件大小:%d\n",p->msg.size);
- printf("\n");
- //逆打印
- while(p!=list)
- {
- printf("文件所在的绝对地址:%s\n",p->msg.path);
- printf("文件大小:%d\n",p->msg.size);
- p=p->prev;
- }
- printf("文件所在的绝对地址:%s\n",p->msg.path);
- printf("文件大小:%d\n",p->msg.size);
- return 0;
- }
-
- //头文件
- #ifndef _BMPTOOL_H
- #define _BMPTOOL_H
-
- #include <stdio.h>
- #include <sys/types.h>
- #include <sys/stat.h>
- #include <fcntl.h>
- #include <unistd.h>
- #include <string.h>
- #include <errno.h>
- #include <stdlib.h>
- #include <dirent.h>
- #include <linux/input.h> //跟输入子系统模型有关
- #include <malloc.h>
- #define LEFT 1
- #define RIGHT
- typedef struct
- {
- int x;
- int y;
- }xy;
-
-
- struct filemsg
- {
- char path[1024]; //文件路径名
- int size; //文件大小
- };
-
- typedef struct doublelist
- {
- struct filemsg msg;
- xy location;
- struct doublelist *next;
- struct doublelist *prev;
- }*dlist,*node;
-
-
- int hand_touch(struct doublelist *list);
- int show_search_bmp(const char *dir,struct doublelist *list);
- int show_bmp(char *argv);
-
-
- struct doublelist *list_init();
- int list_show(struct doublelist *list);
- int list_add_tail1(char *path,int size,struct doublelist *list);
- #endif

赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。