演示視頻
本文檔適合大彩PM 4G系列串口屏產品使用。
1. VisualTFT軟件版本:V3.0.0.1112及以上的版本。
版本查看:
1) 打開VisualTFT軟件啟動頁面如圖2-1軟件版本,右上角會顯示的軟件版本號;
圖2-1軟件版本
2) 打開VisualTFT,在軟件右下角可以查看軟件版本圖2-2軟件版本,最新版本可登錄http://www.bdklxf.com/進行下載。
圖2-2軟件版本
2. 串口屏硬件版本:M系列固件>= V6.3.249.00。
版本查看:
1) 查看屏幕背面版本號貼紙;
2) VisualTFT與屏幕聯機成功后,右下角顯示的版本號。
本例程主要講述通過簡單的LUA程序,就可以實現單片機只需發指令給串口1就可以控制4G模塊,同時可以使用大彩指令。
本例程適用于數據量小的應用。當涉及到下載圖片、文件到串口屏FLASH的功能時,還是要在LUA里面進行所有的數據處理,請參考HTTP下載的例程。
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
本文主要介紹串口自定義指令控制4G模塊時需要執行的指令以及所使用API函數的詳細說明,執行流程如下。
圖 5-1 流程圖
通過GPIO控制4G模塊開機。如程序清單1所示:
程序清單 1 4G模塊開機
function on_init() --初始化GPIO gpio_set_out(IOPWRKEY) gpio_set_out(IORESET) gpio_set_value(IOPWRKEY,0) --開啟定時器,等一段時間在控制4G模塊開機 stop_timer(setup_4G_timerid1) start_timer(setup_4G_timerid1,setup_4G_timeout1,0,1) end --4G模塊上電 function setup_4G() --控制4G模塊的開機引腳,開機 gpio_set_value(IOPWRKEY,1) stop_timer(setup_4G_timerid) start_timer(setup_4G_timerid,setup_4G_timeout,0,1) end --4G模塊定時處理接口 function on_timer(timer_id) if timer_id==setup_4G_timerid then --setup_4G:end --控制4G模塊的開機引腳,開機完成,回復初始狀態 gpio_set_value(IOPWRKEY,0) end if timer_id==setup_4G_timerid1 then setup_4G() end end
接收串口1的自定義指令,自定義指令中包括AT指令,在LUA中處理,獲取出AT指令,再通過串口3發送給4G模塊,如程序清單2所示。
程序清單 2 自定義指令解析
--單片機發AT指令控制4G模塊,把串口1的數據處理后,轉發到串口3 --串口1自定義指令示例一 發送AT:EE B5 04 41 54 0D 0A FF FC FF FF --串口1自定義指令示例二 發送AT+CSQ:EE B5 08 41 54 2B 43 53 51 0D 0A FF FC FF FF --串口1自定義指令示例三 發送AT+COPS?:EE B5 0A 41 54 2B 43 4F 50 53 3F 0D 0A FF FC FF FF --串口1自定義指令示例四 發送AT+ICCID:EE B5 0A 41 54 2B 49 43 43 49 44 0D 0A FF FC FF FF function on_uart_recv_data(packet) local packet_at={} --EE B5 [自定義指令] FF FC FF FF --[自定義指令]格式:AT指令長度 + AT指令 --例子:EE B5 02 41 54 0D 0A FF FC FF FF --解析:固定幀頭 AT指令長度 AT指令 固定幀尾 --AT指令會放到 packet_at 里 --packet_at[0]開始就是AT指令 --有效指令字節數 #packet-6 for i=0,packet[2]-1 do packet_at[i] = packet[3+i] end uart_send_data3(packet_at) for i=0,#packet_at do set_text(0,i+4,packet_at[i]) end end
接收4G模塊返回的數據,再通過串口1發送給單片機,如程序清單3所示;
程序清單 3 接收4G模塊返回的數據
function on_uart_recv_data3(packet) --4G返回的數據,串口3轉發到串口1 uart_send_data(packet) End