嵌入式智能家庭网关的软件设计方案
智能家庭网关的实现,PC机完全可以满足要求。
虽然处理能力较强,但以PC 机为载体存在着一些的缺点,如成本昂贵,体积较大,不易移动等,所以用其当作硬件载体性价比太低。随着现代电子技术的发展,嵌入式技术得到了空前的发展。本设计正是基于嵌入式系统进行设计的。
1 操作系统与开发工具
1.1 Windows CE
本系统的操作系统采用的是微软公司的嵌入式Windows CE 5.0.
Windows CE 是一个典型的嵌入式操作系统,它是微软专门为信息设备、移动应用、消费类电子产品和嵌入式应用等非PC 领域设计的操作系统产品。开发人员可以利用丰富灵活的控件库在Windows CE环境下为嵌入式应用建立各种专门的图形用户界面。
Windows CE 甚至还能支持诸如手写体和声音识别、动态影像、3D图形等特殊应用。
Windows CE被设计成为一种高度模块化的操作系统,以适应不同的类型智能设备对于操作系统映像大小的不同要求,系统设计者可以根据设备的性质只选择那些必要的模块或模块中的组件包含进操作系统映像,其中内核(Kernel)、图形窗口事件子系统(GWES)、文件系统(Filesys)和通信(Communication)模块是4个主要的模块。
总之,Windows CE设计简单灵活,是为适应嵌入式而推出的新型操作系统,尤其友好的图形界面正好迎合本设计的菜单界面开发,成为本设计所采用的嵌入式操作系统。
1.2 Microsoft Visual Studio
本系统开发工具是Microsoft Visual Studio,采用的语言是C# .Microsoft Visual Studio 为Windows CE提供了可视化的开发环境。
Microsoft Visual Studio是微软公司推出的开发环境。是目前流行的Windows 平台应用程序开发环境NET Compact Framework 是微软为移动智能设备开发的运行环境,同时提供调用本机API的能力。
.NET Compact Framework 为设备提供了强大的。NET Framework 编程平台。它是。NET Framework完整版的一个子集。为了适应它所在设备本身的限制,.NET Compact Framework 大约实现了完整版框架30%的类和方法。
2 需求分析
2.1 需求分析
家庭网关的实际功能规划应该根据用户的实际需求展开,对于一般住户,家中普遍具有水电表及各种电器等,因此这里主要针对这几项,把系统在功能的实现分为以下几大类:
(1) 设置:主要用于家庭网关本身的管理,以及增删电器设备、修改远程服务器的IP和端口等;(2) 电器:包含几种具有代表性的家庭常用电器,如热水器、空调、冰箱等;(3) 抄表:管理各种抄表系统,如水表、电表、煤气量表等。
2.2 界面需求分析
界面的设计要求满足以下几点:
(1) 界面美观、简洁、用户界面友好,易于被用户接受;(2) 对菜单采用分级方式管理,易于用户使用;(3) 使用尽可能大的字体,不会出现误单击操作,良好的人机交流。
2.3 安全需求分析
系统在安全管理方面分以下几点:
(1) 为了方便用户,初次使用不需要密码登录;(2) 用户可以根据需要是否设置密码;(3) 根据需要可以对已经设置的密码进行修改和删除。
3 家庭网关的软件设计
嵌入式智能家庭网关的具体功能包括:
本地控制:用户通过网关上的键盘和显示屏,对家用设备进行现场控制。
远程控制:远程用户可以通过Internet对家庭设备进行控制和查询。
其系统结构图如图1 所示。
图1 家庭网关应用结构图
家庭网关对内连接了家庭网络、信息家电、智能仪表、消防与安防设备等。针对不同模块的特点,可以设计与家庭网关的不同接口。为了与现有设备的兼容及满足各个组成部分的功能需求,与家庭网络部分的连接采用RJ-45接口标准;信息家电的种类繁多,无法用统一的接口来互联,可以选择信息开关或继电器等配合红外遥控器使用;水表、电表、煤气表等智能仪表设备一般是每月一次查看且需要传输的数据量不大,所以可以RS-485 或CAN 总线这些较为简单的总线接口标准;对于消防和安防设备,长期处于布防、监控状态,且诸如视频图像对带宽和速率要求比较严格,所以采用同轴电缆或光纤接入。
{$page$}
3.1 总体架构
主程序的流程图如图2 所示。上电开机后程序进入初始化(如判断是否有预设密码),在主窗体中有代表几个不同类型的图标,点击不同的图标按钮可以进入相应的子菜单中,对子菜单进行操作。
图2 主程序的流程图
3.2 主窗体
主窗体要求简单、直观。主窗口只显示分成的几个类型及所需的操作按钮。为了更直观的表示各个类型,分别使用相应的图标来表示,以示区别,并在图标上方的中间显示该类型的名称,并且把选中状态的类型显示为浮动状态。主窗口界面如图3所示。
图3 主窗体界面
3.3 子窗体
3.3.1 "设置"子窗体
"设置"子窗体的界面如图4 所示。
图4 "设置"子窗体界面
(1) 修改密码。
修改密码时,首先比较用户输入的原密码经过加密后与从Config.xml文件读出的相应信息进行比较,若不同则提示用户重新输入,若相同则再次比较用户两次输入的新密码,只有两次输入一致才把新密码替换原始密码,然后将新密码加密后重新写入Config.xml文件中,下次登录时使用。修改密码流程图如图5所示。
图5 修改密码流程图
(2) 添加/移除设备。
加载Config.xml数据并相应填入Combox控件中,选择Combox控件中的的设备名称,然后点击"添加"或"移除"按钮对设备进行增删,并修改Config.xml中对应的值。
(3) 设置服务器参数可以点击"查看IP和端口"从Config.xml中获取IP和端口;点击"修改IP和端口"修改Comfig.xml中的对应信息,并与服务器进行重新连接。
{$page$}
3.3.2 "电器"子窗体
在"电器"子窗体中点击对应的电器设备弹出相应的设备控制面板(如热水器)对该设备进行控制。热水器面板中的初始化函数对设备的温度和状态进行采集并把采集的数据显示到相应的控件上。热水器控制面板界面如图6所示。
图6 热水器控制面板界面
点击"确定"按钮,根据左边NumericUpDown控件的数值和CheckBox控件来控制热水器的温度和开关、点击"查看水温" 按钮可以从右边的TextBox控件和CheckBox控件中看到当前热水器的温度和开关状态、点击"返回" 按钮退出。热水器控制程序流程图如图7所示。
图7 热水器控制程序流程图
3.3.3 "抄表"子窗体
可实现抄录电表、水表和煤气表的读数。因为抄表系统只需实现读操作,而没有写操作,所以TextBox是只读属性。界面如图8所示。
图8 "抄表"子窗体
3.4 Internet远程控制
把家庭网关接入Internet并在"设置"子窗体的"Server"选项卡(见图4)中输入设置服务器的IP 地址和端口号,然后启动网络通信模块,创建Winsock套接字,绑定IP地址和端口号,服务器了保存了该系统的套接字。以后远程用户通过Internet从服务器获得保存在服务器端该系统Winsock 套接字并与处于侦听状态的套接字连接,从而对该系统进行控制。 远程控制主机通过浏览器在远端可以实时地控制家用设备,从而实现远程控制的目标。
家庭网关的网络模块主要有两大功能:一方面负责对远程用户控制命令的接收和分析,再根据结果控制家居设备;另一方面通过Internet将用户需要获取的家居设备状态送到远程浏览器。
下面以对热水器的控制为例进行说明。热水器的远程控制界面如图9所示。
图9 热水器的远程控制界面
(1) 获取热水器的状态。
获取热水器的状态是由"获取"按钮来处理的,它获取热水器的在当前的温度和开关状态,并显示在文本框和复选框。
(2) 设置热水器的状态。
设置热水器的状态是由"设置"按钮来处理的,它设置热水器的开关和热水器的要加热到的温度。
发送数据到设备的核心代码如下:
3.5 文件的读写操作
在文件操作的过程中,因为这里并不是为了纯文本的操作,而只是为了要提取或存储配置的信息,所以需要精确地定位到对应的信息在文件中的位置,为了实现这个要求,本设计对XML(可扩展标记语文)文件进行了读写操作。XML具有易于编辑、便于管理、适于存档、容易查询等诸多优点。
其中有一个只对文件进行读操作,采用的方法是对XML 文件进行反序列化操作,把XML 文件加载到内存中去。
4 结语
本文介绍了嵌入式智能家庭网关的软件设计过程,主体界面采用的是Microsoft Visual Studio 编写,应用于硬件上采用触摸屏作为输入输出设备的系统。Internet远程控制功能给居家生活带来更多安全、舒适和便利。为现代智能家庭常用的一些设备的统一管理提供一个可行的管理框架和实现方案。