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

                                                大彩串口屏4G應用- TCP單連接

                                                發布人:大彩科技發布日期:2021-10-21


                                                一、適合范圍


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





                                                二、開發環境版本


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

                                                版本查看:

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

                                                圖2-1軟件版本


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

                                                圖2-2軟件版本


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

                                                版本查看:

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

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





                                                三、概述


                                                例程中,介紹4G TCP單連接的應用。屏幕作為客戶端,和服務器進行數據收發。

                                                服務器TCP測試工具:本例程中使用合宙提供的TCP 透傳云 做測試驗證。該測試平臺IP固定為180.97.81.180,Demo中只需要更改端口號,在連接即可測試驗證。

                                                注意UDP或多鏈接模式可參考《Luat 4G模塊AT命令手冊V4.2.2.pdf》即可

                                                該平臺創建服務器必須在3分鐘內連上,且長時間未交互,服務器會自動關閉。





                                                四、參考資料


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

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

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

                                                http:/www.lysxcz.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

                                                 5  合宙TCP測試平臺。

                                                http://tcplab.openluat.com





                                                五、教程實現


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

                                                1. 準備工程素材;

                                                2. 配置串口屏工程;






                                                5.1 準備工程素材

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

                                                1. 硬件平臺;

                                                2. 軟件平臺;

                                                3. UI素材;

                                                該例程使用大彩M系列7寸串口屏DC80480M070_1111_0T為驗證開發平臺。如圖5-1所示;

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

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


                                                5.1.2 軟件平臺

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

                                                圖5-2 下載軟件






                                                5.2 配置串口屏工程

                                                本文主要介紹以下2點:

                                                (1) 畫面配置

                                                (2) LUA編輯


                                                5.2.1. 畫面配置

                                                在畫面ID0中,客戶端、服務端和信號值/運營商3部分組成。

                                                客戶端: 

                                                • 文本控件ID1:屏幕公網的IP
                                                • 文本控件2~3:分別服務器IP地址、端口號。
                                                • 按鈕控件ID4:當輸入端口號后,點擊連接。屏幕向該服務器發起請求信息。

                                                服務器:

                                                • 文本控件ID7~9:當服務器下發數據時,將相關信息顯示此處,依次為服務器的IP、端口、數據等

                                                4G信號和運營商:

                                                • 圖標控件控件ID10作為信號顯示、文本控件ID11用于顯示運營商。

                                                畫面配置如圖5-3所示:

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

                                                圖5-3 畫面配置


                                                5.2.2. LUA編輯

                                                本例程中,屏幕上電執行初始化操作,如加載4G AT 指令的庫、初始化4G模塊、定時獲取運營商和信號值等。

                                                當用戶點擊圖片下載的時,調用air_http_download()開始下載文件。在下載回調函數on_http_download_file_cb()里進行數據存儲,顯示下載信息等。若該文件單次下載不完,會多次回調on_http_download_file_cb()函數,直至下載完畢,如圖5-4所示。

                                                圖5-4 TCP連接

                                                1. 初始化

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

                                                程序清單 1初始化

                                                --[[*********************************************************************
                                                ** Function name:  on_init
                                                ** Descriptions :  系統初始化時,執行此回調函數。
                                                *********************************************************************--]]
                                                function on_init() 
                                                    dofile('air724at.lua') --加載 http.lua 文件
                                                    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模塊初始化設置
                                                    --開啟自動獲取型號強度、時間、天氣功能
                                                    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。
                                                        timer0_notify_cnt = timer0_notify_cnt + 1 
                                                        if timer0_notify_cnt%15 == 0
                                                        then
                                                            --每15s調用一次,更新信號值
                                                            at_cops_csq()
                                                            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)
                                                
                                                --***********************************************************************
                                                    --功能:    判斷 key
                                                    --          如果 key 為空,則退出函數。
                                                    --          因為 key 為空時,下方 string.find( key , ) 是不正確的使用。
                                                    --          以下key的處理必須不為空,
                                                    --********************************************************************
                                                    if key == nil 
                                                    then
                                                        return
                                                    end
                                                
                                                    ...... 
                                                    --******************************************************************
                                                    --條件:    4G初始化完成
                                                    --功能:    使用使用AT指令獲取信號強度和運營商。
                                                    --調用函數:at_cops_csq()
                                                    --函數功能:獲取信號強度和運營商
                                                    --調用函數:at_tcp_client_cofig()
                                                    --函數功能:TCP配置
                                                     *********************************************************************
                                                    if string.find(key,'+SAPBR=1,1') ~= nil and string.find(value,'OK') ~= nil 
                                                    then
                                                        at_cops_csq()
                                                        at_tcp_client_cofig()
                                                    end
                                                
                                                    --********************************************************************
                                                    --條件:    4G模塊返回運營商信息
                                                    --功能:   
                                                    --********************************************************************
                                                    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])
                                                    end
                                                
                                                    --********************************************************************
                                                    --條件:4G模塊返回信號強度信息
                                                    --功能: 
                                                    --********************************************************************
                                                    if string.find(key,'+CSQ')~=nil and string.find(value,'+CSQ')~=nil
                                                    then
                                                        --***************************************************************
                                                        --value    : +CSQ: 15,99
                                                        --要提取的值:15
                                                        --正則表達式: '+CSQ: (.*),.*' 
                                                        --****************************************************************
                                                        local regular_e = '+CSQ: (.*),.*' --正則表達式
                                                        local my_csq = tonumber(string.match(value,regular_e))
                                                        if my_csq<=11 
                                                        then
                                                            set_value( screen_main, 1, 1) --設置信號圖標顯示第1幀 
                                                        elseif my_csq>=12 and my_csq<=13 
                                                        then
                                                            set_value(screen_main, 1, 2) --設置信號圖標顯示第2幀 
                                                        elseif my_csq>=14 and my_csq<=15 
                                                        then
                                                            set_value( screen_main, 1, 3) --設置信號圖標顯示第3幀 
                                                        elseif my_csq>=16 
                                                        then
                                                            set_value( screen_main, 1, 4) --設置信號圖標顯示第4幀 
                                                        end
                                                    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) air_hw_int()

                                                4G AT 指令的庫函數,初始化4G模塊

                                                 

                                                6) at_cops_csq()

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

                                                 

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

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

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

                                                注:如果沒有設置超時重發次數,則超時時直接發送隊列中的下一條指令。

                                                 

                                                8) 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模塊返回的數據

                                                 

                                                相關AT指令:

                                                本例程中,涉及到獲取4G模塊初始化、運營商、信號值等AT交互指令回調的判斷,在on_air_resp_callback(key, value)回調函數中,判斷4G收發的相關AT指令,如下所示:

                                                1) 網絡數據是否激活: 

                                                屏幕發送:AT+SAPBR=1,1。air_hw_int()函數里發送。

                                                屏幕接收:OK。on_air_resp_callback(key, value)函數里執行4G返回數據的判斷。

                                                 

                                                2)   獲取運營商:

                                                屏幕發送:AT+COPS?。在at_cops_csq()函數了發送。

                                                屏幕接收:OK。on_air_resp_callback(key, value)函數里執行4G返回數據的判斷。

                                                 

                                                3)  獲取信號值:

                                                屏幕發送:AT+CSQ。在at_cops_csq()函數了發送。

                                                屏幕接收:OK。on_air_resp_callback(key, value)函數里執行4G返回數據的判斷。

                                                 

                                                2. TCP配置

                                                當4G初始化完畢后,在on_air_resp_callback(key, value)函數里調用at_tcp_client_cofig()進行TCP配置,代碼如程序清單 2所示:

                                                程序清單 2  TCP配置

                                                --[[*********************************************************************
                                                ** Function name:  on_air_resp_callback
                                                ** Descriptions :  4G模塊-數據回調接口
                                                ** @key           :  屏幕向4G模塊的發送請求
                                                ** @value        :  4G模塊返回的數據
                                                *********************************************************************--]]
                                                function on_air_resp_callback(key, value)
                                                    ......
                                                    --******************************************************************
                                                    --條件:    4G初始化完成
                                                    --功能:    使用使用AT指令獲取信號強度和運營商。
                                                    --調用函數:at_cops_csq()
                                                    --函數功能:獲取信號強度和運營商
                                                    --調用函數:at_tcp_client_cofig()
                                                    --函數功能:TCP配置
                                                    --*****************************************************************
                                                    if string.find(key,'+SAPBR=1,1') ~= nil and string.find(value,'OK') ~= nil 
                                                    then
                                                        .......
                                                        at_tcp_client_cofig()
                                                    end
                                                end
                                                
                                                --[[*********************************************************************
                                                ** Function name : at_tcp_client_cofig
                                                ** Descriptions  : TCP配置
                                                ** @return       : nil,無返回值
                                                ******************************************************************** --]]
                                                function at_tcp_client_cofig(connect) 
                                                    local function my_get_ip_cb(key, value)
                                                
                                                        if string.find(key,'+CIFSR') ~= nil and value ~= nil 
                                                        then
                                                        Tcp_ip = value
                                                        set_text(sc_Tcp, 1, Tcp_ip)
                                                        end
                                                    end
                                                
                                                    local function my_ip_state(key, value)
                                                        air_log('my debugMsg key   -> '..key)
                                                        air_log('my debugMsg value -> '..value)
                                                
                                                        if string.find(key,'+CIPSTATUS') ~= nil 
                                                            and string.find(value,'IP STATUS') ~= nil 
                                                        then
                                                            Tcp_state = 1
                                                            air_log('at_tcp_client_cofig success !!!!!!')
                                                        end
                                                    end
                                                
                                                    if connect == nil
                                                    then
                                                        connect = 0
                                                    end
                                                    air_cmd_add('AT+CREG=1', 'OK', 1000, 3) --設置當前GPRS注冊狀態
                                                    air_cmd_add('AT+CGREG=1', 'OK', 1000, 3) --設置當前GPRS注冊狀態
                                                    air_cmd_add('AT+CGATT=1', 'OK', 1000, 3) --設置當前GPRS附著狀態
                                                    air_cmd_add('AT+CIPMUX='.. connect, 'OK', 1000, 3) --設置為單、多鏈接模式
                                                
                                                    --設置為快發模式(推薦使用這種模式)
                                                    air_cmd_add('AT+CIPQSEND=1', 'OK', 1000, 3)
                                                    air_cmd_add('AT+CSTT?', 'OK', 1000, 3) --啟動任務,查看APN
                                                    air_cmd_add('AT+CSTT="CMIOT"', 'OK', 1000, 3) --啟動任務,設置APN
                                                
                                                    air_cmd_add('AT+CIICR', 'OK', 1000, 3) --激活移動場景
                                                    air_cmd_add('AT+CIFSR' , 'OK', 1000, 3, my_get_ip_cb) --查詢分配的IP地址
                                                
                                                    air_cmd_add('AT+CIPSTATUS' , 'STATE: IP STATUS', 1000, 3, my_ip_state) --查詢下鏈接狀態
                                                
                                                end

                                                核心API函數

                                                1) at_tcp_client_cofig(connect)

                                                自定義函數,TCP客戶端配置

                                                • connect:0-單鏈接,非0多鏈接

                                                 

                                                相關AT指令:

                                                本例程中,TCP配置涉及到相關指令有設置為單、多鏈接模式、快發模式、激活等,相關關AT指令,更多詳細的AT指令參考《Luat 4G模塊AT命令手冊V4.2.2.pdf》,如下所示:

                                                1) 設置鏈接模式: 

                                                屏幕發送:AT+CIPMUX=0。設置單鏈接,非零(1/2)為多連接模式。

                                                屏幕接收:OK

                                                 

                                                2) 設置移動激活場景:

                                                屏幕發送:AT+CIICR?

                                                屏幕接收:OK

                                                 

                                                3) 查詢分配的IP地址:

                                                屏幕發送:AT+CIFSR

                                                屏幕接收:OK


                                                3. 連接服務器

                                                當用戶輸入端口號后,點擊聯機,調用at_tcp_client_connect()并設置服務器接收模式,代碼如程序清單 3所示:

                                                程序清單 3 連接服務器

                                                --[[*********************************************************************
                                                ** Function name : at_tcp_client_connect
                                                ** Descriptions  : 設置接收模式
                                                ** @head         : 是否顯示頭部
                                                ** @showtp       : 是否顯示協議
                                                ** @srip         : 是否顯示IP、端口
                                                ** @return       : nil,無返回值
                                                *********************************************************************--]]
                                                function at_set_tcp_recv_mode(head, showtp,srip)
                                                    air_cmd_add('AT+CIPHEAD='..head,      'OK', 1000, 3) --顯示頭部
                                                    air_cmd_add('AT+CIPSHOWTP='..showtp,  'OK', 1000, 3) --顯示協議
                                                    air_cmd_add('AT+CIPSRIP='..srip,      'OK', 1000, 3) --顯示IP、端口
                                                end
                                                
                                                --[[*********************************************************************
                                                ** Function name : at_tcp_client_connect
                                                ** Descriptions  : 連接服務器
                                                ** @mode         : 連接模式,TCPUPD
                                                ** @server_ip    : 服務器地址
                                                ** @port         : 服務器端口
                                                ** @return       : nil,無返回值
                                                ********************************************************************--]]
                                                function at_tcp_client_connect(mode, server_ip, port)
                                                    --連接服務器
                                                    air_cmd_add(
                                                        'AT+CIPSTART="'..mode..'",'..'"'..server_ip..'",'..port, 
                                                        'OK', 
                                                        1000,
                                                        3)
                                                    --查詢當前GPRS注冊狀態
                                                    air_cmd_add('AT+CIPSTATUS', 'STATE: CONNECT OK', 1000, 3) 
                                                
                                                end
                                                --[[*********************************************************************
                                                ** Function name : on_control_notify
                                                ** Descriptions  : 系統回調函數,用戶通過觸摸修改控件后,執行此回調函數。
                                                **                 點擊按鈕控件,修改文本控件、修改滑動條都會觸發此事件。
                                                ** @return       : nil,無返回值
                                                ********************************************************************--]]
                                                function on_control_notify(screen,control,value)
                                                    if screen == sc_Tcp 
                                                    then
                                                        if control == 4 and value == 0 and Tcp_state == 1
                                                        then
                                                            Tcp_server_ip = get_text(sc_Tcp, 3)
                                                            Tcp_server_port = get_text(sc_Tcp, 3)
                                                            at_tcp_client_connect('TCP', Tcp_server_ip, Tcp_server_port) --連接服務器
                                                            at_set_tcp_recv_mode(1, 1, 1)              --設置接收模式
                                                        ......
                                                        end
                                                
                                                    end
                                                end

                                                核心API函數

                                                1) at_set_tcp_recv_mode(head, showtp,srip)

                                                設置接收模式

                                                • head: 是否顯示頭部
                                                • showtp: 是否顯示協議
                                                • srip: 是否顯示IP、端口
                                                • return: nil,無返回值

                                                 

                                                2) at_tcp_client_connect(mode, server_ip, port)

                                                連接服務器

                                                • mode: 連接模式,TCPUPD
                                                • server_ip : 服務器地址
                                                • port : 服務器端口

                                                 

                                                相關AT指令:

                                                1) 請求連接: 

                                                屏幕發送:AT+CIPSTART="TCP","60.166.18.9",7500。

                                                屏幕接收:OK

                                                 

                                                2) 設置服務器數據包含頭:

                                                屏幕發送:AT+CIPHEAD=1

                                                屏幕接收:OK

                                                 

                                                3) 設置服務器協議包含協議:

                                                屏幕發送:AT+CIPSHOWTP=1

                                                屏幕接收:OK

                                                 

                                                4) 設置服務器協議包含IP、端口:

                                                屏幕發送:AT+CIPSRIP=1

                                                屏幕接收:OK

                                                 

                                                4. 發送數據到服務器

                                                用戶輸入文本數據點擊發送后,調用at_tcp_send ()發送數據到服務端,代碼如程序清單 4所示:

                                                程序清單 4 發送數據

                                                --[[*********************************************************************
                                                ** Function name : on_control_notify
                                                ** Descriptions  : 系統回調函數,用戶通過觸摸修改控件后,執行此回調函數。
                                                **                 點擊按鈕控件,修改文本控件、修改滑動條都會觸發此事件。
                                                ** @return       : nil,無返回值
                                                *********************************************************************--]]
                                                function on_control_notify(screen,control,value)
                                                    if screen == sc_Tcp 
                                                    then
                                                       ......
                                                          local send_data = get_text(sc_Tcp, 5)
                                                          at_tcp_send(send_data)
                                                       .......
                                                    end
                                                end
                                                
                                                --[[*********************************************************************
                                                ** Function name : at_tcp_send
                                                ** Descriptions  : TCP、發送數據到服務端
                                                ** @str          : 發送數據
                                                ** @return       : nil,無返回值
                                                ********************************************************************--]]
                                                function at_tcp_send(str)
                                                    air_cmd_add('AT+CIPSEND='..string.len(str) , '>', 1000, 3)
                                                    air_cmd_add(str, 'DATA ACCEPT', 1000, 3)
                                                end

                                                核心API函數

                                                1) at_tcp_send(str)

                                                發送數據到服務器

                                                str: 字符串

                                                 

                                                相關AT指令:

                                                1) 發送數據(確定長度): 

                                                屏幕發送:AT+CIPSEND=10

                                                屏幕接收:>

                                                 

                                                2) 發送數據(數據內容)

                                                屏幕發送:1234567890

                                                屏幕接收:DATA ACCEPT:10

                                                 

                                                5. 接收服務器的數據

                                                本例程中,接收服務器的信息是含接收員(目標服務器的IP、端口)、幀頭、協議類型、數據內容等,在函數at_set_tcp_recv_mode(head, showtp,srip)配置。程序清單如程序清單 5所示。

                                                程序清單 5  接收服務器數據

                                                --[[*********************************************************************
                                                ** Function name: split
                                                ** Descriptions : 切割字符串
                                                ** @ str          : 源字符串
                                                ** @ pat          : 分割符號
                                                *********************************************************************--]]
                                                function split(str, pat)
                                                    local t = {}
                                                    local last_end = 0
                                                    local s, e = string.find(str, pat, 1) --第一個分割號
                                                    local i = 1
                                                    while s do
                                                        table.insert(t, string.sub(str, last_end + 1, last_end + s - last_end - 1))
                                                        last_end = e
                                                        s, e = string.find(str, pat, last_end + 1)
                                                        i = i + 1
                                                    end
                                                    if last_end <= #str then
                                                        cap = string.sub(str, last_end + 1)
                                                        table.insert(t, cap)
                                                    end
                                                    return t  
                                                end
                                                
                                                --[[*********************************************************************
                                                ** Function name:  on_air_resp_callback
                                                ** Descriptions :  4G模塊-數據回調接口
                                                ** @key         :  屏幕->4G模塊的發送請求
                                                ** @value       :  4G模塊->返回的數據
                                                *********************************************************************--]]
                                                function on_air_resp_callback(key, value)  
                                                
                                                    ...... 
                                                    if value ~= nil
                                                    then
                                                        if string.find(value,'FROM') ~= nil 
                                                        then
                                                            --+RECV FROM: 60.166.12.210:7500
                                                            --分割成3份,分別為+RECV FROM、60.166.12.210、7500
                                                            local serverInfo = split(value,':')
                                                            set_text(sc_Tcp, 7, serverInfo[2]) –- ip
                                                            set_text(sc_Tcp, 8, serverInfo[3]) –-端口
                                                
                                                        elseif  string.find(value,'IPD') ~= nil 
                                                        then
                                                            --+IPD,TCP,10:123456789
                                                            --分割成2份,分別為+IPD,TCP,10、123456789
                                                            local serverData = split(value,':')
                                                            set_text(sc_Tcp, 9, serverData[2]) -- 數據內容
                                                        end
                                                    end
                                                    ......
                                                end

                                                相關AT指令:

                                                1) 接收數據源(服務器IP、端口): 

                                                屏幕接收:+RECV FROM: 60.166.12.210:7500


                                                2) 接收數據(幀頭+協議+數據長度+數據內容):

                                                屏幕接收:+IPD,TCP,10:123456789






                                                5.3 下載工程

                                                工程編譯成功后在輸出窗口會提示編譯成功,如圖5-5所示;

                                                圖片

                                                圖5-5編譯成功


                                                在菜單欄中,文件→打開工程目錄,在‘dciot_build’目錄的‘private’拷貝到SD卡中,如圖5-6和圖5-7所示;把SD卡接上串口屏后重新上電,等到提示燒錄工程成功后,拔掉SD卡重新上電即可。

                                                圖片

                                                圖5-6下載文件

                                                圖片

                                                圖5-7拷貝到SD卡






                                                欧美一级A片欧黑人一级↖片