4G模塊初始化視頻
本文檔適合大彩PM 4G系列串口屏產(chǎn)品使用。
1. VisualTFT軟件版本:V3.0.1.1112及以上的版本。
版本查看:
1) 打開(kāi)VisualTFT軟件啟動(dòng)頁(yè)面如圖2-1軟件版本,右上角會(huì)顯示的軟件版本號(hào);
圖2-1軟件版本
2) 打開(kāi)VisualTFT,在軟件右下角可以查看軟件版本圖2-2軟件版本,最新版本可登錄http://gc086.com/進(jìn)行下載。
圖2-2軟件版本
2. 串口屏硬件版本:M系列固件 >= V6.3.257.00。
版本查看:
1) 查看屏幕背面版本號(hào)貼紙;
2) VisualTFT與屏幕聯(lián)機(jī)成功后,右下角顯示的版本號(hào)。
本例程主要講述4G模塊上電初始化時(shí)所涉及的API函數(shù)的具體作用。
1. 《LUA 腳本API V1.4》可通過(guò)以下鏈接下載物聯(lián)型開(kāi)發(fā)包獲取:
http:/gc086.com/index.php?s=/List/index/cid/19.html
2. 《LUA基礎(chǔ)學(xué)習(xí)》可通過(guò)以下鏈接下載物聯(lián)型開(kāi)發(fā)包獲取:
http:/gc086.com/index.php?s=/List/index/cid/19.html
3. LUA腳本初學(xué)者可以通過(guò)下面鏈接進(jìn)行學(xué)習(xí)。
http://www.runoob.com/lua/lua-arrays.html
4. AT指令,可以通過(guò)下面子連接了解
http://www.openluat.com/Product/file/asr1802/Luat%204G模塊AT命令手冊(cè)V4.2.8.pdf
串口屏上電后,需要控制4G模塊的PWRKEY管腳啟動(dòng)模塊。主芯片管腳拉高時(shí),PWRKEY管腳被拉低,模塊啟動(dòng),如圖所示。這部分內(nèi)容已經(jīng)封裝在air724at.lua庫(kù)的air_hw_int()函數(shù)中。
本文主要介紹4G模塊初始化的時(shí)需要執(zhí)行的指令以及所使用API函數(shù)的詳細(xì)說(shuō)明,執(zhí)行流程如下。
圖 5-1 流程圖
6.1 加載4G API庫(kù)
4G模塊LUA函數(shù)庫(kù)是對(duì)需要用到的AT命令進(jìn)行封裝的庫(kù),初始化時(shí)需要調(diào)用庫(kù)中相關(guān)的回調(diào)函數(shù),所有需要在屏幕上電初始化的同時(shí)將4G API庫(kù)加載。如程序清單 1所示
程序清單 1 加載4G庫(kù)
function on_init() dofile(‘'air724at.lua') --加載 4G AT指令庫(kù)文件 ...... end
通過(guò)函數(shù)air_set_callback()設(shè)置對(duì)應(yīng)的4G通訊相關(guān)數(shù)據(jù)收發(fā)函數(shù)。該函數(shù)主要用于定義串口屏與4G模塊的通訊串口的數(shù)據(jù)發(fā)送函數(shù)、接收函數(shù)、調(diào)試信息處理函數(shù)。此函數(shù)需要再上電初始化時(shí)執(zhí)行,如程序清單 2所示。
程序清單 2 設(shè)置回調(diào)函數(shù)
--[[******************************************************************* ** Function name: on_init ** Descriptions: 系統(tǒng)初始化時(shí),執(zhí)行此回調(diào)函數(shù)。 ** 注意:回調(diào)函數(shù)的參數(shù)和函數(shù)名固定不能修改 *******************************************************************--]] function on_init() dofile('air724at.lua') --加載 http.lua 文件 air_set_callback(on_air_send_cb,on_air_resp_callback,on_air_log_cb) --設(shè)置4G庫(kù)函數(shù)的命令發(fā)送函數(shù),命令回調(diào)函數(shù)、調(diào)試信息打印函數(shù) ...... end
air_set_callback()函數(shù)原型如程序清單 3所示;
程序清單 3 函數(shù)原型
--[[****************************************************************** ** Function name: air_set_callback ** Descriptions : 設(shè)置回調(diào)函數(shù) ** @send_cb : 向4G發(fā)送數(shù)據(jù)的回調(diào)函數(shù) ** @resp_cb : 所有4G返回的數(shù)據(jù)的回調(diào)函數(shù) ** @log_cb : 調(diào)試信息回調(diào)函數(shù) ******************************************************************--]] function air_set_callback(send_cb,resp_cb,log_cb) send_callback = send_cb resp_callback = resp_cb log_callback = log_cb end
實(shí)體屏需要通過(guò)串口3將數(shù)據(jù)傳遞給4G模塊。on_air_send_cb()數(shù)據(jù)發(fā)送函數(shù)定義,如程序清單 4所示;
程序清單 4 重定義發(fā)送函數(shù)
--[[***************************************************************** ** 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)試,通過(guò)串口1發(fā)送數(shù)據(jù) my_print(msg) else uart_send_string3(msg) -- air_debug_mode~=0 ,使用實(shí)體屏調(diào)試,通過(guò)串口3發(fā)送數(shù)據(jù) end end
on_air_resp_callback()串口收發(fā)函數(shù)定義如程序清單 5所示;
程序清單 5 重定義接收函數(shù)
--[[**************************************************************** ** Function name: on_air_resp_callback ** Descriptions : 4G模塊-數(shù)據(jù)回調(diào)接口 ** @key : 屏幕->4G模塊的發(fā)送請(qǐng)求 ** @value : 4G模塊->返回的數(shù)據(jù) ****************************************************************--]] function on_air_resp_callback(key, value) if value == nil then return --value為空時(shí)退出 end ...... if key ~= nil then return -- key為空時(shí)退出 end ...... end
將收發(fā)函數(shù)通過(guò)air_set_callback()設(shè)置系統(tǒng)數(shù)據(jù)收發(fā)函數(shù)后,當(dāng)需要發(fā)送時(shí)調(diào)用on_air_send_cb()可以將指令傳遞給4G模塊,當(dāng)4G模塊接收到數(shù)據(jù)后,系統(tǒng)會(huì)調(diào)用on_air_resp_callback()函數(shù)并將4G模塊接收到的數(shù)據(jù)傳遞進(jìn)函數(shù)。
6.3 4G模塊初始化
當(dāng)串口屏上電初始化時(shí),需要同步將4G模塊開(kāi)機(jī)初始化,所以這里需要將4G模塊的初始化函數(shù)air_hw_int()放置在on_init()函數(shù)里面,以便于串口屏上電時(shí)調(diào)用。如程序清單 6所示;
程序清單 6 4G模塊初始化
--[[*************************************************************************** ** Function name: on_init ** Descriptions: 系統(tǒng)初始化時(shí),執(zhí)行此回調(diào)函數(shù)。 注意:回調(diào)函數(shù)的參數(shù)和函數(shù)名固定不能修改 ***************************************************************************--]] function on_init() dofile('air724at.lua') --加載 http.lua 文件 uart_set_baudrate3(115200) --設(shè)置與4G模塊通訊的串口3的波特率為115200 air_set_callback(on_air_send_cb,on_air_resp_callback,on_air_log_cb) --設(shè)置4G庫(kù)函數(shù)的命令發(fā)送函數(shù),命令回調(diào)函數(shù)、調(diào)試信息打印函數(shù) air_hw_int() --4G模塊初始化設(shè)置 end
6.4 初始化相關(guān)API函數(shù)
1) dofile (filename)
加載文件:本例程中加載4G AT 指令的庫(kù)
- 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庫(kù)函數(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ù)
5) air_cmd_add(sendstr,ackstr,timeout,retry,callback)
屏幕向4G模塊發(fā)送AT指令
- sendstr:屏幕向4G模塊發(fā)送AT指令
- ackstr:4G模塊應(yīng)答屏幕的請(qǐng)求
- timeout:應(yīng)答超時(shí)
- retry:超時(shí)重發(fā)次數(shù),可選
- callback:應(yīng)答回調(diào)函數(shù),可選
注:如果沒(méi)有設(shè)置超時(shí)重發(fā)次數(shù),則超時(shí)時(shí)直接發(fā)送隊(duì)列中的下一條指令。
6) on_air_resp_callback(key, value)
4G向屏幕返回?cái)?shù)據(jù)回調(diào)函數(shù):屏幕發(fā)送AT指令,4G應(yīng)答的數(shù)據(jù)均會(huì)回調(diào)該函數(shù),本函數(shù)如air_set_callback(on_air_send_cb,on_air_resp_callback,on_air_log_cb)函數(shù)設(shè)置。
- key:屏幕->4G模塊,發(fā)送請(qǐng)求的AT指令
- value:4G模塊->屏幕,返回的數(shù)據(jù)
7) my_print(debug_msg)
當(dāng)en_debug_msg等0時(shí)不顯示調(diào)試信息;等1時(shí)虛擬屏顯示調(diào)試信息; 等2時(shí)實(shí)體屏串口1輸出。
- debug_msg:需要串口輸出的信息
注:虛擬屏調(diào)試時(shí), en_debug_msg 必須不等于2。實(shí)體屏調(diào)試時(shí), en_debug_msg 必須不等于1。