中文字幕天堂手机版-欧美一区二区色大片在线观看-丰满人妻视频一区二区三区-美女视频黄的免费的91

您的位置:首頁(yè)   >  關(guān)于我們  >  新聞動(dòng)態(tài)

大彩串口屏M型語(yǔ)音識(shí)別應(yīng)用

發(fā)布人:大彩科技發(fā)布日期:2021-05-17

演示視頻


一、開發(fā)準(zhǔn)備


1.1 適用范圍

文檔僅適用于M型語(yǔ)音識(shí)別系列的串口屏產(chǎn)品。






1.2 硬件平臺(tái)準(zhǔn)備

開發(fā)前用戶需準(zhǔn)備好硬件平臺(tái):

1. 支持語(yǔ)音識(shí)別功能的M型系列7.0寸語(yǔ)音串口屏樣品,本文以型號(hào)為DC80480M070_1111_0C_AI為例進(jìn)行講解。

2. 語(yǔ)音詞條下載器(需單獨(dú)購(gòu)買)。




二、工作原理


M系列語(yǔ)音識(shí)別串口屏是通過串口與語(yǔ)音芯片進(jìn)行通訊和交互。主要工作流程為以下兩種:

1) 語(yǔ)音芯片識(shí)別詞條命令-->下發(fā)指令到屏幕串口-->串口接收指令解析-->邏輯判斷-->屏幕響應(yīng);

2) 屏幕操作-->屏幕發(fā)送指令到語(yǔ)音芯片串口-->語(yǔ)音芯片接收解析指令-->語(yǔ)音提示。




三、開發(fā)流程


圖 3-1 開發(fā)流程圖






3.1 語(yǔ)音詞條和提示音開發(fā)

首先用戶先自定義修改好語(yǔ)音詞條和提示,重新生成下載文件通過詞條下載器下載到語(yǔ)音芯片,此處主要介紹語(yǔ)音的功能介紹,不展開進(jìn)行詳細(xì)敘述,具體可參考《【M】型語(yǔ)音識(shí)別串口屏開發(fā)使用說明》文檔。






3.2 串口屏工程配置

串口屏工程的配置主要有以下 2 點(diǎn):

(1) 畫面配置

(2) LUA 腳本編輯


3.2.1 畫面配置

1. 在畫面 ID0 中,配置和語(yǔ)音芯片交互實(shí)現(xiàn)模擬燈光的控制開關(guān),此處將不針對(duì)這些基本控件的使用一一贅述,如圖3-2所示。

圖3-2 畫面配置


  • ID1控件實(shí)現(xiàn)燈光的開關(guān)。



3.2.2 LUA腳本編輯

本例程中共分為四部分程序:


  • 屏幕初始化:初始化串口配置,波特率設(shè)置為57600。
  • 屏幕串口接收解析語(yǔ)音芯片指令。
  • 屏幕串口發(fā)送指令到語(yǔ)音芯片。
  • 屏幕邏輯判斷并響應(yīng)。



1. 初始化

調(diào)用系統(tǒng)函數(shù) on_init()執(zhí)行初始化串口,代碼如程序清單5所示:

程序清單5初始化

--[[*********************************************************************
** Function name: on_init
** Descriptions : 系統(tǒng)初始化時(shí),執(zhí)行此回調(diào)函數(shù)。
*************************************************************--]]
function on_init()
    uart_set_baudrate3(57600)   --初始化屏幕串口3波特率57600 
    Send_command_list()          --初始化語(yǔ)音模塊指令集
End
--[[***************************************************************************
** Function name: Send_command_list
** Descriptions : 屏幕下發(fā)至語(yǔ)音芯片指令列表
*************************************************************--]]
function Send_command_list()
    cmd_list["喚醒"]   = 0
    cmd_list["打開燈光"] = 1
    cmd_list["關(guān)閉燈光"] = 2
end

核心API函數(shù):

1) uart_set_baudre3(speed)

設(shè)置串口的波特率。


  • speed-通訊的波特率


2) Send_command_list()

自定義函數(shù),用戶定義好屏幕下發(fā)語(yǔ)音芯片的指令表。


2. 屏幕串口接收解析指令

屏幕串口接收并解析語(yǔ)音芯片指令并作出響應(yīng),具體程序如程序清單 6:


程序清單 6 串口接收解析指令


--[[************************************************************************
** Function name: on_uart_recv_data3
** Descriptions : 語(yǔ)音芯片-屏幕串口
** @packet : 屏幕接收語(yǔ)音芯片的發(fā)送數(shù)據(jù)
** @value : 提取語(yǔ)音芯片下發(fā)的指令數(shù)據(jù)
************************************************************************--]]
local cmd_head = 0
local recv_buffer2_count = 0
function on_uart_recv_data3(packet)
    local str =""
    for i = 0,(#(packet)) do
        cmd_head = packet[i]  
        str =str..string.format("%02X",packet[i])
        if cmd_head==0XAA then
            recv_buff = {}
            recv_buffer2_count = 1
            recv_buff[1] = 0xAA
        else
            recv_buffer2_count = recv_buffer2_count+1
            recv_buff[recv_buffer2_count] = packet[i]
        end
        if recv_buffer2_count >= 4 then
            if recv_buff[4] == 0xBB then
                Instruction_operation() 
            end
            recv_buff = {}
        end
    end
end--[[************************************************************************
** Function name: Instruction_operation
** Descriptions : 解析語(yǔ)音芯片下發(fā)的數(shù)據(jù)指令
** @value : 提取指令,屏幕響應(yīng)
************************************************************************--]]function Instruction_operation()
    recv_buff[3] = string.format("%d",recv_buff[3])

    if recv_buff[3] == "1" then                 --打開燈光
        set_value(VoiceScreen_id,1,1)
        set_value(VoiceScreen_id,14,1)
    elseif recv_buff[3] == "2" then            --關(guān)閉燈光
        set_value(VoiceScreen_id,1,0)
        set_value(VoiceScreen_id,14,0)
    end
end


核心API函數(shù)

1) on_uart_recv_data3(packet)

屏幕串口接收語(yǔ)音芯片下發(fā)的數(shù)據(jù)回調(diào)函數(shù)。


  • packet:形參為表,字節(jié)數(shù)據(jù)。



3. 屏幕串口指令發(fā)送

屏幕串口發(fā)送對(duì)應(yīng)指令幀格式的指令到語(yǔ)音芯片,如程序清單 7:

程序清單 7 屏幕串口指令發(fā)送

--[[*********************************************************************
** Function name: Usart_send_cmdarry
** Descriptions : 串口下發(fā)指令。
** @ cmd : 詞條列表
*************************************************************--]]
function Usart_send_cmdarry(cmd)
    local usart_cmd = {}
    usart_cmd[0] = 0xAA        //幀頭
    usart_cmd[1] = 0x02        //功能碼:01代表語(yǔ)音芯片下發(fā)指令,02代表語(yǔ)音芯片接收指令
    string.format("%X",cmd)
    usart_cmd[2] = cmd         //詞條列表:本例程中對(duì)應(yīng)詞條列表00:大彩管家 01:打開燈光 02:關(guān)閉燈光
    usart_cmd[3] = 0xBB        //幀尾
    uart_send_data3(usart_cmd)
end


核心API函數(shù)

1) uart_send_data3(packet)

屏幕串口數(shù)據(jù)發(fā)送函數(shù)。


  • packet:形參為表,字節(jié)數(shù)據(jù)。



4. 屏幕邏輯判斷

屏幕觸摸操作邏輯判斷,下發(fā)對(duì)應(yīng)指令到語(yǔ)音芯片,如程序清單 8:


程序清單 8 屏幕邏輯判斷

--[[*********************************************************************
** Function name: on_control_notify
** Descriptions : 用戶觸摸修改控件后,執(zhí)行此回調(diào)函數(shù)。
** @ screen : 畫面ID
** @ control : 控件ID
** @ value : 控件值
*********************************************************************--]]
function on_control_notify(screen,control,value)
    if screen == VoiceScreen_id then
        if control == 1 then
            if value == 0 then
                Usart_send_cmdarry(cmd_list["關(guān)閉燈光"])
                set_value(VoiceScreen_id,14,0)
            elseif value == 1 then
                Usart_send_cmdarry(cmd_list["打開燈光"])
                set_value(VoiceScreen_id,14,1)
            end
        end
    end
end


核心API函數(shù)

1) on_control_notify(screen,control,value)

用戶觸摸修改控件后,執(zhí)行此回調(diào)函數(shù)。


  • screen:畫面ID。
  • control:控件ID。
  • value:控件值。



3.2.3 下載工程 

工程編譯成功后在輸出窗口會(huì)提示編譯成功,如圖3-3所示。編譯成功后點(diǎn)擊菜單欄中【工具】→【量產(chǎn)向?qū)А?,如圖3-4所示;

3-3 編譯成功


3-4 量產(chǎn)向?qū)?/span>


在菜單欄中,文件→打開工程目錄,在‘dciot_build’目錄的‘prive’拷貝到 SD 卡中,

如圖3-5所示;把 SD 卡接上串口屏后重新上電,等到提示燒錄工程成功后,拔掉 SD 卡重新上電即可。

3-5 拷貝到SD