找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1661|回复: 0
收起左侧

STM32+SYN7318进行语音识别后回传带命令ID后为啥无法再次语音识别,求大神解救小白

[复制链接]
ID:513406 发表于 2019-4-16 11:26 | 显示全部楼层 |阅读模式
  1. #include "system.h"
  2. #include "SysTick.h"
  3. #include "led.h"
  4. #include "usart.h"
  5. #include "string.h"

  6. void kaishishibie()
  7. {
  8.         char sbuf[]={0xD4,0xDA,0xE0,0xCF,0x21};
  9.         u16 i=0;
  10.         char len;
  11.         char head[8];
  12.         len=strlen(sbuf);
  13.         head[0]=0xFD;
  14.         head[1]=0x00;
  15.         head[2]=len+2;
  16.         head[3]=0x15;//语音识别模式
  17.         head[4]=0x03;//词典库
  18.         head[5]=0x09;//唤醒名称
  19.         head[6]=0x01;
  20.         head[7]=0x01;
  21.         for (i=0;i<8;i++)
  22.         {       
  23.                 USART_SendData(USART3,head[i]);
  24.                 while(USART_GetFlagStatus(USART3,USART_FLAG_TXE) != SET);
  25.         }
  26.         for (i=0;i<len;i++)
  27.         {       
  28.                 USART_SendData(USART3,sbuf[i]);
  29.                 while(USART_GetFlagStatus(USART3,USART_FLAG_TXE) != SET);
  30.         }       
  31. }

  32. void delay_nms(u16 time)
  33. { u16 i=0;
  34. while(time--)
  35.         {
  36.                 i=12000;
  37.                 while(i--) ;
  38.         }
  39. }

  40. int main()
  41. {       
  42.         u8 state=0,ml=0;
  43.         USART3_Init(115200);
  44.         SysTick_Init(72);
  45.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
  46.         LED_Init();
  47.         led1=0;
  48.         led2=0;
  49.         led3=0;
  50.         while (1)
  51.         {
  52.                 kaishishibie();
  53.                 q=0;
  54.                 while (1)
  55.                 {               
  56.                         if(q==1)
  57.                         {
  58.                                 q=0;
  59.                                 if(bufer[2]==0x01)
  60.                                 {
  61.                                         switch (bufer[3])
  62.                                         {
  63.                                                 case 0x4A:state=0;break;//模块初始化成功回传
  64.                                                 case 0x41:state=0;break;//接收到正确的命令帧回传
  65.                                                 case 0x45:state=1;break;//接收失败,收到不能识别的命令帧
  66.                                                 case 0x4F:state=1;break;//模块空闲状态回传
  67.                                                 case 0x42:state=0;break;//处于语音识别或者语音唤醒状态
  68.                                                 case 0x49:state=0;break;//处于MP3播放
  69.                                                 case 0x4B:state=0;break;//更新词典
  70.                                                 case 0x4E:state=0;break;//语音合成播放
  71.                                                 case 0x21:state=0;break;//唤醒成功
  72.                                                 case 0x22:state=0;break;//唤醒内部错误
  73.                                                 case 0x23:state=0;break;//自定义唤醒名称设置成功
  74.                                                 case 0x24:state=0;break;//自定义唤醒名称设置失败
  75.                                                 case 0x31:state=1;break;//词典更新成功
  76.                                                 case 0x32:state=1;break;//词典更新失败
  77.                                                 case 0x03:state=1;break;//用户静音超时
  78.                                                 case 0x04:state=1;break;//用户语音超时
  79.                                                 case 0x05:state=1;break;//识别拒识
  80.                                                 case 0x06:state=1;break;//识别拒识
  81.                                                 case 0x07:state=1;break;//识别内部错误
  82.                                                 case 0x99:state=1;break;//查询模块版本回传
  83.                                         }
  84.                                 }
  85.                                 else if(bufer[4]==0x06)
  86.                                 {
  87.                                         state=1;//识别成功,带命令ID
  88.                                         ml=bufer[8];//将命令ID给ML
  89.                                 }
  90.                                 else if(bufer[4]==0x04)
  91.                                 {
  92.                                         state=1;//识别成功,无命令ID
  93.                                 }                       
  94.                                 if(state==1)
  95.                                 {
  96.                                         break;
  97.                                 }
  98.                         }
  99.                         switch(ml)
  100.                         {
  101.                                 case 1:led4=0;led6=1;break;
  102.                                 case 2:led4=1;led6=1;break;
  103.                                 case 3:led5=0;led6=1;break;
  104.                                 case 4:led5=1;led6=1;break;
  105.                                 default :led6=0;
  106.                         }
  107.                 }
  108.                 memset(bufer,0,sizeof (bufer));       
  109.         }
  110. }
复制代码


全部资料51hei下载地址:
语音识别.7z (176.94 KB, 下载次数: 18)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表