大彩物联型串口屏可以通过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所示。