赞
踩
小项目检测:基于linux,在6818开发板上实现电子相册基础功能
学了一段时间的linuxC,测试一下自己的学习成果
功能很简单,就是编写程序,实现电子相册的一些简单功能
自动读取目标目录的图片文件信息
显示图片,并可以手动调整上一张下一张
(这么简单,估计算不上项目把)
首先讲一下程序基本构架
打开:屏幕显示文件(lcd),触屏文件
检索目标目录:打开目录,检测图片文件,读取文件名,存储到创建的内核链表内
显示,触摸检测控制图片替换
释放内存,关闭lcd与触摸屏,程序关闭
注:程序分为主函数与4个功能模块:lcd显示,触摸检测,目录遍历,链表
#include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> #include <string.h> #include <sys/mman.h> //mmap #include <stdlib.h> #include "ts.h" //触摸屏模块 #include "lcd.h" //LCD显示模块 #include "photo_list.h" //链表存储模块 #include "ebm_filter.h" //目录检索模块 kl_pt ebm(const char *a); //函数声明 int main(int argc, const char *argv[]) { // 1.打开所有设备 open_ts(); //打开触摸屏 open_lcd(); //打开LCD kl_pt head = ebm(argv[1]); //检索当前目录下的图片,存入内核链表中 kl_list_show(head); //打印所获取的图片信息 struct list_head *p= &head->list; kl_pt get_node; struct list_head *pos; show_ebm("s.ebm"); int pos_x, pos_y; //XY坐标 while(1) { //获取XY坐标 get_xy(&pos_x, &pos_y); printf("(%d, %d)\n", pos_x, pos_y); // 显示对应的图片 //px[i] = pos_x; if(pos_x>=512) //屏幕右边(1024的屏幕) { p = p->next; if(p == &head->list) p = p->next; //标志位后移一位 pos = p; get_node = list_entry(pos, kl_st, list); show_ebm(get_node->data); } else if(pos_x<512) //屏幕左边 { p = p->prev; if(p == &head->list) //判断上是否为头节点(头节点为空一般) p = p->prev; //标志位前移 pos
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。