请各位大牛速度进来帮忙,看看怎么修改这个MP3源代码

lvluluzhu 2013-04-18 07:47:42
本人在网上下载了一个基于A8的mp3播放器代码,准备修改成毕业设计,但是经过多天的奋斗,还是修改不出来吖,悲催吖,学校地答辩就快到了,着急中。。。。

有木有那位大侠可以帮帮忙的,感激不尽吖。改成基于s3c2440或s3c6410都行吖,源代码里面不包含main.h和s5pv210-gpio.h两个头文件的,这是我自己添加进去的,我自己也不知道有木有对。源代码看附件。改好跟帖或发邮箱:735225987@qq.com,在这里,先谢谢各位的帮忙。


还有几个源代码发布不出来,只能连着回复3次,我等迟点发,或你联系我的邮箱:735225987@qq.com
...全文
811 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
lvluluzhu 2013-05-07
  • 打赏
  • 举报
回复
问题是都不会做呢,都木有做怎么能过的吖?
winteredchengxu 2013-04-27
  • 打赏
  • 举报
回复
毕业设计太容易过了
lvluluzhu 2013-04-18
  • 打赏
  • 举报
回复
这是播放play.c代码 #include "main.h" void play(){ close(1); dup(fifo_fd[1]); //*******启动Mplayer************// execl("./mplayer", "mplayer", "-ac", "mad", "-slave", "-quiet", "-input", "file=./fifo_cmd", "./song/aLin.mp3", NULL); }
lvluluzhu 2013-04-18
  • 打赏
  • 举报
回复
这是主函数代码main.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; }
lvluluzhu 2013-04-18
  • 打赏
  • 举报
回复
这是key.c的代码 #include "main.h" #include "s5pv210-gpio.h" char *voice_table[6]={"./picture/voice0.bmp","./picture/voice1.bmp", "./picture/voice2.bmp","./picture/voice3.bmp", "./picture/voice4.bmp","./picture/voice5.bmp",}; void *key(void *arg){ int fp3=-1,fp2=-1,fp0=-1; int key ,key_num,flag=0xaa; fp3=open("/dev/gpH3",O_RDWR); if(fp3<0){ perror("dev/gpH3"); //_/exit(-1); } fp2=open("/dev/gpH2",O_RDWR); if(fp2<0){ perror("dev/gpH2"); //_exit(-1); } printf("\n 111111111111 %d %d\n\n",fp2,fp3); ioctl(fp3,GPIO_SET_PIN_OUT,0); ioctl(fp3,GPIO_SET_PULL_DIS,0); ioctl(fp3,GPIO_CLR_PIN,0); ioctl(fp3,GPIO_SET_PIN_OUT,1); ioctl(fp3,GPIO_SET_PULL_DIS,1); ioctl(fp3,GPIO_CLR_PIN,1); ioctl(fp2,GPIO_SET_PIN_IN,3); ioctl(fp2,GPIO_SET_PIN_IN,4); ioctl(fp2,GPIO_SET_PIN_IN,5); ioctl(fp2,GPIO_SET_PIN_IN,6); ioctl(fp2,GPIO_SET_PIN_IN,7); ioctl(fp2,GPIO_SET_PULL_UP,3); ioctl(fp2,GPIO_SET_PULL_UP,4); ioctl(fp2,GPIO_SET_PULL_UP,5); ioctl(fp2,GPIO_SET_PULL_UP,6); ioctl(fp2,GPIO_SET_PULL_UP,7); ioctl(fp2,GPIO_SET_PIN,3); ioctl(fp2,GPIO_SET_PIN,4); ioctl(fp2,GPIO_SET_PIN,5); ioctl(fp2,GPIO_SET_PIN,6); ioctl(fp2,GPIO_SET_PIN,7); int fp=open("./fifo_cmd",O_WRONLY); SONGNAME *namehead=readsongname(); while(1){ printf("\n\n\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n\n"); //sleep(1); ioctl(fp3,GPIO_CLR_PIN,0); ioctl(fp3,GPIO_SET_PIN,1); read(fp2,&key_num,sizeof(key_num)); key=key_num; usleep(100*1000); read(fp2,&key_num,sizeof(key_num)); if(key==key_num){ key=key&0xf8; int flag1=0; if(key==0xf0){ printf("key1 pressed\n"); N--; if(N<0)N=10; SONGNAME *namecmd; if(N>10)N=0; char p[255]="loadfile "; namecmd=namehead; while(namecmd!=NULL){ if(namecmd->num==N){ strcat(p,namecmd->songname); disp_song_name(namecmd);//歌曲名字显示 break; } namecmd=namecmd->next; } strcat(p,"\n"); write(fp,p,strlen(p)); TFT_File_Picture(windowHZ, 400, 0, "./picture/lrc.bmp", 1); TFT_File_Picture(windowHZ, 25, 106, "./picture/title.bmp", 1); TFT_File_Picture(windowHZ, 167, 189, "./picture/4.bmp", 1); flag1=1; } if(key==0xe8){ printf("--------------key2 pressed-----------\n"); TFT_ClearWindow(windowHZ); execlp("poweroff","poweroff",NULL); //perror("execlp"); flag1=1; } if(key==0xd8){ printf("key3 pressed\n"); N++; SONGNAME *namecmd; if(N>10)N=0; char p[255]="loadfile "; namecmd=namehead; while(namecmd!=NULL){ if(namecmd->num==N){ strcat(p,namecmd->songname); disp_song_name(namecmd);//歌曲名字显示 break; } namecmd=namecmd->next; } strcat(p,"\n"); write(fp,p,strlen(p)); TFT_File_Picture(windowHZ, 400, 0, "./picture/lrc.bmp", 1); TFT_File_Picture(windowHZ, 25, 106, "./picture/title.bmp", 1); TFT_File_Picture(windowHZ, 216, 189, "./picture/5.bmp", 1); flag1=1; } if(key==0xb8){ printf("key4 pressed\n"); write(fp,"seek 5\n",strlen("seek 5\n")); TFT_File_Picture(windowHZ, 118, 189, "./picture/3.bmp", 1); flag1=1; } if(key==0x78){ printf("key5 pressed\n"); write(fp,"seek -5\n",strlen("seek -5\n")); TFT_File_Picture(windowHZ, 69, 189, "./picture/2.bmp", 1); flag1=1; } if(flag1){ while(key==(key_num&0xf8)){ read(fp2,&key,sizeof(key)); } } } /********************************************************/ ioctl(fp3,GPIO_CLR_PIN,1); ioctl(fp3,GPIO_SET_PIN,0); read(fp2,&key_num,sizeof(key_num)); key=key_num; usleep(100*1000); int flag2=0; read(fp2,&key_num,sizeof(key_num)); if(key==key_num){ key=key&0xf0; if(key==0xe0){ printf("key6 pressed\n"); write(fp,"pause\n",strlen("pause\n")); if(!pic_flag){ pic_flag=~pic_flag; TFT_File_Picture(windowHZ, 20, 189, "./picture/11.bmp", 1); } else { pic_flag=~pic_flag; TFT_File_Picture(windowHZ, 20, 189, "./picture/1.bmp", 1); } flag2=1; } if(key==0xd0){ printf("key7 pressed\n"); voice=voice+20; if(!voice_flag){ TFT_File_Picture(windowHZ,265, 189, "./picture/voice.bmp", 1); } if(voice>100){ voice=1000; write(fp,"volume 0\n",strlen("volume 0\n")); } printf("voice= %d\n",voice); TFT_File_Picture(windowHZ, 314, 189, voice_table[voice/20], 1); if(voice==0) write(fp,"volume 0 1\n",strlen("volume 0 1\n")); if(voice==20) write(fp,"volume 20 1\n",strlen("volume 20 1\n")); if(voice==40) write(fp,"volume 40 1\n",strlen("volume 40 1\n")); if(voice==60) write(fp,"volume 60 1\n",strlen("volume 60 1\n")); if(voice==80) write(fp,"volume 80 1\n",strlen("volume 80 1\n")); if(voice==100) write(fp,"volume 100 1\n",strlen("volume 100 1\n")); flag2=1; } if(key==0xb0){//静音 printf("key8 pressed\n"); if(voice_flag){ voice_flag=~voice_flag; TFT_File_Picture(windowHZ,265, 189, "./picture/voice.bmp", 1); write(fp,"mute 0\n",strlen("mute 0\n")); } else { voice_flag=~voice_flag; TFT_File_Picture(windowHZ, 265, 189, "./picture/no_voice.bmp", 1); write(fp,"mute 1\n",strlen("mute 1\n")); } flag2=1; } if(key==0x70){ printf("key9 pressed\n"); voice=voice-20; if(voice_flag){ TFT_File_Picture(windowHZ,265, 189, "./picture/voice.bmp", 1); } if(voice<0){ voice=0; write(fp,"volume 0\n",strlen("volume 0\n")); } printf("voice= %d\n",voice); TFT_File_Picture(windowHZ, 314, 189, voice_table[voice/20], 1); if(voice==0) write(fp,"volume 0 1\n",strlen("volume 0 1\n")); if(voice==20) write(fp,"volume 20 1\n",strlen("volume 20 1\n")); if(voice==40) write(fp,"volume 40 1\n",strlen("volume 40 1\n")); if(voice==60) write(fp,"volume 60 1\n",strlen("volume 60 1\n")); if(voice==80) write(fp,"volume 80 1\n",strlen("volume 80 1\n")); if(voice==100) write(fp,"volume 100 1\n",strlen("volume 100 1\n")); flag2=1; } if(flag2){ while(key==(key_num&0xf0)){ read(fp2,&key,sizeof(key)); } } } } }

6,125

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 硬件设计
社区管理员
  • 硬件设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧