全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 音视频/家电 >

[RTT-创新应用设计]AB32VG1-4.wav搜索

时间:2021-10-31 21:05

人气:

作者:admin

标签: RTT  AB32  RTThread  嵌入式 

导读:[RTT-创新应用设计]AB32VG1-4.wav搜索-该主题前面的链接 1.开箱  https://bbs.elecfans.com/jishu_2172464_1_1.html 2.sd卡 播放 https://bbs.elecfans.com/jishu_2173612_1_1.html 3.音量记忆、播放暂停功能实现 https://...

该主题前面的链接

1.开箱  https://bbs.elecfans.com/jishu_2172464_1_1.html

2.sd卡 播放 https://bbs.elecfans.com/jishu_2173612_1_1.html

3.音量记忆、播放暂停功能实现 https://bbs.elecfans.com/jishu_2183725_1_1.html

 

此贴主要实现sd 卡根目录wav 文件搜索 ,并实现相应的播放

  1. 首先要通过字符串来识别是否是wav文件

 

 

 

//通过后缀名识别文件类型
uint8_t tell_type(char *p)
{
    int i=0;
    char *attr;
    while(i<200)
    {
        if(*p=='\0')
            break;
        i++;
        p++;
    }
    if(i==200)
        return 1;
    i=0;
    while(i<5)
    {
        if(*p=='.')
        {
            p++;
            attr=p;
            break;
        }
        i++;
        p--;
    }
    if(i==5)
        return 2;

    if((strcmp(attr,"WAV")==0)||(strcmp(attr,"wav")==0))
    {
        return 0;
    }
    else
        {
            return 4;
        }
}

 

2.扫描所有根目录文件,并记录wav个数及相应的index

uint16_t wavGetNum(uint8_t*path)
{
    DIR tdir;
    uint16_t rval =0;
    uint8_t* fn;
   // DWORD tmp;
    DWORD fileindex=0;
    uint8_t res = f_opendir(&tdir, (const TCHAR*)path);
    tfileinfo.fsize = 255;
    if(res ==FR_OK){
        //LOG_I("open root dir sucess");
        while(1){
            fileindex++;
           // tmp = tdir.dptr;
           // LOG_I("dir_ofset %d",tmp);
            res = f_readdir(&tdir, &tfileinfo);
            if(res!=FR_OK||tfileinfo.fname[0]==0){
                //LOG_I("found the end");
                break;
                }
            res =tell_type(tfileinfo.fname);
            if(res==0){
               // LOG_I("get the wav");
                wavIndex[rval] = fileindex-1;//get the index
                rval++;
            }
        }//endwhile
    }
    else{
        LOG_I("open root dir fail");
    }
    return rval;
}

3.在sd 卡mount 处进行 wav文件扫描,并获取相应的wav名称

uint8_t* getFilePath(uint32_t index,uint8_t* path)
{
    DIR filedir;
    uint8_t *filepath =NULL;
    tfileinfo.fsize = 255;
    uint8_t res = f_opendir(&filedir, path);
    if(res == FR_OK){
       // LOG_I("dir_ofset %d",index);
        f_seekdir(&filedir, index);
       // LOG_I("dir_ofset %d",filedir.dptr);
        res =f_readdir(&filedir, &tfileinfo);
        if(res== FR_OK){
            //LOG_I("get the file %s",tfileinfo.fname);
            filepath = &wavFileName[0];
            strcpy(filepath,&tfileinfo.fname[0]);
        }
        else {
            LOG_I("open file name error");
        }
    }
    else{
        LOG_I("open root dir fail");
    }
    return filepath;
}

 

实际运行log

 

pYYBAGF-SvmAI4WEAACTcomN1FA212.png
温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信