资源简介
该工程是一个毕业设计的代码,功能已经全部实现并且测试正常,代码包括按键驱动、音频库的移植、应用程序三部分。具体使用方法请参照解压后README.txt里面的说明,如有疑问,请随时发邮件
代码片段和文件信息
/*
* mp3播放器控制程序
* 功能:
* k1:播放、暂停
* k2:停止播放
* k3:上一首
* k4:下一首
* 附加:歌曲自动循环播放
*/
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
/*共享内存申请标记*/
#define PERM S_IRUSR|S_IWUSR
/*双向循环列表:存放歌曲名*/
struct song
{
char songname[20];
struct song *prev;
struct song *next;
};
/*孙子进程id号*/
pid_t gradchild;
/*子进程id号*/
pid_t pid;
/*共享内存描述标记*/
int shmid;
char *p_addr;
/*播放标记*/
int first_key=1;
int play_flag=0;
/*************************************************
Function name: play
Parameter : struct song *
Description : 播放函数
Return : void
Argument : void
Autor & date : ada 091207
**************************************************/
void play(struct song *currentsong)
{
pid_t fd;
char *c_addr;
char *p;
int len;
char my_song[30]=“/mp3/song/“;
while(currentsong)
{
/*创建子进程,即孙子进程*/
fd = fork();
if(fd == -1)
{
perror(“fork“);
exit(1);
}
else if(fd == 0)
{
/*把歌曲名加上根路径*/
strcat(my_songcurrentsong->songname);
p = my_song;
len = strlen(p);
/*去掉文件名最后的‘\n‘*/
my_song[len-1]=‘\0‘;
printf(“THIS SONG IS %s\n“my_song);
execl(“/mp3/madplay““madplay“my_songNULL);
printf(“\n\n\n“);
}
else
{
/*内存映射*/
c_addr = shmat(shmid00);
/*把孙子进程的id和当前播放歌曲的节点指针传入共享内存*/
memcpy(c_addr&fdsizeof(pid_t));
memcpy(c_addr + sizeof(pid_t)+1¤tsong4);
/*使用wait阻塞孙子进程,直到孙子进程播放完才能被唤醒;
当被唤醒时,表示播放MP3期间没有按键按下,则继续顺序播放下一首MP3*/
if(fd == wait(NULL))
{
currentsong = currentsong->next;
printf(“THE NEXT SONG IS %s\n“currentsong->songname);
}
}
}
}
/*************************************************
Function name: creat_song_list
Parameter : void
Description : 创建歌曲名的双向循环链表
Return : struct song *
Argument : void
Autor & date : ada 09.12.07
**************************************************/
struct song *creat_song_list(void)
{
FILE *fd;
size_t size;
size_t len;
char *line = NULL;
struct song *head;
struct song *p1;
struct song *p2;
system(“ls /mp3/song >song_list“);
fd = fopen(“song_list““r“);
p1 = (struct song *)malloc(sizeof(struct song));
printf(“==================================song list=====================================\n“);
system(“ls /mp3/song“);
printf(“\n“);
printf(“================================================================================\n“);
size = getline(&line&lenfd);
strncpy(p1->songnamelinestrlen(line));
head = p1;
while((size = getline(&line&lenfd)) != -1)
{
p2 = p1;
p1 = (struct song *)malloc(sizeof(struct song));
strncpy(p1->songnamelinestrlen(line));
p2->next = p1;
p1->prev = p2;
}
p1->next = head;
head->prev = p1;
p1 = NULL;
p2 = NULL;
system(“rm -rf song_list“);
return head;
}
/**********
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2013-07-05 00:03 mp3pla
文件 2764 2013-07-05 00:06 mp3pla
目录 0 2013-07-05 00:02 mp3pla
文件 120 2013-05-27 20:22 mp3pla
文件 13533 2013-05-27 20:22 mp3pla
文件 8773 2013-05-27 20:11 mp3pla
目录 0 2013-07-05 00:02 mp3pla
文件 317 2013-05-27 20:25 mp3pla
文件 15956 2013-05-27 20:25 mp3pla
文件 24781 2013-05-27 20:25 mp3pla
目录 0 2013-07-05 00:08 mp3pla
文件 240 2013-05-27 20:38 mp3pla
文件 4963 2013-05-27 20:08 mp3pla
文件 0 2013-05-27 20:39 mp3pla
目录 0 2013-07-05 00:08 mp3pla
目录 0 2013-07-05 00:02 mp3pla
文件 338143 2013-05-27 20:09 mp3pla
文件 502379 2013-05-27 20:09 mp3pla
文件 215028 2013-05-27 20:09 mp3pla
文件 590929 2013-05-27 20:09 mp3pla
文件 181144 2013-05-27 20:09 mp3pla
- 上一篇:定位技术综述
- 下一篇:hamcrest-library-1.2
相关资源
- ARM9 Mini2440核心板原理图和PCB已经封装
- ov9650 mini2440裸机测试代码
- 基于STM32的mp3播放器设计193488
- Mini2440 Nor Flash 芯片手册S29AL016J_00
- 在Keil MDK 4上 将ucosii和ucgui移植MINI24
- mini2440原版光盘配套使用手册
- WM8978 mp3播放器
- 嵌入式WEB监控小车全套代码以及文档
- 嵌入式linux下QT开发的mp3播放器源码
- 基于STM32的MP3播放器设计
- I2S——MP3播放器
- minigui1.6.10在mini2440上的移植
- uboot for mini2440
- 基于ARM平台的MP3播放器嵌入式开发设
- mini2440arm基于qt4的MP3源码
- LinuxMP3播放器源码
- Qt编写的MP3播放器
- 基于C51单片机的MP3播放器设计
- ARM Mini2440 电路图.
- mini2440在MDK上完整启动代码
- ok6410按键驱动
- 简单、规范的Linux下的ds18b20驱动基于
- 基于arm平台的MP3播放器
- mini2440的u-boot.bin 2012.04.01版
- 基于msp430f149做的mp3播放器
- Keil Mdk5.15下移植ucosii到mini2440s3c2440
-
用Jli
nk烧写bootloader到mini2440的Nor f - mini2440裸机实现简易u-boot代码.rar
- mini2440实现采集摄像头数据在开发板的
- 嵌入式MP3播放器项目源代码
评论
共有 条评论