中级会员
 
- 积分
- 253
- 金钱
- 253
- 注册时间
- 2012-3-8
- 在线时间
- 29 小时
|
我的程序是搜索根目录,然后显示出MP3文件,程序好像没有问题,显示15首歌,只有一首名称对不上,不知道什么原因
TFT显示的内容如下:
找到的歌曲文件
胡歌 - 逍遥叹.mp3
侧田 - 好人.mp3
胡歌 - 六月的雨.mp3
陈宇凡 - 我不是英雄.mp3
刘德华 - 十七岁.mp3
方力申 - 认命.mp3
篮球部落 - 左脸.mp3
刘德华 - 练习.mp3
爱.mp3 //就这首歌出了问题
。。。
。。。
。。。
(后面的都没问题)
我的代码如下:
void music()
{
u16 d,ii,i=0,aa=0,jj=0;
u8 cc[26];
u8 dd[12];
Show_Str(63,0,"找到的音乐文件",16,1);
while(1)
{
SD_ReadSingleBlock(FirstBlock*512+i*512,buffer,512);
i++;
for(d=0;d<512;d=d+32)
{
if(((buffer[0+d]!=0x2E)&&(buffer[0+d]!=0x00)&&(buffer[0+d]!=0xe5))||((buffer[0+d]==0x2E)&&(buffer[1+d]==0x2E)))
{
if(buffer[11+d] == 0x0f)//找到一个长文件名
{
for(ii=0;ii<10;ii++) //提取前5个字符
{
cc[ii]=buffer[d+ii+1];
}
for(ii=0;ii<12;ii++) //提取第6-12个字符
{
cc[ii+10]=buffer[d+ii+14];
}
for(ii=0;ii<4;ii++) //提取12-16个字符
{
cc[ii+22]=buffer[d+ii+28];
}
UniToGB(cc);
for(ii=0;ii<26;ii++) //提取长文件名中的mp3后缀,是mp3则显示出来
{
if(cc[ii]=='m')
{
if(cc[ii+1]=='p')
{
if(cc[ii+2]=='3')
{
Show_Str(0,16+jj,cc,16,1);
jj+=16; //换行
d+=32; //忽略短文件名
aa++; //歌曲记数,每页显示15首
if(aa==15)goto Break; //如果达到15首,退出循环
goto asd; //退出检测
}
}
}
}
asd:
}
}
}
}
Break:
}
大家帮我看看,为什么那首哥会显示出错,那首歌的名称应该是:方力申、邓丽欣 - 我的最爱
|
|