APP下载

基于Android平台的智能操控终端的设计与实现

2014-08-08

关键词:网络通信嵌入式终端

肖 远 东

(福建师范大学 软件学院,福州 350108)

1 智能操控终端技术基础

Android系统由操作系统、中间件层、用户UI和应用软件层构成。Android系统采用软件堆层(Software Stack,又名软件叠层)架构,它分为3个部分。底层以Linux操作系统内核为基础,只为系统提供一些基本功能;中间层包括函数库和虚拟机;最上层是各种应用软件,以Java作为编写程序的一部分[1]。

选用的ARM嵌入式设备主处理器为ARM1176JZF-S内核的嵌入式芯片S3C6410,内部集成了强大的多媒体处理单元。该嵌入式设备还集成了100 M标准网络接口、标准DB9五线串口、Mini USB 2.0接口等。它可以稳定运行定制的Linux操作系统,并且支持在Linux系统上搭建运行遵守ACID的关联式数据库管理系统的SQLite轻量型数据库;其丰富的接口和强大的数据处理能力,非常适用于作为智能化家居设备控制与管理系统的嵌入式服务器。

Wi-Fi(wireless fidelity)是一种可以将个人电脑、手持设备等终端以无线局域网络方式互相连接的技术。它能够在数百英尺范围内支持互联网接入的无线电信号。Wi-Fi搭建的无线局域网络支持Android终端的接入通信并且信号稳定、覆盖范围较广,现在市面上的无线路由均支持Wi-Fi架设且价格便宜,所以设计的智能终端将通过接入无线路由架设的Wi-Fi无线局域网,实现其与ARM嵌入式服务器的通信。

2 系统概要设计思路与关键技术

2.1 统架构介绍

系统的架构如图1所示。首先,利用无线路由搭建拥有Wi-Fi热点的局域网,ARM嵌入式设备通过网线接入该局域网,与此同时,利用485总线将ARM嵌入式设备与家居设备执行器进行相连通信。执行器在收到命令后,将根据需求控制所连接的家居设备。操控终端运行在Android 2.1以上版本的系统。终端通过Wi-Fi接入局域网,并与ARM嵌入式服务器进行通信,发送及接收相关设备的描述信息和控制命令,ARM嵌入式服务器将根据接收到的消息选择执行返回描述信息或对家居设备执行器进行控制,从而实现Android智能操控终端控制家居设备的目的。

图1 系统架构

智能操控终端主要由网络通信模块、SQLite数据库存取模块、UI模块3部分组成。主要采用Android 2.1环境下的观察者、工厂方法等设计模式编程实现。各部分的功能需求如下:

(1) 网络通信模块实现Android终端同ARM嵌入式服务器之间的通信,包括操控指令的发送、文件的传输、数据库数据的获取等。

(2) SQLite数据库存取模块负责从ARM嵌入式服务器获取的相关设备信息,包括设备描述、设备类型、设备状态等存储到Android终端的SQLite数据库中,并在用户进行Android终端操作时,对数据库中相关数据进行修改。

(3) UI模块负责从SQLite数据库取出数据,并以UI的形式显示到用户界面,同时响应用户对UI的各类操作及其相关后台数据库、网络通讯指令的发送等。

系统架构模块间的相互关系如图2所示,SQLite数据库存取模块调用网络通信模块发送查询数据,网络通信模块通过Wi-Fi局域网与ARM嵌入式服务器通信,获取ARM嵌入式服务器中的相关数据,并返回给SQLite数据库存取模块。数据库存取模块在获得数据后,将其保存在Android终端的SQLite数据库中。UI及交互响应模块则根据用户操作,调用SQLite数据库存取模块来获取Android终端数据库中的数据,生成用户界面。在响应设备控制操作时,UI及交互响应模块则直接调用网络通信模块,将固定格式的设备控制或状态查询指令发送给ARM嵌入式服务器。网络通信模块在获取到设备状态或控制操作的返回时,将相应数据交给UI及交互响应模块,以更新界面或提示用户。

图2 系统架构

2.2 模块简介

UI及交互响应模块采用MVC(Model-View-Controller,即模型-视图-控制器)软件架构模式。设计中,房间、设备等信息将被包装成Model,保存对应的ID、名称等重要信息;而关于设备控制等业务处理以及命令发送将作为Controller层;最终的用户界面,则封装为View层。

在ARM嵌入式服务器端,设备数据(包括设备ID、设备名称、设备类型等)存储在数据库中,Android终端通过Wi-Fi发送固定格式的命令,查询并获取数据库中数据。从响应时间的角度出发,系统也在Android智能控制终端中内建SQLite数据库同步存储ARM嵌入式服务器端数据。当用户在界面操作触发界面更新或界面跳转事件时,后台的事件响应程序将调用SQLite数据库存取模块,向Android终端的SQLite数据库请求相关的房间、设备等数据,SQLite数据库存取模块将数据库中的数据返回给事件响应程序。事件响应程序在获得数据后,将通知界面生成响应程序更新界面,并把获得的数据交予界面生成响应。界面生成响应程序将根据通知和获得的数据,更新用户界面。

智能控制终端使用TCP方式,利用Socket技术与ARM嵌入式服务器进行网络通信。由于与ARM嵌入式服务器端所定义的操作指令的通用性,所以,在设计时,有必要把网络通信部分从较为复杂的业务逻辑中分离出来,作为网络通信模块,只开放不涉及网络通信IP等参数的固定接口供上层响应使用,优化软件架构。

2.3 系统功能模块设计与实现

智能终端的用户交互界面主要由主界面、房间浏览、设备控制、情景模式等部分组成。程序采用生成器设计模式,在界面生成时,定义不同的ListItemViewBuilder类作为生成器,负责通过参数创建界面中ListView中的不同Item,这样可以使上层界面代码具有很高的通用性。而在ListItemViewBuilder的生成时,则利用以单件模式创建的ViewBuilder,根据参数创建不同的ListItemViewBuilder返回给界面数据ListAdapter。ListAdapter是本程序定义的继承自Android基础类BaseAdapter的ListView控件的适配器,负责为界面控件准备数据,包括事件响应、选项的布局等等。在设计中,不同的界面通过定义不同的事件响应响应类并设置给ListAdapter,

从而达到相同的事件拥有不同响应操作。智能终端还采用工厂方法设计模式,将不同的UI对应的响应事件都封装成不同的Event类,这样在构建界面时,只需要根据不同的UI利用不同的Event类,不仅将响应与页面加载代码分离开,也增加了代码的通用性。

2.3.1 主界面

作为程序启动的第一个用户交互界面——主界面如图3所示,界面提供房间浏览、情景模式、设备浏览、定时操作、快捷方式等选择。同时,主界面还支持左右滑动响应事件,向左滑动进入“房间浏览”界面,向右滑动进入“设备控制”界面。

整个主界面中采用Android提供的GridView基础控件,它可以将adapter中的数据按照二维网格的形式显示出来,并能够响应各个Item的点击事件。在响应触摸点击操作时,比对触摸操作的点击与放开的不同屏幕坐标值,从而实现滑动事件的响应。GridView中Item主要配置有点击及长按事件。当用户点击或滑动Item时,程序将根据Item中存储的信息,到Android终端的SQLite数据库中取出相关数据,利用取出的数据结合界面配置文档初始化并打开下一个界面。

图3 主界面

图4 房间浏览

图5 设备浏览

2.3.2 房间浏览

各个家居设备在现实生活中被放置在不同的空间,如卧室、餐厅等,设计也遵循此逻辑。进入房间浏览界面后,程序根据从SQLite数据库获取的所有家居空间信息及空间分类信息,通过包装后在界面中显示为可选项。用户依据控制需要,选择家居设备所存在的空间选项,如图4所示。界面的下端存在滑动条按钮控件,它利用Android提供的Gallery类,根据从数据库获取的空间分类信息,生成空间分类信息选择按钮。用户可拖动滑动条选择所需的分类,点击相应按钮后,房间浏览界面所显示的选项将根据按钮对应的分类进行筛选显示,从而达到方便用户选择房间的目的。当用户单击了某个空间的选项之后,程序将根据选择的选项中存储的相关信息,从SQLite数据库中取出该空间中的所有设备信息,并进入对应的设备浏览界面。空间选项还支持长按事件,该事件响应将在主界面创建对应空间的快捷方式。

2.3.3 设备浏览

设备浏览界面如图5所示,用于将现实中的家居设备显示至Android终端上,可供用户浏览或操作。程序将根据选定的房间ID,从SQLite查询对应房间ID的可用设备的相关信息,同时向ARM嵌入式服务器请求设备的当前状态,依照不同的设备类型及状态,在界面上显示其当前状态并且给予设备不同的控制操作。在用户选择对某一设备进行操作时,后台将根据所选设备的ID及操作代码,产生控制命令发送给ARM服务器,服务器再通过485总线发送至对应ID的家居设备执行器。

2.3.4 情景模式

在智能终端中,情景模式(图6)指一系列用户定义的,同一时间段房屋内某些可控制家居设备的状态。通过设定不同的情景模式,用户只需要一次简单的情景模式应用操作,就可以将多个设备在同一时间改变为预设定状态,简化了改变多个设备状态时的控制操作,增强用户体验。智能终端中的所有情景模式将通过查询与同步过的Android内建SQLite数据库产生,通过包装之后,呈现于用户界面。情景模式的后台处理,是以固定格式存储一批设备ID及其对应操作命令,在用户选择执行某一个模式时,智能终端将把对应的操作命令一并发送至ARM嵌入式服务器,使其执行控制操作。

2.3.5 定时操作

智能控制终提供了定时操作的响应的支持(图7)。用户只需要设定好定时的名称、说明、时间、日期,即可创建新的定时操作。定时操作设定完成后,系统将在设定的时间自动执行设定的操作。主界面中的定时选项,点击后可进入定时列表浏览。定时浏览界面将显示所有已经设定好的定时操作。用户可以点击右上角的“取消定时”按钮删除该定时操作,也可以单击选项进行定时的修改。针对新建定时操作,后台将把用户设定的时间、日期、设备ID、操作命令等信息以固定格式添加至ARM服务器的SQLite数据库中。在达到设定时间时,ARM服务器将自动执行对应命令,定时控制设备。

图7 定时浏览

2.4 SQLite数据库存取模块的设计与实现

在用户响应中,多数操作需要从Android内建数据库取出相关数据。设计中的SQLilte数据库存储模块的作用就是将与数据库相关的操作分离出来,只提供数据库无关的接口给UI及交互响应模块调用,可以在编写时,弱化数据库部分操作,专注于逻辑处理。设计通过定义SqliteORMapping类,针对数据库中的表,对数据库取出的数据以及在Model层定义的对象类,做类似Hibernate框架的OR Mapping。与此同时,程序中定义SqliteSupport类,将从数据库取出的数据,直接通过SqliteORMapping类转换为程序中定义的Model层的类型,这样在上层操作时,直接调用Model层类型相关属性的get方法即可进行简单方便的数据读取操作。

2.5 网络通信模块的设计与实现

作为依赖于ARM嵌入式设备的智能控制终端,若脱离了嵌入式服务器,智能控制终端的功能将受到很大限制,所以负责与ARM嵌入式设备交互的网络通信模块具有不可或缺的作用。将网络通信模块从业务逻辑中脱离出来,上层的界面、响应等就可以相对的与网络通信隔离,业务逻辑进行修改时将不需要修改通信模块,同样,通信协议进行修改时,将不涉及业务逻辑。在通信时,设计使用Socket技术并采用观察者设计模式,获得数据时,观察者将被通知进行相应数据处理。

网络通信模块负责与ARM嵌入式服务器进行交互,其通信协议中主要支持命令如表1:

表1 通信协议支持命令

3 系统测试与分析

通过现场测试与分析,智能操控终端的各项功能都能很好的达到预期效果。现场控制情况良好,能稳定的获得ARM嵌入式服务器中的相关数据并显示在测试用的Android手机端;能利用手机通过现场搭建的Wi-Fi无线局域网进行单独设备、情景模式等控制操作;与设备的交互速度较快(图8、图9)。

图8 现场测试手机软件

图9 现场测试环境

4 结 语

现如今,智能家居的远程控制已经是市场上大力发展的热门项目,新的技术和架构层出不穷。现设计的智能家居的控制终端依赖于智能家居中基本都使用的ARM嵌入式设备以及时下最流行的Android操作系统,利用Wi-Fi技术将其联系起来,针对不同的智能家居环境,只需要对终端的通信和存储信息的方式进行一定的修改,即可应用到各类环境中。

参考文献:

[1] 百度百科.android系统[EB/OL].http:∥baike.baidu.com/link?url=YhKfu8qPBQChPLqgE3aZ0ixYiS67z5yPSrxcmfJXV-5PWtyvOYcC0hx5GlntcZ5cJe1JHVo9Uh0WEOhyUVYOC_

[2] 刘敏,谭守标,陈军宁.基于Android平台和Zigbee技术新型智能家居系统[J].计算机系统应用,2012(12):133-136

[3] 宋冉昕.基于Android平台的实时自适应音频传输技术及其实现[J].电脑知识与技术,2011(3):27-35

[4] 冯国仕.基于Struts与Hibernate集成架构的项目管理系统[J].计算机应用,2005(2):18-21

[5] 公磊,周聪.基于Android的移动终端应用程序开发与研究[J].计算机与现代化,2008(8):101-101

[6] 耿东久,索岳.基于Android手机的远程访问和控制系统[J].计算机应用,2011(2):85-90

[7] 姚昱旻,刘卫国.Android的架构与应用开发研究[J].计算机系统应用,2008(11):97-102

[8] 杨海燕,陈永红.基于RFID与Android平台的物品清点系统[J].微型机与应用,2013(7):83-85

[9] 马晓鹏,冯源,郭忠文.智能家居监控原型系统设计[J].现代电子技术,2012(14):56-61

[10] 王朝华,陈德艳.基于Android的智能家居系统的研究与实现[J].计算机技术与发展,2012(6):225-228

[11] MARK M.Beginning Android 2[M].March, 2010

猜你喜欢

网络通信嵌入式终端
X美术馆首届三年展:“终端〉_How Do We Begin?”
通信控制服务器(CCS)维护终端的设计与实现
基于网络通信的智能照明系统设计
TS系列红外传感器在嵌入式控制系统中的应用
网络通信中信息隐藏技术的应用
GSM-R手持终端呼叫FAS失败案例分析
搭建基于Qt的嵌入式开发平台
基于网络通信的校园智能音箱设计
谈计算机网络通信常见问题及技术发展
嵌入式软PLC在电镀生产流程控制系统中的应用