演示視頻
本文檔適合大彩物聯型所有帶WIFI的串口屏產品。
1.VisualTFT軟件版本:V3.0.0.1176及以上的版本。
版本查看:
a) 打開VisualTFT軟件啟動頁面如圖21軟件版本,右上角會顯示的軟件版本號;
圖2-1軟件版本
b) 打開VisualTFT,在軟件右下角可以查看軟件版本圖22軟件版本,
最新版本可登錄http://www.bdklxf.com/進行下載。
圖2-2軟件版本
2. 串口屏硬件版本:V3.0.911.0 及以上的版本。
版本查看:
a) 查看屏幕背面版本號貼紙;
b) VisualTFT與屏幕聯機成功后,右下角顯示的版本號。
我司物聯型串口屏引入了物聯網的概念,可以通過WIFI 遠程更新串口屏工程和固件,本文主要介紹帶WIFI功能的物聯型串口屏用于HTTP協議遠程升級工程、固件的教程。
物聯型串口屏WIFI模塊使用的是臺灣瑞昱Realtek RTL8188EUS芯片,該芯片的特點:
1. 超低功耗,高線性輸出功率,150M USB 接口無線網卡模塊;
2. 符合IEEE802.11n標準,兼容IEEE802.11g、IEEE802.11b標準,提供USB2.0接口;
3. 支持最新的64/128位WEP數據加密;支持WPA-PSK/WPA2-PSK,WPA/WPA2 安全機制;
WIFI模塊與服務器之間通訊采用TCP/IP協議,物聯型串口屏還支持使用基于TCP/IP通信協議傳遞數據的FTP協議、HTTP協議。
使用HTTP 遠程升級需要注意以下5點:
1. 固件版本需要是3.0.911.0以上(包括3.0.911.0版本);
2. 工程屬性配置時,必須給C區分配空間,而且需要比升級文件大,比如升級文件7M,C區分配空間至少8M以上,如圖3-1所示;
3. HTTP 下載路徑必須是"C:/DCIOT.PKG",否則下載成功后無法升級工程;
4. 升級文件必須小于35M否則下載的時候會導致屏幕重啟;
5. 遠程升級畫面盡量簡潔,不可以播放視頻,音頻等占內存的應用。
圖3-1 分配空間
本章節主要講述通過LUA實現HTTP遠程升級串口屏的工程或者固件。本文將分為以下是4個階段講述教程DEMO是如何實現的:
1. 工程準備;
2. 工程配置與功能;
3. LUA編寫及調試;
在實現教程DEMO前需要作以下三個準備:
1. 硬件平臺;
2. UI素材;
3. LUA編輯器。
4.1.1 硬件平臺
該例程使用大彩物聯型7寸DC80480W070為驗證開發平臺。如圖4-1所示。
圖4-1 物聯型7寸
4.1.2 素材準備
準備好相應的美工UI。如圖4-2所示。
圖4-2 素材準備
4.1.3 LUA編輯器
上位機VisualTFT內部已集成了LUA開發編譯環境,點擊菜單欄工具,選擇LUA編輯器,如圖4-3所示。
圖4-3 打開LUA編輯器
LUA編輯器的開發環境,如圖4-4所示。
圖4-4 LUA編輯器界面
大彩科技針對LUA腳本提供了豐富的API接口函數,具體函數可以查閱文檔《LUA腳本API V1.5》,如圖4-5所示。
圖4-5 API函數文檔
本教程文檔中所涉及到的部分的相關接口函數
1. 函數on_control_notify(screen,control,value)
注釋:此函數可以在用戶觸摸修改控件后被回調。函數有三個參數:
注釋:此函數可以在定時器超時后被回調。函數有一個參數:
3. 函數start_timer(timer_id, timeout, countdown, repeat)
注釋:此函數可以啟動定時器。函數有四個參數:
4. 函數stop_timer(timer_id),timer_id表示定時器ID。
5. 函數set_value(screen,control,value)
注釋:此函數可以設置控件數值。函數有三個參數:
6. 函數scan_ap()
注釋:掃描無線熱點,返回熱點數目ap_count = scan_ap()
7. 函數http_download (taskid,uri,savepath)
注釋:下載文件
8. 函數on_http_download (taskid, status)
注釋:下載響應
注:更多API函數請參考文檔《物聯型LUA腳本API_V1.0》和網站:www.runoob.com/lua
在我司提供參考資料中有關于串口屏HTTP協議遠程升級工程的示例工程,為了方便理解文檔所提到的參數設置,在閱讀文檔的同時可以查看工程配置協助理解文檔內容。實現WIFI遠程升級串口屏需要完成以下四個步驟:
1. 搭建云端服務器;(如果已有云端服務器可以跳過該步驟)
2. 配置串口屏網絡參數;
3. HTTP下載文件到C盤;
4. 控制屏幕復位,解壓升級文件。
4.3.1 搭建云端服務器
服務器,也稱伺服器,是提供計算服務的設備。服務器的構成包括處理器、硬盤、內存、系統總線等,和通用的計算機架構類似,但是由于需要提供高可靠的服務,因此在處理能力、穩定性、可靠性、安全性、可擴展性、可管理性等方面要求較高。
搭建服務器這一步比較復雜,如果沒有服務器建議尋找專業的開發服務器團隊進行開發,以節省開發項目的時間。另外,一般網頁上的網站也支持HTTP協議,開發者可以考慮將升級文件上傳到自己公司官網上,生成HTTP下載鏈接。
4.3.2 配置串口屏網絡參數
此步驟為配置串口屏默認的網絡參數,工程中配置串口屏網絡參數;
1. 雙擊圖4-6中【工程窗口】中的工程名字,右邊的【屬性窗口】會顯示該工程的屬性;
圖4-6 工程屬性
2. 找到屬性窗口中的【網絡設置】和【高級設置】,如圖4-7和圖4-8所示;
注:此步驟請參考《大彩串口屏WIFI使用教程_V1.1》,本文不再重復介紹。
圖4-7 工程屬性
圖4-8 高級設置
4.3.3 掃描/選取WIFI
建議將我司的示例工程的中WIFI設置、掃描WIFI和網絡配置這三個畫面直接移植作為固定模板使用,只修改圖片風格不改變控件編號順序,如果畫面ID改變,需要將LUA腳本對應的畫面ID更改。示例工程WIFI設置畫面如圖4-9所示;
圖4-9 WIFI設置畫面
控件編號4,5設置為彈出鍵盤輸入的文本框控件,可以手動輸入WIFI的賬號密碼,點擊“連接設備”后調用LUA的API函數get_text()獲取WIFI名稱和WIFI密碼對應的文本框中內容再調用LUA腳本中的set_wifi_cfg()函數修改默認連接的WIFI設備,工程中LUA腳本程序:
程序清單 1
--按下按鈕會調用該函數,并把畫面ID和控件ID,以及控件值傳參進該函數 function on_control_notify(screen,control,value) …… if screen==1 and control==8 and value == 1 --按鈕連接設備按下 then ssid = get_text(1,4) --獲取文本框內容 psw = get_text(1,5) set_wifi_cfg(1,0,ssid,psw) --連接WIFI,1網卡模式,0自動識別加密 save_network_cfg(); --保存設置 set_text(1,1,'連接中...') end …… end
點擊“選取網絡”,切換到掃描WIFI的畫面中,如圖4-10所示;點擊“掃描WIFI”后調用LUA腳本的API函數scan_ap()和get_ap_info()掃描可用的WIFI設備,并將掃描出來的WIFI名稱顯示在列表中,腳本程序如下:
圖4-10 掃描WIFI
程序清單 2
--掃描wifi與顯示 function scan_ap_fill_list( ) ap_cnt = scan_ap() --掃描可用熱點 for i=1,ap_cnt do ssid,security,quality = get_ap_info(i-1) --獲取信息 set_text(2,i,ssid) --在列表中顯示id end for i=ap_cnt,10 do set_text(2,i,"") --清空后面的 end end --控制控件 function on_control_notify(screen,control,value) --點擊掃描熱點 if screen==1 and control==7 or screen==2 and control==21 then scan_ap_fill_list() end …… end
掃描出所有的WIFI設備名稱后,選中其中一個設備名字后,返回到WIFI配置畫面中時,會自動填寫選中的WIFI設備的名稱,輸入WIFI密碼后點擊 “連接設備”接入該WIFI設備中。LUA程序如下:
程序清單 3
--選取熱點 function on_control_notify(screen,control,value) …… if screen==2 and control>=11 and control<=20 and value == 1 then ssid = get_text(2,(control-10)) --文本控件從1~10 set_text(1,4,ssid) --顯示選中的SSID名稱 end …… end
4.3.4 遠程更新
調用LUA 腳本下載PKG包,API函數參考上文4.2說明,工程畫面配置如所示;
圖4-11 畫面配置
程序邏輯:點擊遠程更新按鈕,調用http_download()函數將文件下載到c區,下載完成后觸發回調函數on_http_download(),在回調函數中判斷文件下載是否成功,成功后調用os.exit()復位串口屏
程序清單 4
function on_control_notify(screen,control,value) …… if screen==4 and control==1 --遠程升級 then http_download(1,'http://video.gz-dc.com/DCIOT.PKG',c_dir) end ……. end function on_http_download (taskid, status) if taskid == 1 then if status == 0 then --下載失敗 set_value(4,3,2) elseif status == 1 then --下載成功,存儲失敗 set_value(4,3,3) elseif status == 2 then --下載成功,存儲成功 set_value(4,3,4) os.exit() --重啟 end end end