Mplayer--main.c

这个Mplayer项目的核心,主函数。
这算是一篇连载,都是自己一个个辛苦写的。由多个.c的函数组成。
分别有touch.c,play.c,lrc.c,readname.c,readpip.c,key.c。
 
 
/*============================================
//*******函数功能:整个Mplayer项目的主函数****
//
//************修改时间:2012.11.22************
=============================================*/
#include"main.h"

WIN_HANDLE window[10];
char *title[4];
int fifo_fd[2],lrc_i=0,fd,fifo_cmd;


//全屏的主窗口、歌词窗口、歌曲信息部分窗口==//
WIN_HANDLE windowHZ;
WIN_HANDLE windowLrc;
WIN_HANDLE windowPosition;

/****************************/
//输出汉字
//第一个参数是窗口的句柄
//第二个参数是需要显示的汉字字符串地址
/********************************************************/
//功能:打印编码为ansi码
//
/********************************************************/
void printHZ(WIN_HANDLE windows,char *p,int x,int y){
	
	TFT_SetColor(windows, COLOR_GREEN);	//设置窗口前景颜色(方法一)
	set_tft_print_ansi();				//设置编码格式
	TFT_SetTextPos(windows, x, y);		//后边两个参数是相对窗口的坐标	
	TFT_Print(windows, "%s", p);		//打印字符
	set_tft_print_utf8();
}
/******************************************************/
//功能:打印编码格式为utf8码
//
/******************************************************/
void printNAME(WIN_HANDLE windows,char *p,int x,int y){

	TFT_SetColor(windows, COLOR_GREEN);
	set_tft_print_utf8();
	TFT_SetTextPos(windows, x, y);
	TFT_Print(windows, "%s", p);	
	set_tft_print_ansi();
}
/*********************************************************/
//功能:打印另一种前景色的字体
/*********************************************************/
void printHZ_color(WIN_HANDLE windows,char *p,int x,int y){

	TFT_SetColor(windows, COLOR_WHITE);
	set_tft_print_utf8();
	TFT_SetTextPos(windows, x, y);
	TFT_Print(windows, "%s", p);
	set_tft_print_ansi();	
}

/*=====================================*/
//函数功能:整个系统的初始化函数
//函数名:init_pic()
/*=====================================*/
void init_pic(){
	int X=20;
	voice_flag=0;
	TFT_Init("/dev/fb0");//初始化触屏
	//============创建三个窗口,并清屏一下==========//
	windowHZ=TFT_CreateWindowEx(0,0,800,480,COLOR_BLACK);
	TFT_ClearWindow(windowHZ);	
	windowLrc=TFT_CreateWindowEx(400,0,400,480,COLOR_BLACK);
	TFT_ClearWindow(windowLrc);
	windowPosition=TFT_CreateWindowEx(25,88,240,17,COLOR_RED);
	TFT_ClearWindow(windowPosition);
	//=========初始化各个模块的图片================//
	TFT_File_Picture(windowHZ, 0, 0, "./picture/back.bmp", 1);
	TFT_File_Picture(windowHZ, X, 189, "./picture/1.bmp", 1);
	TFT_File_Picture(windowHZ, X+=49, 189, "./picture/2.bmp", 1);
	TFT_File_Picture(windowHZ, X+=49, 189, "./picture/3.bmp", 1);
	TFT_File_Picture(windowHZ, X+=49, 189, "./picture/4.bmp", 1);
	TFT_File_Picture(windowHZ, X+=49, 189, "./picture/5.bmp", 1);
	TFT_File_Picture(windowHZ, X+=49, 189, "./picture/voice.bmp", 1);
	TFT_File_Picture(windowHZ, X+=49, 189, "./picture/voice3.bmp", 1);
}
int main(void)
{
	pid_t pid;
	int i=0;
	struct dirent *ptr;
	char s[10];
	unlink("fifo_cmd");
	init_pic();		//初始化
	fifo_cmd=mkfifo("./fifo_cmd",0666);//创建一个有名管道
	if(fifo_cmd!=0){
		perror("mkfifo");
	}
	int erro=pipe(fifo_fd);	//创建一个管道
	if(erro!=0){
		perror("pipe");
		exit(0);
	}
	pid=fork();		//创建进程
	if(pid<0){
		perror("fork");
		exit(0);
	}
	
/*******************父进程*******************************/
	else if(pid>0){
	
		pthread_t disp_song_lrc,pthread_touch,pthread_read_pip,pthread_read_key;
		//创建一个显示歌词的线程
		int error_lrc=pthread_create(&disp_song_lrc,NULL,disp_lrc,NULL);
		if(error_lrc!=0){
			perror("pthread_creat_lrc");
			exit(0);
		}
		//创建读取管道的线程
		int error_pip=pthread_create(&pthread_read_pip,NULL,readpip,NULL);
		if(error_pip!=0){
			perror("pthread_read_pip");
			exit(0);
		}
		//创建一个触摸屏的线程;
		int error_touch=pthread_create(&pthread_touch,NULL,touch_screen,NULL);
		if(error_touch!=0){
			perror("pthread_creat_touch");
			exit(0);
		}
		//创建一个物理按键的线程
		int error_key=pthread_create(&pthread_read_key,NULL,key,NULL);
		if(error_key!=0){
			perror("pthread_read_key");
			exit(0);
		}
		//等待线程的结束
		pthread_join(disp_song_lrc,NULL);
		pthread_join(pthread_touch,NULL);
		pthread_join(pthread_read_pip,NULL);
		pthread_join(pthread_read_key,NULL);

	}
/**********************子进程**************************/	
	else {
		play();	//播放函数
	}
	return 0;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值