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

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

大彩串口屏4G應(yīng)用-串口在線調(diào)試

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

演示視頻


一、適合范圍


本文檔適合大彩PM系列串口屏產(chǎn)品使用。





二、開發(fā)環(huán)境版本


1. VisualTFT軟件版本:V3.0.1.1112及以上的版本。

版本查看:

1) 打開VisualTFT軟件啟動頁面如圖2-1軟件版本,右上角會顯示的軟件版本號;

圖片

圖2-1軟件版本


2) 打開VisualTFT,在軟件右下角可以查看軟件版本圖2-2軟件版本,最新版本可登錄http://gc086.com/進(jìn)行下載。

圖片

圖2-2軟件版本


2. 串口屏硬件版本:M系列固件 >=V6.3.250.00。

版本查看:

a) 查看屏幕背面版本號貼紙;

b) VisualTFT與屏幕聯(lián)機(jī)成功后,右下角顯示的版本號。





三、概述


本例程主要講述如何通過串口連接串口屏實(shí)現(xiàn)在線調(diào)試4G工程的功能應(yīng)用。





四、參考資料


 1  《LUA 腳本API V1.4》可通過以下鏈接下載物聯(lián)型開發(fā)包獲取:

http:/gc086.com/index.php?s=/List/index/cid/19.html

 2  《LUA基礎(chǔ)學(xué)習(xí)》可通過以下鏈接下載物聯(lián)型開發(fā)包獲取:

http:/gc086.com/index.php?s=/List/index/cid/19.html

 3  LUA腳本初學(xué)者可以通過下面鏈接進(jìn)行學(xué)習(xí)。

http://www.runoob.com/lua/lua-arrays.html

 4  AT指令,可以通過下面子連接了解

http://www.openluat.com/Product/file/asr1802/Luat%204G模塊AT命令手冊V4.2.8.pdf





五、教程實(shí)現(xiàn)


本文主要將以下2點(diǎn)進(jìn)行說明:

1. 準(zhǔn)備工程素材;

2. 配置串口屏工程;






5.1 準(zhǔn)備工程素材

5.1.1 準(zhǔn)備工程素材

在實(shí)現(xiàn)例程前需要作以下3個(gè)準(zhǔn)備:

1. 硬件平臺;

2. 軟件平臺;

3. UI素材;

該例程使用大彩M系列7寸串口屏DC80480M070_1111_0T為驗(yàn)證開發(fā)平臺,串口屏必須下載壓縮包“4G聯(lián)調(diào)的實(shí)體屏工程-UART3_TO_UART1工程”中的工程。如圖5-1所示:

圖片

圖5-1  M系列7寸串口屏


其他尺寸的串口屏均可借鑒此教程。


5.1.2 軟件平臺

使用大彩自主研發(fā)的上位機(jī)軟件VisualTFT配置工程,登錄http://gc086.com/下載。如圖5-2所示

圖片

圖5-2下載軟件






5.2 功能實(shí)現(xiàn)

本文主要介紹以下3點(diǎn):

(1) 畫面配置

(2) LUA編輯

(3) 工程聯(lián)調(diào)


5.2.1 畫面配置

在畫面ID0中,放置相應(yīng)的文本控件、圖標(biāo)控件,以便于顯示當(dāng)前4G模塊狀態(tài),

畫面配置如圖53所示:

注意:其他非關(guān)鍵控件不在一一介紹,下文不在累述

圖片

圖5-3 畫面配置

5.5.2 LUA編輯 

本例程利用虛擬屏通過串口連接實(shí)體屏4G模塊實(shí)現(xiàn)在線聯(lián)調(diào)工程的功能。當(dāng)4G模塊初始化完成后,獲取運(yùn)營商/信號值。實(shí)現(xiàn)流程如下。


1. 開啟自由串口協(xié)議

當(dāng)全局變量uart_free_protocol 的值等于1時(shí),串口收到的所有數(shù)據(jù)都會在傳遞到串口回調(diào)函數(shù)中,代碼如程序清單 1所示;

程序清單 1 開啟串口協(xié)議

--[[
--使用PC虛擬串口屏調(diào)試4G模塊時(shí)使用
--屏幕需要升級工程 UART3_TO_UART1
--使用虛擬屏與實(shí)體屏聯(lián)調(diào)時(shí),設(shè)置air_debug_mode = 1
--使用實(shí)體屏允許時(shí),設(shè)置air_debug_mode = 0
--]]
local air_debug_mode = 1
uart_free_protocol = air_debug_mode      --自由串口協(xié)議
--[[***************************************************************************
** Function name : on_uart_recv_data
** Descriptions  :  接收串口1的數(shù)據(jù)的回調(diào)函數(shù)。串口1是普通串口。
**               虛擬屏調(diào)試時(shí), air_debug_mode = 1,處理串口1的數(shù)據(jù)。
** @packet       :接收的數(shù)據(jù)包
** @return       : nil,無返回值
***************************************************************************--]]
function on_uart_recv_data(packet)
    --4G模塊直接PC串口
    if air_debug_mode == 1 
       then
        on_air_recv_data(packet)
    end
end

--[[***************************************************************************
** Function name:  on_air_send_cb
** Descriptions:   4G模塊-發(fā)送數(shù)據(jù)
***************************************************************************--]]
function on_air_send_cb(msg)
    if air_debug_mode==1  then
        uart_send_string(msg)      -- air_debug_mode==1 ,使用虛擬屏調(diào)試,通過串口1發(fā)送數(shù)據(jù)
    else
        uart_send_string3(msg)     -- air_debug_mode==0 ,使用實(shí)體屏調(diào)試,通過串口3發(fā)送數(shù)據(jù)
    end
end


2. 初始化

調(diào)用系統(tǒng)函數(shù)on_init()執(zhí)行代碼如程序清單 2所示:

程序清單 2初始化

--[[*********************************************************************
** Function name:  on_init
** Descriptions :  系統(tǒng)初始化時(shí),執(zhí)行此回調(diào)函數(shù)。
*********************************************************************--]]
function on_init()

    dofile(‘'Air724at.lua') --加載 4G庫文件
    uart_set_baudrate3(115200) --設(shè)置與4G模塊通訊的串口3的波特率為115200

    --設(shè)置4G庫函數(shù)的命令發(fā)送函數(shù),命令回調(diào)函數(shù)、調(diào)試信息打印函數(shù)
    air_set_callback(on_air_send_cb,on_air_resp_callback,on_air_log_cb)
    air_hw_int()     --4G模塊初始化設(shè)置
    air_get_iccid()  –- 獲取卡號
    --開啟自動獲取型號強(qiáng)度、時(shí)間、天氣功能
    start_timer(timerId_Sig_Weather, 1000 , 0, 0)
end

--[[*********************************************************************
** Function name:  on_timer
** Descriptions :  定時(shí)器超時(shí)回到調(diào)函數(shù)。
** @ timer_id    :  定時(shí)器ID
*********************************************************************--]]
function on_timer(timer_id)
    on_air_timer(timer_id) --4G庫函數(shù)的定時(shí)處理

    --自動獲取型號強(qiáng)度
    if timer_id == timerId_Sig_Weather
    then
        --定時(shí)器計(jì)數(shù),timer0_notify_cnt 每秒+1。計(jì)時(shí)長度30min
        timer0_notify_cnt = timer0_notify_cnt + 1 
        if timer0_notify_cnt%15 == 0
        then
            --每15s調(diào)用一次,更新信號值
            at_cops_csq() 
        elseif timer0_notify_cnt > 1800                     
        then                                                
            --標(biāo)志位清空,重新開始30min計(jì)時(shí)
            timer0_notify_cnt = 0 
        end
    end
end
--[[*********************************************************************
** Function name : at_cops_csq
** Descriptions  : 獲取運(yùn)營商信息、信號強(qiáng)度
** @return       : nil,無返回值
*********************************************************************--]]
function at_cops_csq()
    air_cmd_add('AT+COPS?','OK',1000) –獲取運(yùn)營商
    air_cmd_add('AT+CSQ'  ,'OK',1000) –獲取信號
end

--[[*********************************************************************
** Function name:  on_air_resp_callback
** Descriptions :  4G模塊-數(shù)據(jù)回調(diào)接口
** @key         :  屏幕->4G模塊的發(fā)送請求
** @value       :  4G模塊->返回的數(shù)據(jù)
*********************************************************************--]]
function on_air_resp_callback(key, value)  
    if value == nil
    then 
        return              --value為空時(shí)退出
    end

    --********************************************************************
    --功能:    判斷 key
    --          如果 key 為空,則退出函數(shù)。
    --          因?yàn)?key 為空時(shí),下方 string.find( key , ) 是不正確的使用。
    --          以下key的處理必須不為空,
    --********************************************************************
    if key == nil 
    then
        return
    end

    --********************************************************************
    --條件:    4G初始化完成
    --功能:    使用使用AT指令獲取信號強(qiáng)度和運(yùn)營商。
    --調(diào)用函數(shù):at_cops_csq()
    --函數(shù)功能:獲取信號強(qiáng)度和運(yùn)營商
    --********************************************************************
    if string.find(key,'+SAPBR=1,1') ~= nil and string.find(value,'OK') ~= nil 
    then
        set_text(screen_main, 16, '')
        at_cops_csq()
    end

    --********************************************************************
    --條件:    4G模塊返回運(yùn)營商信息
    --功能:    設(shè)置串口波特率為 115200 
    --********************************************************************
    if string.find(key,'+COPS')~=nil and string.find(value,'+COPS')~=nil
    then
        --****************************************************************
        --value:            +COPS: 0,2,"46000",7
        --要提取的值:       46000
        --正則表達(dá)式:       '+COPS:.*,.*,"(%d*)"' 
        --****************************************************************
        local regular_e = '+COPS:.*,.*,"(%d*)"' --正則表達(dá)式
        --獲取的值賦給 my_mobile_MCCMNC
        local my_mobile_MCCMNC = string.match( value, regular_e ) 
        set_text( screen_main, 2, mobile_MCCMNC[my_mobile_MCCMNC] )
        my_print( mobile_MCCMNC[my_mobile_MCCMNC] )
    end

    --*******************************************************************
    --條件:    4G模塊返回信號強(qiáng)度信息
    --功能:    設(shè)置串口波特率為 115200 
    --*******************************************************************
    if string.find(key,'+CSQ')~=nil and string.find(value,'+CSQ')~=nil
    then
        --***************************************************************
        --value:            +CSQ: 15,99
        --要提取的值:       15
        --正則表達(dá)式:       '+CSQ: (.*),.*' 
        --***************************************************************
        local regular_e = '+CSQ: (.*),.*' --正則表達(dá)式
        --獲取的值賦給 my_csq 
        local my_csq = tonumber(string.match(value,regular_e))
        if my_csq<=11
        then
            set_value( screen_main, 1, 1) --設(shè)置信號圖標(biāo)顯示第1幀
            set_text( screen_main, 5, "弱")     --設(shè)置文本,顯示“弱”
        elseif my_csq>=12 and my_csq<=13 
        then
            set_value( screen_main, 1, 2) --設(shè)置信號圖標(biāo)顯示第2幀
             set_text( screen_main, 5, "良")    --設(shè)置文本,顯示“良”
        elseif my_csq>=14 and my_csq<=15 
        then
            set_value( screen_main, 1, 3) --設(shè)置信號圖標(biāo)顯示第3幀
             set_text( screen_main, 5, "良")    --設(shè)置文本,顯示“良”
        elseif my_csq>=16 
        then
            set_value( screen_main, 1, 4) --設(shè)置信號圖標(biāo)顯示第4幀
             set_text( screen_main, 5, "強(qiáng)")    --設(shè)置文本,顯示“強(qiáng)”
        end
        my_print(my_csq)
    end

    ......
end

--[[**********************************************************************
** Function name: on_uart_recv_data3
** Descriptions : 接收串口3數(shù)據(jù)回調(diào)函數(shù),連接4G模塊。
**********************************************************************--]]
function on_uart_recv_data3(packet)
    --4G AT指令庫API
    on_air_recv_data(packet)
end



核心API函數(shù)

1) dofile (filename)

加載文件:本例程中加載4G AT 指令的庫

  • filename :文件名

 

2) uart_set_baudrate3(speed)

設(shè)置串口3的波特率:串口3為屏幕和4G模塊通訊的串口

  • speed:通訊的波特率

 

3) on_air_recv_data(packet)

串口接收4G模塊的返回?cái)?shù)據(jù)的回調(diào)。

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

 

4) air_set_callback (on_air_send_cb,on_air_resp_callback,on_air_log_cb)

設(shè)置4G庫函數(shù)的回調(diào)。形參類型為函數(shù),參數(shù)依次為命令發(fā)送函數(shù),命令回調(diào)函數(shù)、調(diào)試信息打印函數(shù),可自定義函數(shù)名。

  • on_air_send_cb:屏幕向4G模塊發(fā)送回調(diào)函數(shù)
  • on_air_resp_callback:4G向屏幕返回?cái)?shù)據(jù)回調(diào)函數(shù)
  • on_air_log_cb:用戶調(diào)試信息回調(diào)函數(shù)調(diào)試

 

5) at_cops_csq()

自定義封裝函數(shù),獲取運(yùn)行商和信號值

 

6) air_cmd_add(sendstr,ackstr,timeout,retry,callback)

屏幕向4G模塊發(fā)送AT指令。

  • sendstr:屏幕向4G模塊發(fā)送AT指令
  • ackstr:4G模塊應(yīng)答屏幕的請求
  • timeout:應(yīng)答超時(shí)
  • retry:超時(shí)重發(fā)次數(shù)
  • callback:應(yīng)答回調(diào)函數(shù)

 

7) on_air_resp_callback(key, value)

4G應(yīng)答屏幕回調(diào)函數(shù):屏幕發(fā)送AT指令,4G應(yīng)答后均會回調(diào)該函數(shù),本函數(shù)如air_set_callback(on_air_send_cb,on_air_resp_callback,on_air_log_cb)函數(shù)設(shè)置。

  • key:屏幕->4G模塊,發(fā)送請求的AT指令
  • value:4G模塊->屏幕,返回的數(shù)據(jù)

 

8) my_print(debug_msg)

當(dāng)en_debug_msg等0時(shí)不顯示調(diào)試信息;等1時(shí)虛擬屏顯示調(diào)試信息; 等2時(shí)實(shí)體屏串口1輸出。

  • debug_msg :需要串口輸出的信息


5.2.3 工程聯(lián)調(diào)

1. 將壓縮包“4G聯(lián)調(diào)的實(shí)體屏工程-UART3_TO_UART1工程”中的工程燒錄到實(shí)體屏,燒錄完成后如圖5-4所示。

注意:此工程主要用于將虛擬機(jī)與實(shí)體屏的4G模塊連接。該工程為固定工程,所有尺寸均可使用。

圖片

圖5-4 UART3_TO_UART1


2. 將編寫好的工程編譯并運(yùn)行虛擬屏,如圖 5-5所示;

圖片

圖 5-5 創(chuàng)建虛擬屏

 

3. 將虛擬屏串口選擇與實(shí)體屏相連的串口,并將波特率調(diào)整為115200bps,即可實(shí)現(xiàn)虛擬屏與實(shí)體屏聯(lián)調(diào),如圖 5-6所示;

圖片

 5-6 串口聯(lián)調(diào)