大彩物联型串口屏出厂例程与手机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所示。


在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43815099/article/details/85103454
今日推荐