1. 程式人生 > >大彩物聯型串列埠屏出廠例程與手機APP機智雲進行遠端資料互動的演示

大彩物聯型串列埠屏出廠例程與手機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所示。


在這裡插入圖片描述