智能家居功能可重构系统研究

2019-01-09 02:01谭英奇邢志强
仪器仪表用户 2019年2期
关键词:图形化流程图图标

谭英奇,邢志强

(北方工业大学 电子信息工程学院,北京 100144)

0 引言

随着物联网和科学技术的快速发展,人们对于生活质量的要求也与日俱增,智能家居是物联网高速发展的直观体现。人们已经不再满足于家居用品的分立化、单一化,而是更加关注居住环境中设备的智能化、高效化、节能化,舒适性与安全性[1]。物联网带动了智能家庭网络化、信息化、数字化发展。越来越多的智能化家居用品走进人们的生活。但是,现有的很多智能产品,往往是在出厂前就已经设计好了工作模式,用户不能根据自己的个人需求进行改变,通用性较低,无法满足广大用户的需求。

因此,本文提出了智能家居功能可重构系统设计方案,利用图形化编程的可重构特点,结合人体舒适度理论[2],让用户自己打造个性化的智能家居工作方式,弥补了现有的智能家居任务单一的缺点。

1 系统方案设计

本系统使用Microsoft Visual Studio为开发工具,涵盖了MySQL数据库和编译环境。系统操作简单,人机交互界面简洁易懂。

整套系统主要分为客户端智能家居图形化编程系统和服务器处理系统两个部分。智能家居图形化编程系统的主要功能是从模块库拖拽图形模块并按逻辑连接,在属性框中输入属性参数,从而生成类C语言文件,在服务器允许连接的状态下与服务器进行WiFi通信,并上传类C语言文件。其中每个图形模块都代表了一个功能模块,不同的功能模块对应不同的功能函数。服务器负责接收客户端上传的文件,并对其进行保存和编译,编译后保存到本地,等待硬件控制盒下载。系统整体框架如图1所示。

图1 系统整体框架Fig.1 Overall framework of the system

图2 智能家居图形化编程系统界面Fig.2 Intelligent home graphical programming system interface

图3 窗帘开关举例Fig.3 Curtain switch examples

2 智能家居图形化编程系统的设计与实现

智能家居图形化编程软件在含有Windows系统的平板电脑上运行,主要功能是通过拖拽图标,并按逻辑连接,实现一键生成代码,最后通过WiFi向服务器传递文件。

2.1 界面设计

智能家居图形化编程系统界面如图2所示,主要包括菜单栏、模块库、流程图绘制区、代码显示窗口和通信窗口。界面分为3个部分,最左侧是模块库,包含流程控制模块、执行模块、传感器模块、智能家居模块4大类,每一个图标都代表了一个相应的函数;中央为流程图绘制区,从模块库选择图标,拖拽到中间的流程图绘制区,并按逻辑彼此相连,双击图标,可以弹出属性框,通过输入或选择两种方式进行参数设置,最右侧为菜单栏,从上到下依次为退出、新建、打开、保存、另存、删除、对齐、生成代码、通信、模块和更新;退出、新建、打开和保存是针对流程图文件的操作;删除和对齐是针对流程图绘制区的图标进行的操作;点击生成代码,会在流程图绘制区中央弹出代码窗口,将流程图语言转化为类C语言并显示;点击通信会弹出通信窗口,如图3所示,显示与服务器连接状态和文件传输状态。

2.2 智能家居模块设计

针对智能家居,专门设计了智能家居模块。智能家居模块可用于调控智能家居产品,如窗帘开关、门窗开关、背景墙灯光开关等。本文为每个智能家居模块写一个专门的函数,将函数属性封装在每个智能家居模块中,用xml文件保存[3],如图3所示,以窗帘开关为例,窗帘开关属于模块库的“SmartHomeItem”(智能家居模块)组,名称是“窗帘开关”,当鼠标悬停在图标上时显示的说明为“void Set_Curtain_Switch(int ID, int val); 设置窗帘开关”,显示图标为“CurSwitch.png”,对应的函数代码为“Set_Curtain_Switch(%Att0%, %Att1%);”,这表示窗帘开关有两个参数,初始的属性为“1,无”,分别代表了窗帘开关的端口号为“1”和初始状态“无”,状态分为3种:暂停、开、关,在代码显示窗口分别由0、1、2表示。用户可以双击窗帘开关图标进行端口号和3种状态的选择。

图4 无线通信界面Fig.4 Wireless communication interface

图5 服务器界面Fig.5 Server interface

2.3 无线通信

在绘制流程图完毕之后,按照代码自动生成机制,生成类C代码之后,通过WIFI方式上传给服务器端。

如图4所示,在上传界面ServerIP和ServerPort两处分别填写服务器端的IP地址和端口号,以便确定服务器。在targetIP处填入文件要保存的文件夹名称,这里是以硬件控制盒的IP命名。在服务器允许连接的状态下点击连接按钮,智能家居软件与服务器建立连接,右侧小窗口显示“------连接成功------”。连接建立成功后,点击上传按钮,生成的类C文件会上传至服务器,并保存在命名为“192.168.2.100”文件夹中,方便之后编译及下载;若没有以“192.168.2.100”命名的文件夹,则新建一个。上传完成后,右侧窗口显示控制盒IP,文件的最后一次修改时间和文件大小,并提示文件发送成功。

图6 下载过程界面Fig.6 Download process interface

3 智能家居服务器设计与实现

3.1 界面设计

智能家居服务端界面如图5所示,包括一个状态显示窗口和一个下载进度显示窗口。状态显示窗口左上角显示本服务器的IP地址和端口号,方便智能家居图形化编程系统进行连接。点击开始监听按钮,服务器即在允许连接状态。开始监听按钮的下方是ListOnLine窗口,负责显示正处在连接状态的所有客户端名称。右侧是线程显示,显示已经连接上的客户端,客户端的下载状态,以及完成下载并切断连接的客户端。

3.2 文件编译

服务器接收到智能家居图形化编程软件上传上来的类C文件后,需要对其进行编译,转化为硬件控制盒可以识别的二进制文件。在接收到sub.c(类C文件)文件后,服务器将其保存到192.168.2.100文件夹中。然后,复制bin/Debug/Robot文件夹下的文件,到192.168.2.100文件夹中。最后执行编译命令,生成硬件控制盒可识别的Robot.hex文件,并等待硬件控制盒下载。

3.3 文件下载

当从智能家居系统上传到服务器的文件编译完成后,可以下载到硬件控制盒。在下载过程中运用分块下载法,按照文件大小,将文件分割成数量不等的数据包,依次下载到硬件控制盒中。下载过程如图6所示。

在下载的过程中以“ACK”为标识,代表该数据包下载成功;以“NAK”为标识,代表该数据包下载失败。同时,可以看到目前正在下载的数据包进程。

3.4 多任务工作

在系统工作期间,会有多个客户端同时连接服务器的情况。为此,选择的是基于TCP/IP的socket通信方式。在监听线程开启的条件下等待客户端连接。每当有客户端连接上,便单独开一个线程,为其提供上传或下载等工作。当上传或下载结束,即关闭此线程;当多个客户端连接服务器时,每个客户端都有自己的线程,彼此互不干扰,以此实现多任务工作。

4 结论

本文开发的智能家居功能可重构系统研究,将图形化编程、智能家居以及人体舒适度相结合。解决了现存的智能家居工作模式单一化,无法更改的问题,用户可以自由组合智能家居,为智能家居添加了个性化,并且系统界面简洁,操作简单,应用稳定。

猜你喜欢
图形化流程图图标
基于Arduino图形化编程的教学应用研究
Android手机上那些好看的第三方图标包
LKJ自动化测试系统图形化技术研究
图标
中国风图标设计
有意思的厕所图标
宁海县村级权力清单36条
网络图形化界面在高速公路机电设施养护管理系统中的应用
《天津医药》稿件处理流程图
《天津医药》稿件处理流程图