piaoran1314 发表于 2018-5-7 14:56:14

小E开发板wifi音箱二实现网络助手发送整个WAV音乐

      在之前的博客(blog.csdn.net/chengdong1314/article/details/54099694)我们已经实现了分部分传输wav数据到开发板然后进行音乐播放了,但是这样传输数据太麻烦,既要把数据弄出一段段32768字节的数据还要多次发送,这种办法太笨,所以这里将实现通过网络调试助手发送整个wav文件。
      这里网络调试助手界面和串口助手截图如下:
http://img.blog.csdn.net/20170111225643097?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2hlbmdkb25nMTMxNA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center
         我再第一次运行程序的时候发现当发送完成的时候开发板上并没有播放音乐,查看串口打印发现最后的总大小竟然小于文件的大小,最后检查代码找到了一个bug,如下:
    os_printf("total_size:%x sector:%x per_residue:%x\n",file_total_size100,sector100,per_residue);

    if(sector100 > AUDIO_FLASH_STOP_SECTOR){
      file_total_size100 += per_residue;
    }
   
    if(file_total_size100 >= file_size)                      //下载完成
    {
      if(file_size > AUDIO_FLASH_LEN)             //文件总长度打印flash长度,只播放音频的flash长度
            file_total_size100 = AUDIO_FLASH_LEN;

      printf("down load file end . file_total_size:%x\n",file_total_size);
      sector100 = AUDIO_FLASH_START_SECTOR;
      audio_voice_data100 = 1;         //to inform interrupt of voice data coming
    }   

上图中红色的代码就是填上的bug,这里主要是因为当当前扇区大于音频的数据扇区的时候以后会拷贝出生于的字节,但是这时候却不会加上上面的剩余字节了,所以这里要填上上面的代码,保证接收到的数据不会出现遗漏。
    最后这里测试发现一个很奇怪的现象:最后喇叭播放出来的声音十分的难听,不知道为什么,以后在慢慢调试吧。
    难听的声音请看:download.csdn.net/detail/chengdong1314/9735309


    这里上传上本博客的源代码:download.csdn.net/detail/chengdong1314/9735295
    并且上传上本博客测试用到的wav文件和录音录到的wav文件:download.csdn.net/detail/chengdong1314/9735309
    其中的《擦肩而过.wav》是最原本的音频文件,但是这个音频文件的格式是44.1Khz的采样率的,所以这里我通过《艾奇音频转换器全能大师》这个工具转出了8K采样率的文件,因为我们的工程目前是8K的采样率,转出的文件如下:《擦肩而过 _8K采样率.wav》
   但是这里我发现即是改了采样率最终在喇叭上听到的声音还是很难听,不知道为什么!




页: [1]
查看完整版本: 小E开发板wifi音箱二实现网络助手发送整个WAV音乐