找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1867|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

STM32+SYN7318進(jìn)行語音識別后回傳帶命令I(lǐng)D后為啥無法再次語音識別,求大神解救小白

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:513406 發(fā)表于 2019-4-16 11:26 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
  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;//模塊空閑狀態(tài)回傳
  67.                                                 case 0x42:state=0;break;//處于語音識別或者語音喚醒狀態(tài)
  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;//喚醒內(nèi)部錯(cuò)誤
  73.                                                 case 0x23:state=0;break;//自定義喚醒名稱設(shè)置成功
  74.                                                 case 0x24:state=0;break;//自定義喚醒名稱設(shè)置失敗
  75.                                                 case 0x31:state=1;break;//詞典更新成功
  76.                                                 case 0x32:state=1;break;//詞典更新失敗
  77.                                                 case 0x03:state=1;break;//用戶靜音超時(shí)
  78.                                                 case 0x04:state=1;break;//用戶語音超時(shí)
  79.                                                 case 0x05:state=1;break;//識別拒識
  80.                                                 case 0x06:state=1;break;//識別拒識
  81.                                                 case 0x07:state=1;break;//識別內(nèi)部錯(cuò)誤
  82.                                                 case 0x99:state=1;break;//查詢模塊版本回傳
  83.                                         }
  84.                                 }
  85.                                 else if(bufer[4]==0x06)
  86.                                 {
  87.                                         state=1;//識別成功,帶命令I(lǐng)D
  88.                                         ml=bufer[8];//將命令I(lǐng)D給ML
  89.                                 }
  90.                                 else if(bufer[4]==0x04)
  91.                                 {
  92.                                         state=1;//識別成功,無命令I(lǐng)D
  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. }
復(fù)制代碼


全部資料51hei下載地址:
語音識別.7z (176.94 KB, 下載次數(shù): 18)
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表