大彩物聯型串列埠屏出廠例程與手機APP機智雲進行遠端資料互動的演示
大彩物聯型串列埠屏可以通過WIFI模組連線到無線網路中,然後在工程配置時設定串列埠屏接入指定的伺服器,即可以實現遠端資料互動。大彩物聯型串列埠屏出廠工程添加了與手機APP機智雲進行遠端資料互動的演示例程。
大彩物聯型串列埠屏出廠例程與手機APP機智雲進行遠端資料互動的演示實現步驟如下:
1.串列埠屏工程配置;
2.新增指令碼程式配置WIFI和處理收發資料。
4.1工程配置
在例程中串列埠屏是作為客戶端接入機智雲的伺服器,工程配置如圖所示;
物聯型串列埠屏出廠例程的APP演示畫面配置和機智雲APP中的操控畫面相同,如圖所示;
4.2新增LUA程式
物聯型串列埠屏需要通過新增LUA程式配置WIFI、機智雲APP的引數,和處理與機智雲APP互動的上下傳資料, 在出廠例程工程中開啟【工具】中LUA程式設計,如圖所示;與APP互動所用到的LUA程式如下:
1.配置機智雲引數:呼叫函式API函式中gagent_get_info(),程式如下:
--獲取機智雲的配置引數
--一般只需要修改產品金鑰
function gagent_get_info()
product_key = '1cc8b199a4c14a5f957e033'
protocol_ver = '00000001'
p0_ver = '00000002'
hard_ver = '00000003'
soft_ver = '00000004'
return product_key,protocol_ver,p0_ver,hard_ver,soft_ver
end
2.獲取機智雲二維碼繫結連結,並在串列埠屏中用二維碼控制元件顯示出來,如圖 所示;
LUA指令碼程式如下:
--設定二維碼為機智雲繫結URL
if screen==20
then
bind_url = gagent_get_bind_url() --獲取二維碼
set_text(20,17,bind_url) --設定二維碼
end
3.切換到WIFI設定畫面,點選選取網路進入到掃描WIFI畫面,如所示;點選掃描後呼叫LUA指令碼函式scan_ap_fill_list()掃描WIFI,程式如下:
--控制元件通知函式 function on_control_notify(screen, control, value) ……. --按下WIFI設定畫面中的“選取網路”按鈕或者是 --按下掃描WIFI畫面的“掃描熱點”按鈕 if screen==19 and control==7 or screen==21 and control==21 then scan_ap_fill_list() end …… end --掃描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(21,i,ssid) --顯示id end for i=ap_cnt,10 do set_text(21,i,"") --清空後面的 end End
4.輸入選中WIFI的密碼,點選連線裝置後呼叫LUA函式set_wifi_cfg()連線WIFI,如連線成功會在“無線連線”對應的文字框中顯示“連線成功”,如圖所示;對應的程式如下:
--控制元件通知函式
function on_control_notify(screen, control, value)
…….
if screen==19 and control==8 --點選連線裝置按鈕
then
ssid = get_text(19,4)
psw = get_text(19,5)
set_wifi_cfg(1,0,ssid,psw) --1網絡卡模式,0自動識別加密
save_network_cfg();
set_text(19,1,'連線中...')
end
--選取熱點
if screen==21 and control>=11 and control<=20
then
ssid = get_text(screen,control-10) --文字控制元件從1~10
set_text(19,4,ssid)
end
if screen==20 --進入app演示頁面,進入函式
then
on_conctrol_notify_cloud(screen,control,value)
end
……
end
5.WIFI連線成功後切換到APP演示畫面用機智雲APP掃描二維碼繫結串列埠屏,在APP控制畫面按下第一個按鈕後,APP通過伺服器下發按鈕按下的資料到串列埠屏,串列埠屏接收到資料後呼叫函式update_cloud_ui()設定APP演示畫面中相對應的按鈕按下,處理上下傳資料的程式如下:
……
--雲端伺服器控制“APP演示”的控制元件
function update_cloud_ui()
local status = dev_status[0]*256+dev_status[1] --獲取數值
switch = (status&0x0001)
switch_plasma = (status&0x0002)
led_air_quality = (status&0x0004)
child_security_lock = (status&0x0008)
wind_velocity = (status&0x0030)>>4
air_sensitivity = (status&0x01C0)>>6
--控制控制元件
set_value(20,1,switch) --設定按鈕開關
set_value(20,2,switch_plasma) --設定等離子開關
set_value(20,3,led_air_quality) --設定按鈕空氣質量
set_value(20,4,child_security_lock) --設定按鈕兒童鎖開關
set_value(20,10,wind_velocity)
…….
temprature = dev_status[4]*255+dev_status[5] --設定按鈕
temprature = temprature/10.0
set_value(20,6,temprature)
……
countdown_off_min = dev_status[6]*256+dev_status[7]
set_value(20,16,countdown_off_min)
end
……
--串列埠屏控制雲端“app演示”的控制元件
function on_conctrol_notify_cloud(screen,control,value)
local notify = 0
local status_mask = 0
local status_value = 0
--設定開關位
--當按鈕的值變為1時,對應位置1;0時,置0;保留其他位的值
if control>=1 and control<=4
then
status_mask = 1<<(control-1)
if value>0
then
status_value = status_mask
end
dev_status[1] = dev_status[1]&(~status_mask) --對應位置0
dev_status[1] = dev_status[1]|status_value --對應位置1
notify = 1
end
--wind_velocity(風速)
if control==9
then
status_mask = 0x30 --5、6位置1
status_value = value<<4
dev_status[1] = dev_status[1]&(~status_mask) --對應位置0
dev_status[1] = dev_status[1]|status_value --對應位置1
notify = 1
end
…….
if notify>0
then
gagent_send_status(4) --傳送
end
end
--MCU控制雲端,上傳資料
function gagent_wifi_ctrl_mcu(packet)
local attr_flags = packet[1]*256+packet[2]
local value = packet[3]*256+packet[4]
local status = dev_status[0]*256+dev_status[1]
status = set_bits_when(status,0x0001,value,attr_flags&0x01) -- switch
status = set_bits_when(status,0x0002,value,attr_flags&0x02) --switch_plasma
status = set_bits_when(status,0x0004,value,attr_flags&0x04) --led_ari_qulity
status = set_bits_when(status,0x0008,value,attr_flags&0x08) --child_security_lock
status = set_bits_when(status,0x0030,value,attr_flags&0x10) --wind_velocity
status = set_bits_when(status,0x01C0,value,attr_flags&0x20) --air_sensitivity
dev_status[0] = (status>>8)&0xff
dev_status[1] = (status&0xff) --開關和風速
if (attr_flags&0x40)>0
then
dev_status[2] = packet[5] --滑塊
end
……
--立即主動上報狀態
gagent_send_status(4)
end
以上程式為擷取源程式中的部分函式,詳細程式需要參考原始檔。
4.3演示操作過程
將工程下載到實體屏,執行串列埠屏連線WIFI後,點選“進入APP演示”,進入介面,如圖所示;
手機下載“機智雲”APP,然後開啟APP註冊一個機智雲賬號;點選APP左上角“我的裝置”掃描APP演示畫面的二維碼繫結串列埠屏,如圖所示;
繫結成功後,進入APP控制介面,如圖所示;
按下APP畫面中“開關”,串列埠屏接收到伺服器傳送的資料後將APP演示畫面中的 “開關”也按下,如圖1和圖2所示。