生设计开题报告与2015年和田_第1页
生设计开题报告与2015年和田_第2页
生设计开题报告与2015年和田_第3页
生设计开题报告与2015年和田_第4页
生设计开题报告与2015年和田_第5页
已阅读5页,还剩72页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、摘 要随着科技的发展,人民生活水平的提高,人们对住宅的要求也越来越高,智能家居就是为解决人们的这一要求诞生的。照明是建筑的重要组成部分,人们对房屋舒适度的需求不断增多,智能照明行业发展前景可期。作者经过对智能照明,针对上述问题提出了一个基于 Android系统相关技术的分析和和WIFI 无线网络的智能家居照明系统的解决方案。该系统使用一个 Android作为控制中心,CC2530 作为无线收发器,通过 WIFI 无线网络,从而达到对照明系统控制的目的。本智能照明系统设计方案基本可以满足用户对照明控制的功能需求,同时由于采用了 WIFI 无线技术,大大降低了整个系统的成本。关键字:智能照明系统,

2、Android,CC2530ABSTRACTWith the development of science and technology to improve peoples living standards, people demand more and more comfortable houses, smart home is tosolve this requires . Lighting is an important part of the building, the demand ofcomfortable houses continues to increase ,ellige

3、nt lighting industry wibright future. On theelligent lighting system through related technologyysis and market research, to address the problem presented a solutions based on Android platform and WIFI wireless network smart home lightingsystems . The system uses an Android phone as the control cente

4、r, CC2530 aswireless transceivers, via WIFI wireleetwork, so as to achieve the pureof the lighting system control. Theelligent lighting system design to meetthe basic needs of lighting control for users , butnks to the WIFI wirelesstechnology, which grey reduthe cost of the entire system.Key Words:e

5、lligent lighting system,Android,CC2530目 录第 1 章1.4第 2 章2.1引言1智能灯控系统的研究背景1课题的研究价值及意义1智能灯控系统的研究现状2课题重点研究内容2理论基础4Android 系统..4Android 系统架构4Android Framework 框架6Android 的生命周期7Android 开发Eclipse82.2ZigBee 技术.22.2.3无线通信技术比较10ZigBee 协议栈11ZigBee 开发模块132.3Socket 通信15Socket 中

6、重要的 API16Socket 的连接过程16客户端的设计与实现18UI 界面设计18几种常用控件的实现19人机交互 UI 实现25Socket 通信的实现33硬件的设计与实现46第 3 章3.13.2第 4 章4.1 硬件电路设计4..4CC2530的优势46LED 模块47天线模块48串口模块484.2 硬件编的通信协议49数据通信的报文格式49功能码设置50第 5 章 系统测试5UI 测试53网关到 ZigBee 的测试56系统整体测试58第 6 章 结束语60本文总结60本系统展望60参考文献61致 谢64外文资料原文65外文资料

7、译文70第 1 章 引言由于计算机的不断发展,智能家居系统也随之诞生。智能家居是利用网络技术,通信技术,综合布线技术结合工程学原理,融合个性需求将家中使用的家电如冰箱,空调,电视,暖气,安防等有机的结合在一起,通过智能控制终端”的全新家居理念1。而照明是建筑的重要组控制和管理,实现“成部分,随着人们生活水平的提高,对房屋舒适度的需求不断增多,智能照明行业发展前景可期。1.1 智能灯控系统的研究背景智能家居2是人类住宅的一场新,在我国高科技和正在由智能智能住宅小区,进而走进家庭。现代社会的家庭正在以家庭智能化带来的多元化信息和安全、舒适、便利的生活环境,作为一个理想的目标来追求3。照明是建筑的重

8、要组成部分,随着人们生活水平的提高,对房屋舒适度的需求不断增多,智能照明行业发展前景可期。作为楼宇和家庭智能化的重要组成部分,智能照明市场份额也将随之不断增加,产业发展迎来突破4。此外,伴随我地产市场的不断发展,家用智能照明系统也将进入快速发展时期。ZigBeeLight Link(ZLL)智能照明市场前景乐观5。本智能家居系统,主要是基于 Zigbee 网络节点的智能家居系统。ZigBee 是基于IEEE802.15.4 标准的低功耗局域网协议,根据国际标准规定,ZigBee 技术是一种短距离、低功耗的无线通信技术。它成本低,可扩展性强,功耗低,灵活性强,开放高效,安全可靠而且可以实现需求。

9、终端控制,真正满足了用户智能家居化的1.2 课题的研究价值及意义此项目的智能灯饰,主要是基于 Android和 Zigbee 网络节点的智能家居系统,它具有成本低,功耗小,可扩展性强,灵活性强,开放高效,安全可靠的特点而且可以实现终端控制,真正满足了用户智能家居化的需求。它还能取代目前市场上的 43MMHZ、WIFI、蓝牙等五项技术灯控方案,只要遵循 ZLL 标准协议的灯具都可以兼容使用,所以具有较高的实用价值。1.3 智能灯控系统的研究现状智能照明的这些功能决定了它的应用价值,国内外已有一些领域已经展开应用。智能照明现在在国外应用的比较多一些,像的医院,通过智能照明系统,实现了符合昼夜节律的

10、照明,使得住院的生活周期保持稳定,同时实现了节能6。例如世博会也用到了智能照明系统,国内的一些公司在这方面也做的不错。科技就推出了 50-100m2,100-200m2,100-200m2,以及别墅的智能灯控解决方案;针对酒店他们还提供客房的早安情景,浪漫情景和情景的灯控方案。国奥村花园酒店作为目前世界唯一以奥运会及文化为的酒店,位于国奥村内。国奥村即奥运会赛时的运动员村(奥运村),是 2008 年奥运会、残奥会各国运动员、住地及会议场所。这个酒店也是采用了当时先进的智能灯控系统。1.4 课题重点研究内容介绍的是基于 Android决方案。其中涉及 Android和 WIFI 无线网络的智能家

11、居灯控系统解的应用开发技术、无线通信技术、控制技术。中所设计的智能家居灯控系统是以 Android作为控制端,以 WIFI 无线模块组成室内网络作为信息传输网络,从而达到对家庭中的灯饰进行集中控制和管理的目的7。课题的重点内容有:(1)了解并分析国内外智能灯控系统的研究现状,对比世界上主流智能灯控系统系统的优势和,挖掘人们对智能灯控系统新的需求,提出具有较全功能且价格便宜的解决方案,给出系统的总体设计和详细设计。(2)直观,最具端的人机交互界面设计。一个良好的人机交互界面无疑是对顾客最的。智能家居本来就是为了方便用户生活,所以设计智能家居人机交互界面首要原则是要操作方便,其次还应该遵循用户原则

12、、信息量小原则、帮助提示原则和最佳组合原则。(3)是安卓和 CC2530 的通信设计。本智能家居解系统决方案的控制中心主要。安卓通过 WIFI 信号发送控制命令,控制命令通过网关进行TCP/IP 和ZIGBEE 的协议转换,最后经过协议转换令控制 CC2530。(4)(5)TCP/IP 和 ZIGBEE 协议的转换。智能家居系统测试,中首先分别对智能家居系统的各个模块进行了测试,各个模块运行正常后,再对智能家居总体进行了简单的测试。第2章 理论基础2.1Android 系统Android 系统是基于 Linux 内核的开源操作系统,自 2007 年展示这款名为 Android 的操作系统,从此

13、 Android 便开始逐渐占领全球 市场。截止 2013 年 9 月,全球使用 Android 系统的移动设备已经超过向外平板10 亿台,智能市场占有率在 76%。系统之所以选择 Android 操作系是它的优点:它开放性好,有强大的开发是因为它现在极大的市场占有率,二者的支持,让消费者有很多可以使用;摆脱了运营商的,用户可以更加方便的连接网络;丰富的硬件选择,由于 Android 的开放性,厂商们推出了各种各样的产品,却不影响兼容性;不受任何限制的开发,Android为第开发商提供了一个很应用,Android,宽泛的环境,无缝的结合了众多的由此而生;无缝结合的服务如地图、邮件、搜索等。2.

14、1.1 Android 系统架构一个要成为一个优秀的,它必须得有一个成系统架构所支撑。众所周知,Android 系统现在已经占据大部分市场份额,可见其系统的优秀性和成熟性。图 2-1 为 Android 系统架构图。分层架构在系统架构中广泛使用,Android 系统也是采用的分层架构,大概可以分为四层,从上至下依此为:应用程序层、应用程序框架层、系统运行库层以及 Linux 内核层。下面分别简单介绍下这四层:(1)应用程序层应用程序层是 Android 系统架构的最上面一层。Android之所以能取得成功,不仅仅是因为其是一个好的操作系统,还因为其包含了很多优秀的应用程序,如:拨号程序、web

15、 浏览器程序、浏览器程序、机程序等。Android的这些程序都是由 java 语言开发的,开发也可以自己编写自己的应用程序来替代这些程序,这样的方式使得 Android 操作系统更加的灵活和个性化,这点不同于其他操作系统是把这些在系统,无法更改。(2)应用程序框架层应用程序框架层是 Android 系统很重要的一层,很多应用程序的功能都是通过这一层来实现的,它是程序员进行 Android 应用开发的基础。该层中实现了很多组件,程序员可以直接使用这些组件来进行快速的应用程序的开发,也可以继承这些组件来实现具有自己个性的一些应用程序8。从图 2-1 中不难看出,Android 的应用程序框架层里面

16、主要包括:ActivityManager( 活动管理器)、Window Manager(窗口管理器)、Content ProvIDer(内容提供器)等。(3)系统运行库层从图 2-1 中可以看出,Android的系统运行库这层分为两部分:系统库和 Android 运行时。以下简单介绍下这两部分:a) 系统运行库:系统运行库支撑着应用程序框架层,是应用程序框架层和Linux 内核层之间的桥梁,它起着连接这两层的重要作用。系统运行库主要分为如下几个部分:Surface Manager、Media Framework 等b)Android 运行时是由库和 Dalvik 虚拟机组成,Android 应

17、用程序时采用 Java 语言编写,程序在 Android 运行时中执行。(4)Linux 内核层Android 系统的内核是基于 Linux2.6 的,因此 Android 系统的一些系统服务如内存管理、网路协议、驱动模型、进程管理、安全性等都依赖于 Linux 内核。图 2-1 为 Android 系统架构图2.1.2 Android Framework 框架开发者在开发 Android 应用程序的时候都是通过框架来与 Android 底层进行通信的,所以框架在 Android 中是一个很重要的概念。框架其实是一个约定,凡是参与了应用程序开发的程序员都必须遵守这个约定,大家在这个约定上可以进

18、行一定的扩展,以保证程序主体结构的一致性,可以说,它就是应用程序的其作用是让程序保持清晰、一目了然,在满足不同需求的同时又不互相影响9。,在 Android SDK 中内置了一些对象,其中比较重要的组件有 Activities、ents、Servi以及 Content ProvIDers。 Activities 即活动,Activities 所有操作都与用户相关,即一个负责与用户交互的组件。一个 Activity 就是一个用户界面,一个应用程序可以定义一个或者多个 Activity,每个 Activity 都可以保存和恢复自身的状态。ents 字面意思是“意图”,它的作用其实是解决 Andro

19、id 应用程序各个组件之间的通信问题。在应用程序中,一次操作的动作、动作涉及的数据、附加数据的描述都是由ent 负责,Android 根据ent 的描述,找到相应的组件,将ent 传递给调用的组件,并完成组件的调用。所以,ent 其实就是一个媒介,专门提供组件之间相用的相关信息,实现调用者和被调用者之间的通信。Servi服务,Service 是运行在、没有与用户直接交互的任务,比如要做一个音乐器,可能会被另一个活动激活,但音乐是需要作为背景音乐,器这种程序就可以考虑作为一种服务 Service,然后别的活动可以来操作这个10。Content ProvIDer 即内容提供者,一个内容提供者 Co

20、ntent ProvIDer 就是由自定义的 API 封装读写操作的一套数据,Content ProvIDer 是不同应用程序之间共享全局数据最好的方式11。Android 应用程序主要是由 src、gen、assets、res 四个文件。其中,src是文等源代码文件,gen 中存放的是一些自动的文件,主要是 R.java 文件,R.java件由 ADT 自动,不能修改,但可以通过这个文件系统中图像、资源。assets 也是一个资源文件,其中的资源没有ID,需要完整路径来为资源目录,里面的文件夹存放不同的资源。res以上只是简单的介绍了下 Android 系统的构架和 Android 应用程序

21、的框架,其实,Android 系统中还有很多值得关注的地方,但由于这不是本文的重点,这里不再。2.1.3 Android 的生命周期Android 的应用程序是有生命周期的,所谓生命周期就是指应用程序从启动到终止的这个过程。Android 有五种进程:前台进程,可见进程,服务进程,后台进程,空进程。几种进程的优先级见图 2-2 Android 进程的优先级。由图中可以知道优先级最高的是前台进程,其次是可见进程和服务进程,优先级最低的是进程和空进程。Android 的组件也是有生命周期的,这个周期就是组件从建立到销毁的过程。在生命周期中,组件在可见、不可见、活动、非活动等状态中不断的转换。And

22、roid 中最应该关注的就是 Activity 的生命周期,Activity 表现为四种状态,分别是活动状态、非活动状态、暂停状态和停止状态12。之间的变换关系如图2-3 Activity的四种状态的变化关系图。图 2-2 Android 进程的优先级图 2-3 Activity 的四种状态的变化关系图2.1.4 Android 开发EclipseEclipse 是一个开放源的基于 Java 的可扩展开发。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括 Java 开发工具(Java Development Tools

23、,JDT)。开放源代码用户的是这样一种,它们在发布时附带了旨在确保将某些权利授予证。当然,最明显的权利就是源代码必须可用,以便用户能地修。这种用户权利的保护是通过一种称为 copyleft 的策略来完成改和再分发该的:证主张保护,除非明确授予用户这样的权利,否则用户不得分发该了。copyleft 还要求同一证涵盖任何被再分发的。这实际上倒置的目的使用来授予用户权利,而不是为的开发者保留copyleft 经常被描述为“保留所有Eclipse 工作台”。在第一次打开 Eclipse 时,首先看到的是下面的欢迎屏幕(如图 2-4):图 2-4 Eclipse 主界面图Eclipse 工作台由几个称为

24、视图(view)的窗格组成,比如左上角的 Navigator视图。窗格的集合称为()。默认的是 resource,它是一个基本的通用视图集,用于管理项目以及查看和编辑项目中的文件。Navigator 视图允许您创建、选择和删除项目。Navigator 右侧的窗格是 编辑器区域。取决于 Navigator 中选定的文档类型,一个适当的编辑器窗口将在这里打开。如果 Eclipse 没有用于某特定文档类型(例如,Windows 系统上的.doc 文件)的适当编辑器,Eclipse 将设法使用外部编辑器来打开该文档。Navigator 下面的 Outline 视图在编辑器中显示文档的大纲;这个大纲的准

25、确性取决于编辑器和文档的类型;对于 Java 源文件,该大纲将显示所有已 的类、属性和方法。Tasks 视图收集关于您正在操作的项目的信息;这可以是 Eclipse 生成的信息,比如编译错误,也可以是手动添加的任务。2.2ZigBee 技术ZigBee 是基于IEEE802.15.4 标准的低功耗局域网协议。根据国际标准规定,ZigBee 技术是一种短距离、低功耗的无线通信技术。这一名称(又称紫蜂协议)来源于蜜蜂的八字舞,由于蜜蜂(bee)是靠飞翔和“嗡嗡”(zig)地抖动翅膀的“舞蹈”来与同伴传递花粉所在方位信息,也就是说蜜蜂依靠这样的方式了群体中的通信网络。其特点是近距离、低复杂度、自组织

26、、低功耗、低数据速率。主要适合用于自动控制和控制领域,可以嵌入各种设备。简而言之,ZigBee 就是一种便宜的,低功耗的近距离无线组网通讯技术,ZigBee 协议是一种低速短距离传输的无线网络协议。ZigBee 协议从下到上分别为物理层(PHY)、等。其中物理层和控制层(MAC)、传输层(TL)、网络层(NWK)、应用层(APL)控制层遵循IEEE 802.15.4 标准的规定。2.2.1 无线通信技术比较智能家居与传统家居最大的区别在于,前者通过有线或者无线的方式组成一个完整的各类通信、网络。在这个网络中不仅包含了家居设备,还包括人们日常使用的终端。人与家居可以直接交互,也可以通过这些终端通

27、过网络进行交互,同时所有的设备也通过网络进行信息共享,以及配合完成某项家居功能。目前家居设备互信主要以无线连接为主,其中以基于 802.11 协议的 Wi-Fi 最为普遍,此外还有蓝牙、NFC(RFID)、Zigbee、Z-wave、UWB、IrDA 等等。各种无线通信技术的特点:a)Wi-Fi 技术突出的优势在于:1. 无线电波的覆盖范围广,Wi-Fi 的半径则可达 100 米,自不用说,就是在整栋大楼中也可使用;2. 传输速度非常快,可以达到 11mbps,符合个人和社会信息化的需求。蓝牙技术尽管是目前较为先进的无线网络技术,而且已经在很多设备进行互操作中逐渐普及,但对于许多消费电子设备而

28、言,利用它来作为电缆的替代方案,在成本和功耗方面还很难令人满意13。Zigbee 是目前智能家居领域发展最快,应用范围最广的无线传输技术。它具有近距离、低复杂度、低功耗、低数据速率、低成本等特征。其主要适用于自动控制和控制领域,可以满足对小型廉价设备的无线联网和控制功能。对于家庭网络通讯而言:传输的数据量小,在传输速率上不需要太高的要求。网络的容量要大,家庭中的各种电器设备多。信息的实时性好,时延短,成本低。相对于现有的各种无线通信技术,Zigbee 技术是功耗和成本最低的技术之一,很好地满足了智能家居的需求。2.2.2 ZigBee 协议栈a)ZigBee 无线网络协议协议是一系列的通信标准

29、,通信双方需要共同按照这一标准进行正常的数据发射和接收。协议栈是协议的具体实现形式,通俗点来理解就是协议栈是协议和用户之间的一个接口,开发线数据收发。通过使用协议栈来使用这个协议的,进而实现无ZigBee 无线网络协议层的架构图:PHY(物理层)、MAC(介质层)技术规范、NWK(网络层)、 APS(应用程序支持子层)、APL(应用层)技术规范(如图 2-5)。图 2-5 ZigBee 协议栈图ZigBee 协议栈就是将各个层定义的协议都集合在一直,以函数的形式实现,并给用户提供 API(应用层),用户可以直接调用。ZigBee 协议栈已经实现了ZigBee 协议,用户可以使用协议栈提供的 A

30、PI 进行应用程序的开发,在开发过完全不必关心 ZigBee 协议的具体实现细节,要关心是:应用层的数据是使用哪些函数通过什么方式把数据发送出去或者把数据接收过来的。所以最重要的是要会使用 ZigBee 协议栈。举个例子,用户实现一个简单的无线数据通信时的一般步骤:1、组网:调用协议栈的组网函数、加入网络函数,实现网络的建立与节点的加入;2、发送:发送节点调用协议栈的无线数据发送函数,实现无线数据发送;3、接收:接收节点调用协议栈的无线数据接收函数,实现无线数据接收。b)Z-stack OSAL API14 介绍OSAL 层是与协议栈独立的,但是整个协议都要基于 OS 才能运行。OSAL 提供

31、如下服务和管理:信息管理、任务同步、时间管理、中断管理、任务管理、内存管理、电源管理以及非易失一、信息管理 API管理。信息管理为任务间的信息交换或者外部处理事件(例如:中断服务程序或一个控制循环内的函数调用等)提供一种管理机制。包括允许任务分配或不分配信息缓存、发送命令信息到其他任务、接受应答信息等 API 函数。二、同步任务 API该 API允许一个任务等待某个事件的发生并返回等待期间的控制。该 API的功能是为某个任务设置事件,一旦任何一个事件被设置就修。三、时间管理 API该 API允许定时器被(Z-Stack)任务和外部任务使用。该 API提供开始和停止一个定时器的功能,这些定时器能

32、用毫秒(ms)设置。四、中断管理 API这些 API 是外部中断和任务的接口。这些 API 函数允许一个任务为每个中断分配指定服务程序。这些中断能被允许或务。五、任务管理 API。在服务程序内,可为其他的任该 API 用在管理 OSAL 中的任务,包括系统任务和用户自定义任务的创建、管理和信息处理等。六、内存管理 API该 API 描绘了简单的七、电源管理 API分配系统。这些函数允许动态分配。这里描写了 OSAL 的电源管理系统。当 OSAL 安全地关闭并使处理器进入休眠模式时,该系统提供向应用/任务通告该事。与外部硬件2.2.3 ZigBee 开发模块a)CC2530(如图 2-6)CC2

33、530 是专门针对IEEE 802.15.4 和ZigBee 应用的解决方案,经济且低功耗。CC2530 有四种不同的版本:CC2530-F32 / 64 / 128 / 256。分别带有 32 / 64/ 128 / 256 KB 的闪存空间;它整合了全集成的高效射频收发机及业界标准的增强型 8051 微控制器,8 KB 的RAM 和其他强大的支持功能和外设15。图 2-6 CC2530 实物图主要特点:1、高达 256kB 的闪存和 20kB 的擦除周期,以支持无线更新和大型应用程序;2、8kB RAM 用于更为复杂的应用和Zigbee 应用;3、可编程输出功率达+4dBm;4、在掉电模式

34、下,只有睡眠定时器运行时,仅有不到 1uA 的电流损耗;5、具有强大的地址识别和数据包处理引擎;6、支持Zigbee / Zigbee PRO , Zigbee RF4CE, 6Lo他所有基于 802.15.4 标准的解决方案;N, WirelessHART 及其7、卓越的灵敏度和可编程输出功率;8、在接收、发射和多种低功耗的模式下具有极低的电流消耗,能保证较长的电池使用时间;9、一流的选择和阻断性能(50-dB ACR)。应用:1、智能能源/自动化仪表;2、控制;3、居家及楼宇自动化;4、消费类电子产品;5、工业控制及监测;6、低功耗无线传感器网络。b)ZigBee - WiFi 网关一)网

35、关(Gateway)又称网间连接器、协议转换器。网关在网络层以上实现网络互连,是最复杂的网络互连设备,仅用于两个协议不同的网络互连16。网关既可以用于广域网互连,也可以用于局域网互连。 它是一种充当转换重任的计算机系统或设备。使用在不同的通信协议、数据格式或语言,甚至体系结构完全不同的两种系统之间,网关是一个翻译器。与网桥只是简单地传达信息不同,网关对收到的信息要重新打包,以适应目的系统的需求。在使用不同的通信协议、数据格式或语言,甚至体系结构完全不同的两种系统之间,网关就是一个翻译器,网关对收到的信息要重新打包,以适应目的系统的需求,同时起到过滤和安全的作用。网关工作在 OSI/RM 的传输

36、层及以上的所有层次,它是通过重新封装信息来使它们能够被另一种系统处理的,为此网关还必须能够同各种应用进行通信,包括建立和管理会话、传输以及数据等。事实上现在的网关已经不能完全归硬件的结合产品17。为一种网络硬件,而可以概括为能够连接不同网络的为什么要使用ZigBee - WiFi 网关呢?原因:ZigBee 具有近距离、低复杂度、低功耗、低数据速率、低成本等特征。其主要适用于自动控制和控制领域,可以满足对小型廉价设备的无线联网和控制功能,是能够很好满足智能家居需求的技术。所以在使用的是 ZigBee 协议。智能灯控系统中要使用 ZigBee 技术,而 ZigBee 自组网没有与 ZigBee

37、直接通讯的接口,直接连接的是ernet。ernet 使用的是TCP/IP 协议,所以如果想用来控制ZigBee 协议的控制 ZigBee 设备,就相关设备,就必须要进行协议之间的转换。所以为了使要使用ZigBee - WiFi 网关来完成协议转换这个任务。二)网关的工作原理:比网络 A 和网络 B,网络 A 的 IP 地址范围为“192. 168.1.254”,子网掩码为 ;网络 B 的 IP 地址范围“54”,子网掩码为 16。在没有路由器的情况下,两个网络之间是不能进行 TCP/IP 通信的,即使是两个网络连接在同一台交换机(或集线器)上,TCP/IP 协议也会根据子网掩码()判定两个网络

38、中的主机处在不同的网络里。而要实现这两个网络之间的通信,则必须通过网关。如果网络A 中的主机发现数据包的目的主机不在本地网络中,就把数据包转发给它自己的网关,再由网关转发给网络B 的网关,网络 B 的网关再转发给网络B 的某个主机。网络 B 向网络 A 转发数据包的过程也是如此。的ernet 网络和 LED 灯的ZigBee 网络就是在的智能灯控系统中,两个不同的网络。当将 LED 灯的控制命令通过 WiFi 信号发出后,的网络发现目的地址不在本地网络中,于是它就把包含命令的数据包转发给 ZigBee - WiFi 网关。网关接收到这个数据包后,网关首先将这个数据包进行重新打包,将它打包成适应

39、ZigBee 网络的数据包,然后将它发给ZigBee 板上的 LED 灯,实现了发送命令控制 LED 灯的目的。在无线传输中,网关主要根据地址信息来进行数据的发送和转发。ZigBee 通信协议中规定了两种地址:64 位的IEEE 长地址和 16 位的短地址(SADDR)。IEEE长地址作为全局地址,可在大范围内调用;短地址作为个域网地址,仅限于围局域网内通信使用。为了方便设备间的信息传送,在协议转换过进行了地址。通过建立地址表现场设备的短地址(网关通信短地址固定为 0000H),表中每个短地址对应一个设备对象标识符(Ob-jectID),控制网络协议根据 ObjectID来对不同设备进行操作。

40、如需实现组播功能,只须定义一组 ObjectID 作为网关目的地址.2.3Socket 通信Android 与服务器的通信方式主要有两种,一是 Http 通信,一是 Socket 通信。两者的最大差异在于,http 连接使用的是“请求响应方式”,即在请求时建立连接通道,当客户端向服务器发送请求后,服务器端才能向客户端返回数据。而 Socket 通信则是在双方建立起连接后就可以直接进行数据的传输,在连接时可实现信息的主动推送,而不需要每次由客户端向服务器发送请求。那么网络中的进程之间又是如何通信的呢?首要解决一个进程,否则通信无从谈起!在本地可以通过进程但是在网络中这是行不通的。其实 TCP/I

41、P 协议族已经帮是如何唯一标识来唯一标识一个进程,解决了这个问题,网络层的“IP 地址”可以唯一标识网络中的主机,而传输层的“协议+端口”可以唯一标识主机中的应用程序(进程)。这样利用三元组(IP 地址,协议,端口)就可以标识网络的进程了,网络中的进程通信就可以利用这个标志与其它进程进行交互。使用TCP/IP 协议的应用程序通常采用应用编程接口:UNIX BSD 的套接字Socket 和 UNIX System V 的TLI(已经被淘汰),来实现网络进程之间的通信。就目前而言,几乎所有的应用程序都是采用Socket,而现在又是网络时代,网络中进程通信是无处不在,这就是为什么说“一切皆Socke

42、t”。其实 Socket 就是一种抽象层,应用程序通过它来发送和接收数据,使用 Socket 可以将应用程序添加到网络中,与处于同一网络中的其他应用程序进行通信。简单来说,Socket 提供了程序 与外界通信的端口并为通信双方的提供了数据传输通道18。2.3.1 Socket 中重要的 API首先,说明一下API。API(Application Programmingerface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发基于某软件或硬件得以细节。一组例程的能力,而又无需源码,或理解工作机制的重要的Socket API:java .net.Socket 继承于java.l

43、ang.Object,有八个构造器,其方法并不多,下面介绍使用最频繁的三个方法,其它方法大家可以见 JDK-1.3文档。1)Accept 方法用于产生阻塞,直到接受到接,并且返回一个客户端的Socket 对象实例。阻塞是一个术语,它使程序运行暂时停留在这个地方,直到一个会话产生,然后程序继续,通常阻塞是由循环产生的。getInputStream 方法获得网络连接输入,同时返回一个InputStream 对象实例。getOutputStream 方法连接的另一端将得到输入,同时返回一个OutputStream对象实例。注意:其中getInputStream 和getOutputStream 方法

44、均可能会产生一个IOException,它必须使用。获,因为它们返回的流对象,通常都会被另一个流对象2.3.2 Socket 的连接过程根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接过程可以分为三个步骤:服务器,客户端请求,连接确认。服务器:是服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时网络状态。客户端请求:是指由客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,服务器端套接字的地址和端,然后就向服务器端套接字提出连接请求。连接确认:是指当服务器端套接字到或者说接收到客户端套接字的连接

45、请求,它就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,连接就建立好了。而服务器端套接字继续处于状态,继续接收其他客户端套接字的连接请求。第3章客户端的设计与实现Android客户端在本系统中起着作用,它不仅是整个系统的控制枢纽,还是直接和用户打交道的模块,所以客户端的设计的好坏直接影响着整个系统的性能和用户的体验19。这里,我重申一下客户端的具体作用:客户端在整个系统中起着集中控制的作用。用户可以直接使用对LED 灯进行控制,当用户点击客户端上的控件时,控件所代表的控制命令通过 WIFI 网络传到网关,网关将 TCP/IP 协议下的数据包

46、转换为ZigBee 协议下的数据包后,发送给 CC2530控制LED 的亮灭20。,再由 CC2530由上面所述,客户端的设计大致分成两部分:一是端 UI 界面设计;二是和网关之间的通信设计21。下面就来一一讲述一下这两个部分的详细设计。3.1UI 界面设计UI 界面(如图 3-1)设计:图 3-1 UI 界面图上面的 UI 界面图已经大致向APP 的功能和界面布局。但是展现了由于智能家居用户的多样性,教育背景和层次结构存在着巨大的差异,所以 UI 的设计必须在保证功能的前提下,尽可能的做到美观简洁、易于操作。在进行APP 的设计之前UI 设计的大致基于美观简洁的目的,首先设计了 APP 的

47、UI 结构图,作为和总的思路(UI 结构图如图 3-2 所示)。系统主界面灯光连网场景设备退出客厅灯光餐厅灯光书房灯光卧室灯光图 3-2UI 结构图端的 UI 主界面主要可以分为六个部分:灯从上图可以看出,本系统中光、连网、场景、设备、的作用。,退出。从每个部分的名字可以大致知道每个部分连网这个部分是实现整个 APP 功能的基础所在,想使用这个 APP 来控制家中的灯光,就必须要联网。打开过网络来传递控制命令,进而起到APP 后首先要做的就是连接网络,这样才能通控制的作用。连接网络这个部分,首先需要输入网关的IPV4 地址,例如 03,从而通过Socket 通信连接网关26。当连接网络成功之后

48、,在端的 APP 和网关端的都会显示联网成功的提示信息,提醒用户网络已经连接成功,此时就可以使用 APP 的控制功能了(网络连接流程图如图 3-3 所示)。图 3-3 网络连接流程图灯光这个部分就是对家中的灯光进行控制,它分为客厅灯光,餐厅灯光,书房灯光,卧室灯光四个部分(流程图如图 3-4 所示),基本囊括普通家庭需要控制的灯光。当用户进入的这个主界面时,映入眼帘的就是对灯光的控制。用户连接网络后可以根据自己的想法,点击相应的按钮来控制相应位置的灯光。图 3-4 灯光控制流程图调节室内光线的,如:浪漫型,温馨型等。这场景模块里面主要是用来样可以使用户想对室内的照明进行的调整时,能够更加方便(

49、场景模块流程图如图 3-5 所示)。图 3-5 场景模块流程图设备模块是用来查询可以被控制设备的详细信息,进而使用户能够更好的了解他所使用的设备,并且管理(设备模块流程图如图 3-6 所示)。图 3-6 设备模块流程图这个模块是用来对房间的一些位置进行控模块流程图如图 3-7 所示)。,进而提高房屋的安全度(监图 3-7模块流程图3.1.1 几种常用控件的实现Android UI 的设计是把一些常用的控件组合在一起,设定控件大小以及控件之间的相对位置,再加一点美化,就得到了日常所见的美轮美奂的 UI。所以,UI 设计的好坏与设计者对该系统中控件的理解程度有很大的关系接下来的部分就来介绍一下 A

50、ndroid 中常用的一些控件的实现方法,本系统中的 UI 设计也是基于这些常用控件的。在 Android 众多控件中比较常用的控件有 Button、TextView、EditText、 RadioButton、CheckBox、ProgressBar 等。由于篇幅有限,本文只对 Button 这个控件进行一个简单的实现说明。其他的一些控件只介绍它的一些特殊的属性和使用方法。如下图 3-8 为 Android 布局文件视图层次结构图。 在 layout 里面定义的控件大概可以分为两类,一类称作为 View,一类称作为 ViewGroup。从他们的名字大概可以知道他们之间的关系,ViewGrou

51、p 中可以包含多个 View。但程序员在平时的日常开发中都不直接常用 View 和 ViewGoup,而是用他们的派生类。View 和ViewGroup 的派生类分为直接派生类和间接派生类。常见的 View 直接的派生类有:TextView、ImageView、ProgressBar 等,常见的 View 的间接派生类有:Button、CheckBox、AbsSpinner 等。常见的 ViewGroup 的直接派生类有:RelativeLayout、Absoluayout、LinearLayout 等,常见的 ViewGroup 的间等24。接派生类有:ListView、Horizontal

52、ScrollViewViewGroupViewGroupViewViewViewViewView如图 3-8布局文件层次结构图在下面的这段代码中,简单的实现了一个 Button 的布局,这段代码的位置是在 res 文件下的 layout 文件夹里面,程序的布局文件都放在这个地方。LinearLayout的属性25TextView 的属性Button 的属性这行是说明程序使用的版本号等信息,接着是一个根。LinearLayout 是一个线性布局,也就是说使用这个 layout 的 Activity 的 UI是采用的是线性布局。线性布局的含义是这个布局中的控件是从上到下或者从左到右一字排开决定程序

53、布局到底是从上到下,还是从左到右的属性代码就是: Android:orien ion=vertical。orien ion 表示方向,它有两个值可以选,一个是本文中的 vertical,垂直布局;另一个是 horizontal ,水平布局。Android:layout_width=fill_parent Android:layout_height=fill_parent这两行代码是用来控制这个 LinearLayout 的大小的,Android:layout_width属性用于控制宽度,Android:layout_height 属性用于控制高度22。两个属性的值都是 fill_parent,

54、它表示的是 LinearLayout 这个线性布局把他的父控件填满。因为 UI 设计中很多时候要用到布局的嵌套,上一级的布局控件就是父控件。由于本代码中的父控件就是整个屏幕了,所以上面这两句话的意思是这个 LinearLayout 宽度和高度把整个屏幕填满。layout_width 和 layout_height 还有一个属性是 wrap_content,这个值表示的意思的刚好与它的内容的大小相同。接下来的几行代码定义了一个 TextView 和 Button 控件,这两个控件是在 Linearlayout 的里面,由于布局文件是垂直线性的,所以运行出来的效果是上面一个 TextView 下面

55、接着跟着一个 Button。可以定义控件的属性,例如Android:ID=+ID/textview这行代码的意思是这个控件的名字属性叫 textview。前面已经介绍,layout 的每一个资源文件都会在 R.java 中生成一个ID,所以这两个控件也会在 R.java public sic final clapublic sic final public sic final里面生成相应的ID。如下面所示。textview =0 x7f050004;drawingroom=0 x7f050000;程序源文件中可以相应的ID 来Android:text=string/zt相应的控件。text 这

56、个属性表示的是相应控件上的文本是什么。上面这就代码的意思是引用string.xml 文件中的 zt 来作为这个控件上的文本。TextView 和 Button 控件是Android 应用程序最常见的两种控件,这两个控件的属性除了上面介绍的外,还有一些其他属性,这里就不一一介绍了。对于其他控件,会在后面 UI 设计中使用到了再介绍。前面的内容介绍了控件的一些基本控件。在介绍控件的先介绍一下 Android 应用程序代码架构。使用之前,package com.house; import java.util.Timer; import java.util.TimerTask;import java.

57、util.regex.Matcher; import java.util.regex.Pattern; public class MainActivity extendivityprotected void onCreate(Bundle savedInstane) super.onCreate(savedInstansetContentView(R.layout.main);e);上述代码中第一行表示的是这个程序的包名,后面的 import 行表示的是类。src 文件的每一个 Activity 其实都是一个类,比如本程序的 MainActivity,它必须继承 Activity 类方法。on

58、Create 方法是这Activity 的主方法,本 Activity 要干什么事情都是在这里面实现。super.onCreate(savedInstane) 继 承 父 类 的onCreate() 方 法 。setContentView(R.layout. main) 设 置这个 Activity 所使用 的布局 文件是 MainActivity.xml。Android 中,源代码中使用布局文件里面的控件的接口函数就是 findViewByID()。如果程序员在 layout 里面的 MainActivity.xml 文件了面了一个TextView 控件,并取名为 textview,这里可以

59、用 findViewByID(R.ID.textview)就可以取得这个控件,然后在源代码中就可以对这个控件进行操作了。3.1.2 人机交互 UI 程序实现从图 3-9 可以看出,本系统中端的 UI 的主界面主要可以分为六个部分:灯光、连网、场景、设备、,退出。从每个部分的名字可以大致知道每个部分的作用。UI 界面设计的详细分析及相关代码:1)顶部标题栏(如图 3-9 所示)顶部标题栏 UI,分别是 APP 的 LOGO 和 APP 名称图 3-9 APP 顶部标题栏当用户一打开 APP 时,看到上面的标题栏上的LOGO 和 APP 名称,就能够显而易见的知道 APP 的功能。具体程序如下:/

60、apk/res/Android这行是说明程序使用的版本号等信息,接下来是一个根。LinearLayout 是对顶部整个标题栏的线性布局,起到一个总体规范的功能。Android:layout_width=match_parent是对宽度的布局,他的具体意思是匹配该布局的宽度,简单说就是父类有多宽,该布局就有多宽。而程序中的父类是整个屏幕,程序的意思就成了屏幕有多宽,该布局就有多宽。Android:layout_height=match_parent是对布局就有多高。高度的布局,父类有多高,该Android:orienion=vertical 这句话的意思是布局中起到了总体规划作用。采用垂直布局。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论