基于GEC6818的智能家居系统

目录

1、项目名字

2、项目实现功能

3、部分功能讲解

4、项目主函数

1、项目名字

基于GEC6818的智能家居系统

2、项目实现功能

1)开机画面

2)自动播放照片(bmp图片,jpg图面)

3)手动播放照片(上下选择)

4)MP3的播放,暂停,继续功能

5)MP4的播放,暂停,继续功能

6)读取目录里的文件信息,显示到GEC6818屏幕上

7)链表的形式存储图片信息

项目需要用到jpeg库,jpeg库的移植可参考我以下的这篇博客:

(31条消息) jpeg库的移植步骤(GEC6818)_ljpeg库_sakura0908的博客-CSDN博客

3、部分功能讲解

做项目的流程(供参考)
1.jpg的移植

2.mp3_mp4功能的测试

3.字库功能的测试

4.实现项目的框架

5.实现各个子功能
1).mp3
2).mp4
3).管理员
说明: 读取目录里面的文件信息,然后打印到GEC6818屏幕上。(需要使用到字库)
4).自动播放
说明:先读取目录里面的jpg图片和bmp图片,然后存入到双向循环链表中;最后遍历双向循环链表完成整张图片的自动播放;以上做完之后再做bmp图片的算法。
注意:读出来的文件名要区分jpg图片和bmp图片。
5).上下张
说明:比如说有3张图片1.jpg 2.jpg 3.jpg;那么按下一张后要从1.jpg跳到2.jpg再跳到3.jpg;
按上一张后要从3.jpg跳到2.jpg再跳到1.jpg

6).完成bmp图片的算法
说明:bmp图片的算法包括:百叶窗、左进、右进、上进、下进等等。
注意: bmp图片的分辨率可以通过解析bmp的头54个字节的信息来获取。

4、项目主函数

int main(int argc,char **argv)
{
	//硬件的初始化
	fd_lcd = open("/dev/fb0",O_RDWR);
	if(fd_lcd == -1)
	{
		printf("open lcd fail\n");
		return -1;
	}
	
	addr = mmap(NULL,800*480*4,PROT_READ|PROT_WRITE,MAP_SHARED,fd_lcd,0);
	if(addr == NULL)
	{
		printf("mmap lcd fail\n");
		return -1;
	}
	
	fd_bmp = open("/study/project_home/pic/xitong.bmp",O_RDWR);
	if(fd_bmp == -1)
	{
		printf("open bmp fail\n");
		return -1;
	}
	
	fd_ts = open("/dev/input/event0",O_RDWR);
	if(fd_ts < 0)
	{
		printf("open ts fail");
		return -1;
	}
	
	//链表的初始化
	node* head = initList();
	
	dp = opendir("/study/project_home/pic");
	if(dp == NULL)
	{
		printf("opendir fail");
		return -1;
	}
	
	chdir("/study/project_home/pic");
	
	int j =0;
	while(1)
	{	
		ep = readdir(dp); 

		if(ep == NULL) 
			break;
		if(ep->d_name[0] == '.')
			continue;
		if(ep->d_name[2] == 'b')
		{
			node* new = newNode(ep->d_name);
			insertHead(head, new);
		}
		if(ep->d_name[2] == 'j')
		{
			node* new = newNode(ep->d_name);
			insertHead(head, new);			
		}
	}
	
	show_bmp("/study/project_home/menu/kaiji.bmp");
	sleep(3);
	
	while(1)
	{	
		// //功能界面
		show_bmp("/study/project_home/pic/xitong.bmp");		
		get_xy(&x,&y);
		
		if(x>80&&x<280&&y>90&&y<150)
		{
			auto_play(head);
		}

		if(x>500&&x<700&&y>90&&y<150)
		{
			hand_play(head);
		}

		if(x>70&&x<190&&y>340&&y<390)
		{
			chdir("/study/project_home/mp3_mp4");
			mp3_play();
			chdir("/study/project_home/pic");
		}
		
		if(x>340&&x<460&&y>340&&y<390)
		{
			chdir("/study/project_home/mp3_mp4");
			mp4_play();
			chdir("/study/project_home/pic");
		}
		
		if(x>580&&x<730&&y>340&&y<390)
		{
			chdir("/study/project_home/usr_date");
			admin_info();
			chdir("/study/project_home/pic");
		}		
	}
	
	//链表的释放
	head = destroy(head);
	
	//关闭硬件
	munmap(addr,800*480*4);
	
	close(fd_bmp);
	
	close(fd_lcd);
	
	close(fd_ts);
	
	closedir(dp);
	
	return 0;
}
	

你可能感兴趣的:(文件io,c语言,源代码管理,linux,智能家居)