韩国电影《教室爱欲》,国产精品99久久久久久久女警,69国产成人精品午夜福中文,国产熟妇乱xxxxx大屁股网

您的位置:首頁   >  關于我們  >  新聞動態

大彩串口屏4G應用-串口在線調試

發布人:大彩科技發布日期:2021-08-05

演示視頻


一、適合范圍


本文檔適合大彩PM系列串口屏產品使用。





二、開發環境版本


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

版本查看:

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

圖片

圖2-1軟件版本


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

圖片

圖2-2軟件版本


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

版本查看:

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

b) VisualTFT與屏幕聯機成功后,右下角顯示的版本號。





三、概述


本例程主要講述如何通過串口連接串口屏實現在線調試4G工程的功能應用。





四、參考資料


 1  《LUA 腳本API V1.4》可通過以下鏈接下載物聯型開發包獲取:

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

 2  《LUA基礎學習》可通過以下鏈接下載物聯型開發包獲取:

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

 3  LUA腳本初學者可以通過下面鏈接進行學習。

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

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

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





五、教程實現


本文主要將以下2點進行說明:

1. 準備工程素材;

2. 配置串口屏工程;






5.1 準備工程素材

5.1.1 準備工程素材

在實現例程前需要作以下3個準備:

1. 硬件平臺;

2. 軟件平臺;

3. UI素材;

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

圖片

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


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


5.1.2 軟件平臺

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

圖片

圖5-2下載軟件






5.2 功能實現

本文主要介紹以下3點:

(1) 畫面配置

(2) LUA編輯

(3) 工程聯調


5.2.1 畫面配置

在畫面ID0中,放置相應的文本控件、圖標控件,以便于顯示當前4G模塊狀態,

畫面配置如圖53所示:

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

圖片

圖5-3 畫面配置

5.5.2 LUA編輯 

本例程利用虛擬屏通過串口連接實體屏4G模塊實現在線聯調工程的功能。當4G模塊初始化完成后,獲取運營商/信號值。實現流程如下。


1. 開啟自由串口協議

當全局變量uart_free_protocol 的值等于1時,串口收到的所有數據都會在傳遞到串口回調函數中,代碼如程序清單 1所示;

程序清單 1 開啟串口協議

--[[
--使用PC虛擬串口屏調試4G模塊時使用
--屏幕需要升級工程 UART3_TO_UART1
--使用虛擬屏與實體屏聯調時,設置air_debug_mode = 1
--使用實體屏允許時,設置air_debug_mode = 0
--]]
local air_debug_mode = 1
uart_free_protocol = air_debug_mode      --自由串口協議
--[[***************************************************************************
** Function name : on_uart_recv_data
** Descriptions  :  接收串口1的數據的回調函數。串口1是普通串口。
**               虛擬屏調試時, air_debug_mode = 1,處理串口1的數據。
** @packet       :接收的數據包
** @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模塊-發送數據
***************************************************************************--]]
function on_air_send_cb(msg)
    if air_debug_mode==1  then
        uart_send_string(msg)      -- air_debug_mode==1 ,使用虛擬屏調試,通過串口1發送數據
    else
        uart_send_string3(msg)     -- air_debug_mode==0 ,使用實體屏調試,通過串口3發送數據
    end
end


2. 初始化

調用系統函數on_init()執行代碼如程序清單 2所示:

程序清單 2初始化

--[[*********************************************************************
** Function name:  on_init
** Descriptions :  系統初始化時,執行此回調函數。
*********************************************************************--]]
function on_init()

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

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

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

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

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

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

    --********************************************************************
    --條件:    4G初始化完成
    --功能:    使用使用AT指令獲取信號強度和運營商。
    --調用函數:at_cops_csq()
    --函數功能:獲取信號強度和運營商
    --********************************************************************
    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模塊返回運營商信息
    --功能:    設置串口波特率為 115200 
    --********************************************************************
    if string.find(key,'+COPS')~=nil and string.find(value,'+COPS')~=nil
    then
        --****************************************************************
        --value:            +COPS: 0,2,"46000",7
        --要提取的值:       46000
        --正則表達式:       '+COPS:.*,.*,"(%d*)"' 
        --****************************************************************
        local regular_e = '+COPS:.*,.*,"(%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模塊返回信號強度信息
    --功能:    設置串口波特率為 115200 
    --*******************************************************************
    if string.find(key,'+CSQ')~=nil and string.find(value,'+CSQ')~=nil
    then
        --***************************************************************
        --value:            +CSQ: 15,99
        --要提取的值:       15
        --正則表達式:       '+CSQ: (.*),.*' 
        --***************************************************************
        local regular_e = '+CSQ: (.*),.*' --正則表達式
        --獲取的值賦給 my_csq 
        local my_csq = tonumber(string.match(value,regular_e))
        if my_csq<=11
        then
            set_value( screen_main, 1, 1) --設置信號圖標顯示第1幀
            set_text( screen_main, 5, "弱")     --設置文本,顯示“弱”
        elseif my_csq>=12 and my_csq<=13 
        then
            set_value( screen_main, 1, 2) --設置信號圖標顯示第2幀
             set_text( screen_main, 5, "良")    --設置文本,顯示“良”
        elseif my_csq>=14 and my_csq<=15 
        then
            set_value( screen_main, 1, 3) --設置信號圖標顯示第3幀
             set_text( screen_main, 5, "良")    --設置文本,顯示“良”
        elseif my_csq>=16 
        then
            set_value( screen_main, 1, 4) --設置信號圖標顯示第4幀
             set_text( screen_main, 5, "強")    --設置文本,顯示“強”
        end
        my_print(my_csq)
    end

    ......
end

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



核心API函數

1) dofile (filename)

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

  • filename :文件名

 

2) uart_set_baudrate3(speed)

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

  • speed:通訊的波特率

 

3) on_air_recv_data(packet)

串口接收4G模塊的返回數據的回調。

  • packet:形參為表,字節數據。

 

4) air_set_callback (on_air_send_cb,on_air_resp_callback,on_air_log_cb)

設置4G庫函數的回調。形參類型為函數,參數依次為命令發送函數,命令回調函數、調試信息打印函數,可自定義函數名。

  • on_air_send_cb:屏幕向4G模塊發送回調函數
  • on_air_resp_callback:4G向屏幕返回數據回調函數
  • on_air_log_cb:用戶調試信息回調函數調試

 

5) at_cops_csq()

自定義封裝函數,獲取運行商和信號值

 

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

屏幕向4G模塊發送AT指令。

  • sendstr:屏幕向4G模塊發送AT指令
  • ackstr:4G模塊應答屏幕的請求
  • timeout:應答超時
  • retry:超時重發次數
  • callback:應答回調函數

 

7) on_air_resp_callback(key, value)

4G應答屏幕回調函數:屏幕發送AT指令,4G應答后均會回調該函數,本函數如air_set_callback(on_air_send_cb,on_air_resp_callback,on_air_log_cb)函數設置。

  • key:屏幕->4G模塊,發送請求的AT指令
  • value:4G模塊->屏幕,返回的數據

 

8) my_print(debug_msg)

當en_debug_msg等0時不顯示調試信息;等1時虛擬屏顯示調試信息; 等2時實體屏串口1輸出。

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


5.2.3 工程聯調

1. 將壓縮包“4G聯調的實體屏工程-UART3_TO_UART1工程”中的工程燒錄到實體屏,燒錄完成后如圖5-4所示。

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

圖片

圖5-4 UART3_TO_UART1


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

圖片

圖 5-5 創建虛擬屏

 

3. 將虛擬屏串口選擇與實體屏相連的串口,并將波特率調整為115200bps,即可實現虛擬屏與實體屏聯調,如圖 5-6所示;

圖片

 5-6 串口聯調





主站蜘蛛池模板: 湟源县| 香格里拉县| 神木县| 两当县| 栖霞市| 沙河市| 盖州市| 陆河县| 天长市| 江口县| 长丰县| 濮阳县| 大冶市| 云和县| 缙云县| 呼和浩特市| 易门县| 山东省| 康定县| 吉木萨尔县| 裕民县| 通渭县| 镇沅| 黄龙县| 高阳县| 越西县| 望谟县| 东阿县| 天等县| 莱西市| 鸡泽县| 资中县| 浮梁县| 玉林市| 通州市| 都兰县| 祁东县| 长宁县| 桑植县| 同德县| 峨眉山市|