基于Java的智能家居控制系统的设计信息控制端的设计论文初稿_第1页
基于Java的智能家居控制系统的设计信息控制端的设计论文初稿_第2页
基于Java的智能家居控制系统的设计信息控制端的设计论文初稿_第3页
基于Java的智能家居控制系统的设计信息控制端的设计论文初稿_第4页
基于Java的智能家居控制系统的设计信息控制端的设计论文初稿_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

PINGDINGSHANUNIVERSITY毕业论文(设计)题目:基于JAVA技术的智能家居控制系统的设计(信息控制端的设计)院(系):软件学院专业年级:软件工程2007级姓名:张灿灿学号:071530214指导教师:鲍义东讲师2010年11月1日原创性声明本人郑重声明:本人所呈交的毕业论文,是在指导老师的指导下独立进行研究所取得的成果。毕业论文中凡引用他人已经发表或未发表的成果、数据、观点等,均已明确注明出处。除文中已经注明引用的内容外,不包含任何其他个人或集体已经发表或撰写过的科研成果。对本文的研究成果做出重要贡献的个人和集体,均已在文中以明确方式标明。本声明的法律责任由本人承担。论文作者签名:张灿灿日期:2010年11月1日关于毕业论文使用授权的声明本人在指导老师指导下所完成的论文及相关的资料(包括图纸、试验记录、原始数据、实物照片、图片、录音带、设计手稿等),知识产权归属平顶山学院。本人完全了解平顶山学院有关保存、使用毕业论文的规定,同意学校保存或向国家有关部门或机构送交论文的纸质版和电子版,允许论文被查阅和借阅;本人授权平顶山学院可以将本毕业论文的全部或部分内容编入有关数据库进行检索,可以采用任何复制手段保存和汇编本毕业论文。如果发表相关成果,一定征得指导教师同意,且第一署名单位为平顶山学院。本人离校后使用毕业论文或与该论文直接相关的学术论文或成果时,第一署名单位仍然为平顶山学院。论文作者签名:张灿灿日期:2010年11月1日指导老师签名:日期:基于JAVA技术的智能家居控制系统的设计(信息控制端的设计)摘要智能家居(SmartHome),又称智能住宅。它是以住宅为平台,兼备建筑、网络通信、信息家电、设备自动化,集系统、结构、服务、管理为一体的高效、舒适、安全、便利、环保的居住环境。与智能家居的含义近似的还有家庭自动化(HomeAutomation)、电子家庭(ElectronicHome、E-home)、数字家园(Digitalfamily)、网络家居(NetworkHome),智能家庭/建筑(Inte1ligenthome/building)等。智能家居也可以定义为一个系统。利用计算机技术、网络通讯技术、综合布线技术、将与家居生活有关的各种子系统,有机地结合在一起,通过统筹管理,让家居生活更加舒适、安全、有效。本文以智能家居广阔的市场需求为基础,选取家庭智能控制系统为研究对象。在对家庭楼宇自动化协议、嵌入式系统深入研究的基础上,采用Java技术为平台,成功开发了调速调光控制器、家用电器调节控制器等等各项功能。最后,对整个系统进行了大量的调试工作,包括软件仿真和系统连机调试,结果证明这种网络控制的方案是可行的。关键词:SmartHome,JAVA,J2me,智能家居TheDesignofsmarthomesystembasedonJAVA(theinformationcontroldesign)AbstractSmartHome,alsoknownasSmartResidential.Itisresidentialasaplatform,combiningarchitecture,networkcommunications,informationappliances,equipmentautomation,collectionsystem,structure,services,managementfortheintegratedhigh-performance,comfort,safety,convenience,environmentalprotection,livingenvironment.ThemeaningofintelligenthomeandweresimilartoHomeAutomation,ElectronicHome,Digitalfamily,NetworkHome,Inte1ligenthome/building.Intelligenthomecanalsobedefinedasasystem.Theuseofcomputertechnology,networkcommunicationtechnology,integratedwiringtechnology,homelifeandthevarioussubsystems,thecombinationofmanagement,throughco-ordination,sothathomelifemorecomfortable,safeandeffective.Drivenbylargemarketrequirements,wechosetheintelligenthomesystemasresearchcontentandtheembeddedsystemasresearchtool.Basedonin-depthstudyofhomeautomationandbuildingautomationprotocolandembeddemsystem,successfullydevelopedthemotordriverandlightingcontroller,vacuumtypedejectascollectingdeviceonhigh-speedtrain,palmercoderbasedonprotocol.Lightingcontrollerbasedonprotocol.Last,wehavacarriedoutalotofworktodebugthewholesystemincludingsoftwaresimulationandsystemonlinedebugging.Theresulthasprovedthattheschemeofthenetworkcontrolisfeasible.KeyWords:SmartHome,JAVA,J2me

目录PINGDINGSHANUNIVERSITY 11绪论 11.1引言 11.2研究的意义 11.3研究的内容 2系统介绍 21.3.2模块划分 32需求分析 42.1可行性分析 4技术可行性 4操作可行性 42.2系统性能需求 52.3系统功能需求 53系统总体设计 123.1技术总体分析 12移动客户端软件设计 123.1.2智能控制软件设计 173.1.3系统开发工具和环境 17智能家居平台系统的技术特点 183.2系统网络规划 193.3系统功能模块 193.3.1灯光控制 193.1.2信息家电控制 193.1.3信息家电控制器如何实现对空调的遥控 203.4系统工作原理 204智能家居系统功能 224.1家庭通信 224.2远程电器控制模块的模拟实现 235结论 24附录 25参考文献 28致谢 301绪论1.1引言随着社会的发展和科学技术的进步,数字网络生活时代已经到来,以家庭智能化、物业管理现代化和社区服务信息化为典型特征的智能社区也在悄然应运而生。住宅智能化是人类住宅的又一场新的革命。它能够为人们提供更加轻松、有序、高效的现代生活方式,是未来居住模式的必然发展趋势。随之而然,智能家居系统也在逐渐成为一个新兴的研究领域。智能家居提供的是一个具有高度安全性、生活舒适性和通信快捷性的信息化与自动居住空间。智能家居是指将家庭中各种与信息相关的通信设备、家用电器和家庭保安装置,通过家庭总线技术连接到一个家庭智能化系统(即家庭控制器)上,以实现监视、控制和家庭事务型管理,并保持这些设施与住宅环境的和谐与协调。智能家居系统能够在不改变家中任何家电的情况下,对家里的电器、灯光、电源、家庭环境进行方便地控制,使人们尽享高科技带来的简便而时尚的现代生活。将社会的信息化建设与小区的信息化、智能化建设有机地融合起来,充分利用已有的宽带网络,做到资源共享,达到节省投资、降低使用费用、方便物业管理,为用户提供尽可能多的高品质服务,已成为房产商、电信运营商、物业管理公司、城市公用事业公司和用户等几方共同关注的问题。自动化的智能家居不再是一幢被动的建筑,相反,成了帮助主人尽量利用时间的工具,使家庭更为舒适、安全、高效和节能。家居智能化技术起源于美国,网络系统中的各个设备均可实现资源的共享。因其布线简单、功能灵活,扩展容易而被人们广泛接受和应用。目前,已经有越来越多的机构和个人开始了对智能家居的研究。1.2研究的意义智能家庭控制系统是以HFC、以太网、现场总线、公共电话网、无线网的传输网络为平台,控制技术为技术平台,现场总线为应用操作平台,构成一个完整的集家庭通信、家庭设备自动控制、家庭安全防范等功能的控制系统。

智能家居控制系统的总体目标是通过采用计算机技术、网络技术、控制技术和集成技术建立一个由家庭到小区乃至整个城市的综合信息服务和系统,以此来提高住宅高新技术的含量和居民居住环境水平。

使人们享受到高科技带来的方便快捷的生活方式。人们的生活方式在逐渐加快,因此生活中就需要更为便捷的生活方式。智能家居就是在这种情况下应运而生的。人们需要通过一个按钮就可以实现对家具的控制,减少了原来需要寻找遥控器或者是开关等方式带来的不便。从而使人们的家更舒服,更方便。系统通常由系统服务器、家庭控制器(各种模块)、各种路由器、电缆调制解调器头端设备、交换机、通讯器、控制器、无线收发器、各种探测器、各种传感器、各种执行机构、打印机等主要部分组成。1.3研究的内容由于把系统分为客户端、服务器端和网络连接三个部分。而我主要负责客户端的操作。因此本文主要研究客户端中所实现的功能。由客户端发送控制信息,控制服务器端的家居状态,服务器受到控制信号之后,修改现在的状态,并把修改之后的状态返还给客户端。系统介绍使用J2me技术实现手机界面,以及家用电器的监视和控制、照明设备的监视、调节和控制、门的控制、窗帘的控制……并实现客户端与服务器端之间的通信。通过手机上的各个按钮控制发送信号,进而实现家居的开关控制。系统选用J2me技术开发基于手机平台的信息控制端软件。以发送数据信号的方式发送到控制端,实现控制家居设备的功能。J2me是sun公司针对嵌入式、消费类电子产品推出的开发平台,是一系列规范的集合,由JCP组织制定相关的JSR并发布,各个厂商会按照规范在自己的产品上进行实现,但是必须要通过TCK测试,确保兼容性。通过使用J2me中的无线网络开发技术实现手机客户端与系统终端的通讯。使用通用连接框架技术建立HTTP连接。使用servlet技术实现计算机之间的即时通讯。1.3.2模块划分主页面显示智能家居控制系统的字样,以及输入密码的输入框。密码输入成功则可以直接进入智能家居控制系统的主界面。如果密码输入错误,则需要重新输入。对密码的设定采用最大不能超过八个字符的简单定义来实现对系统安全的保护工作。密码输入成功则可以登陆控制家具的页面。根据房间的布局,把整个家庭分为三个模块。分别为客厅、厨房和卧室,对房间中的家居进行合理的分配,从而达到更高效的目的。同时为了方便修改密码。把修改密码的功能也和这三个控制页面一起,放入到了同一个界面中。下面介绍各个房间中能够控制的家用电器。客厅中能够控制的家用电器包括:防盗门、窗帘、吊灯、空调和电视。防盗门、窗帘和电视的控制分为两个分别是“开启”和“关闭”。吊灯的控制除了在“开启”和“关闭”的基础上增加了一个亮度调节的控制,用滑动条的形式来实现对温度的调解。根据空调的特性,给空调又增加了温度和湿度的控制。分别用两个滑动条来实现对家居的控制。厨房中能够控制的家用电器包括:灯、窗帘。厨房中的灯和窗帘的控制分为“开启”和“关闭”两个设置。卧室中能够控制的家用电器包括:床头灯、窗帘和吊灯。卧室中的床头灯和台灯一样在开启和关闭的基础上增加了对亮度调节的控制。窗帘则只有“开启”和“关闭”的功能为了方便人们的操作,增加了修改密码的功能。在卧室的下面就是改密的字样。点击确定按钮,则可以修改密码,键入新密码,返回密码修改成功的字样。无论何时何地,只要您想要控制家中家居的状态,拿起手机,进入到智能家居控制系统,选择要更改的房间,以及要控制的电器,选择之后点击发送按钮,就可以实现对家用电器状态的更改。空调和其它的模式则不同,不仅具有开和关的状态,还增加了温度的调节和控制。电灯的控制方式和空调的类似,在开和关控制的基础上增加了调解亮度的功能。使人们能够根据自己的喜好来调节亮度。丰富了人们选择的范围,使选择方式不再单一。

2需求分析为了方便后续工作的进行。减少开发过程中的工作量。在代码编写之前就要做好整个系统的规划工作。探讨系统的可行性。2.1可行性分析验证一个系统是否可行,需要从很多的方面着手分析。其中主要的内容包括:技术可行性、经济可行性和操作可行性三个方面。技术可行性系统采用J2me技术。使用J2me中特有的手机模拟器进行开发,实现对各种家具的控制。J2me技术规范定义了Java技术在资源有限制的设备中的表现形式。J2me主要适用于小型嵌入式设备,这些设备与PC或是服务器设备相比没有统一的硬件标准、外观与操作方式,其功用也是千差万别。但是J2me在使用于这些设备的同时也保留了Java的传统特性,即任何时间和任何地点的代码具有可移植性、部署灵活性、安全的网络传输性,以及代码稳定性。(1)在给定的时间内能够实现任务书中的功能。能够实现页面的跳转和以及对服务器端家电的控制。(2)从软件的质量方面来看,此软件运行速度较高,功能具备有实用价值。后期软件维护代价相应比较小。(3)软件的生产率较高。能在短时间内完成有效地工作。经济可行性此系统虽然需要依靠硬件来实现,但是开发成本相对较低。后期维护简单方便。如果能够实现,则能够取得可观的效益。收益远远大于支出,因此此项目在经济方面是可行的。操作可行性对于用户来说,能够使用该软件系统,能够方便人们的生活,使人们生活的环境更加的美观。墙面上不会再到处都是开关,同时也不用为了寻找遥控器而发愁。使用此系统,能够使人们的生活方式发生天翻地覆的变化。让人们享受科技带来的方便生活。在家中你可以拿起手机,选择要控制的家电,然后更改其开关状态,在户外也同样可以控制,实现家中和户外同等控制的功能,同时优化了无线网络传输过程中网络延迟带来的时间上的延迟,使人们在最短的时间内接收到服务器端返回的家居控制的信息。2.2系统性能需求智能家居控制系统是一个很有发展前景的系统。因此为了使本系统能够长期使用,必须使系统满足安全、稳定、可靠、高效的运行模式,生活水平的提高,伴随着生活质量的提高。同时人们生活的节奏也逐渐加快,怎样高速的完成任务就是我们要考虑的主要问题。因此系统应满足如下性能需求:(1)较强的扩展能力和通用性,此系统即能够满足一个家庭之间的通信,同时对一个小区来说也同样适用。由于这次我们主要研究的是控制家居这方面的内容,以后,我们还可以扩展此系统,加上远程通信、智能报警等等各项功能。(2)由于本系统的界面简单明了,因此人们很容易就学会操作。扩大了系统的用户群。为了提高人们的生活质量,本系统应运而生。在不改变人们生活住宅的情况下,有效的实现对家居的控制。使人们可以节约时间,享受生活。(3)系统的准确性和及时性系统处理的准确性和及时性是我们要考虑的主要问题。在控制家电的过程中,我们一定要确保对家居状态更改的准确而且及时。优化系统,使系统的反应能力和控制家居的能力满足用户多功能的需求。2.3系统功能需求项目主要实现用户对家用电器的控制,其中包括家居的开和关,以及其他的相关操作。客户端发送控制信息的请求,通过网络传输方式发送到服务器端,服务器端相应客户端的操作,然后再把结果返回给客户器端。其中家用电器的控制在开和关灯相关控制的基础上增加了智能调节控制。空调实现了用下拉框的形式开实现对湿度和温度的控制。进而为人们实现对家具的控制提供了方便。其中,系统交互图如下:客户端MIDlet客户端MIDlet发送消息和数据服务器Servlet处理登录请求处理登录请求处理登录请求Update_AccountUpdate_AccountList_AccountLogin_User图(1)客户端服务器端系统交互图对相关功能的描述如下:该系统共分为三个模块,分别为客厅、厨房和卧室。模块一:客厅中的家用电器主要包括:防盗门、窗帘、吊灯、空调和电视。实现对防盗门、窗帘的开关控制、对吊灯的开关操作以及亮度调节的控制、对空调的开关操作以及对室内温度和湿度的控制以及调节控制电视的开和关,等等一系列的操作。模块二:厨房中的家用电器主要包括:吊灯和窗帘。还是用下拉菜单实现对各个家电的开关控制。模块三:卧室中的家用电器主要包括:吊灯、窗帘和台灯。这个模块中的家具设计的虽然不是很多,但是也同样实现了家具的开关和家用电器的监制和控制。模块四:系统中为了保护使用者的权限,我们设置了密码登陆。首页的时候必须输入密码才能进入到智能家居控制系统中。在页面中增加了修改密码的功能。用户只需要输入新的密码,就可以完成对密码修改的工作。系统运行主界面如下所示:图(2)智能家居控制系统主界面键入密码“1234”之后点击菜单中的登陆按钮我们就可以进入到智能家居控制系统的页面。如果输入密码错误,则跳转到密码输入错误页面,重新输入密码,直到密码输入正确,则可以进入到控制页面。其中密码输入错误之后页面提示界面如下:图(3)密码提示界面输入密码正确之后,则可以进入到系统控制界面。其中包括:客厅、厨房、卧室和改密功能。其中,系统运行界面图如下所示:图(4)系统运行界面图客厅、厨房、卧室的布局都是类似的,现在我们选择以客厅为例:其运行界面图如下所示:图(5)客厅运行页面选择空调之后,我们可以选择其开关状态,以及温度和湿度的调节。然后发送数据,将要更改的信息通过网络发送到服务器端。由服务器端响应数据,然后将数据返回客户端。其控制图如下所示:图(6)运行界面如图所示

3系统总体设计本系统主要研究基于J2me的智能家居控制系统客户端的信息。运用J2me语言编写代码程序。通过硬件和软件相结合的方式来实现对家用电器的监制和控制。3.1技术总体分析软件总体设计是基于J2me平台开发智能家居系统的移动客户端和服务器端。J2me在小型化、可移植性方面有很多优势,是现在非常流行的程序设计语言。本系统是使用C/S网络结构并将GSM网络与互联网相结合的方式,在互联网上拥有独立的服务器,实现移动客户端与家庭主机之间的实时通信。3.1.1移动客户端软件设计在通信过程中,移动客户端与家庭系统模块是通过TCP协议建立的可靠连接。首先移动客户端和家庭系统模块之间建立Socket连接,家庭系统模块在端口上监听等待客户端连接。客户端连接之后,需要输入密码,密码正确后服务器端会开启一个线程为此客户通信,并将这个Socket连接保存到向量中。在客户端和家庭系统模块之间建立输入输出流。系统客户端总共设计了两个包,分别为familyClient和familyClient.NetWork。其中,familyClient包中包含了六个类,分别为ControlCanvas.java、FamilyList.java、MainMID.java、MenuCanvas.java、MidPlayer.java和PassWordCanvas.java。而familyClient.NetWork包中则是留了两个接口分别问send()和recived()两个接口。其中ControlCanvas类中使用低级用户Canvas来设置用户界面按钮,实现代码如下:privateCommandCmd_Back; privateCommandCmd_Send;Cmd_Back=newCommand("返回",Command.BACK,1); Cmd_Send=newCommand("发送",Command.OK,1);由于程序中对于空调、电灯等的控制除了开和关的控制之外,增加了滑动条,因此,在这儿也对滑动条进行了定义。privateintON_OFF_NUM=0;//开关键参数 privateintROLL=100;//滚动条参数 privateintDOU_ROLL=100;//第二个滚动条参数页面中的背景图片都是在画布中实现的,因此这就需要使用绘制图片的功能。其调用的代码如下:if(Fl.getBackImage()!=null){ g.drawImage(Fl.getBackImage(),0,0,Graphics.TOP|Graphics.LEFT); } if(Type==ControlCanvasType_STYLE_ON_OFF){ //开关样式 draw_On_Off_String(g,getWidth()/5,getHeight()/3); }elseif(Type==ControlCanvasType_STYLE_ROLL){ //滚动样式 draw_roll_Style(g); }elseif(Type==ControlCanvasType_STYLE_DOUBLE_ROLL){ //双滚动条样式 draw_doubleroll_Style(g);开启和关闭按钮同样也是在画布上实现的,对于位置通过锚点来控制它们具体的方位,锚点的作用就是设置占用屏幕矩形方块的具体位置。为了区别按钮我们把按钮的颜色也画了出来。对于按钮颜色的定义使用setColor()方法来对其进行定义。在Graphics中还提供了对字体控制的方法。每个Graphics都有一个Font对象与其关联,来进行文字的渲染操作,调用其类方法setFont(null),即可使字体恢复到默认状态。使用staticFontgetFont(intface,intStyle,intsize)来获得一个对象以表示字体所具有制定的外观。使用的均为最大字体。Face参数,用来定义字体的外观。其中使用到的Font类定义的外观常数如下:StaticintFACE_PROPORTIONAL:“比例”字体外观,数值64被制定给此数。Style参数,用来定义字体的样式。在这个类中使用到Font类定义的样式参数如下:StaticintSTYLE_PLAIN:格式常数“常规”,数值0被制定给此常数。StaticintSTYLE_BOLD:格式常数“加粗”,数值1被制定给此常数。FamilyList类中定义了对智能家居控制系统的集中选择。其中包括对title、选中菜单的定义。还有上面讲述的对按钮的定义。由于在选择的时候有音效因此在这个类中队音效这个方法进行了调用。调用如下:MidPlayermp=newMidPlayer(); mp.sound();对于画布的绘制包含对颜色、锚点以及字体大小位置等的设置。同时在键盘中添加了快捷键。其中,程序中使用到的方法如下所示: if(BackImage!=null){ g.drawImage(BackImage,0,0,Graphics.TOP|Graphics.LEFT); } for(inti=0;i<ITEMS.length;i++){ Fontfnt=Font.getDefaultFont(); if(i!=SeletedItem){fnt=Font.getFont(Font.FACE_PROPORTIONAL,Font.STYLE_PLAIN, Font.SIZE_LARGE); g.setFont(fnt); g.setColor(0x0022AA); g.drawString(ITEMS[i],pointX,BaseY+i*30,Graphics.TOP|Graphics.LEFT); }else{fnt=Font.getFont(Font.FACE_PROPORTIONAL,Font.STYLE_PLAIN|Font.STYLE_BOLD,Font.SIZE_LARGE); g.setFont(fnt); g.setColor(0xAA2200);g.drawString(ITEMS[i],pointX,BaseY+i*30,Graphics.TOP|Graphics.LEFT); g.drawRect(pointX-5,BaseY+i*30, ITEMS[i].length()*12+13,20);//画选中框 } } }在程序中画图,必须定义基点。即横坐标和纵坐标的基点如下:intpointX=40; intBaseY=40;MainMID类中定义了系统的初始界面。在这个类中定义了系统的注册界面以及密码页面。使用以下按钮来实现对屏幕的控制。Cmd_Exit=newCommand("退出",Command.EXIT,2); Cmd_Submit=newCommand("登入",Command.SCREEN,1); Cmd_Back=newCommand("回删",Command.BACK,1);本程序中为了方便操作,将系统原始密码设定为“1234”其中使用到的代码如下所示:f(rs.getNextRecordID()==1){byte[]psw={'1','2','3','4'}; rs.addRecord(psw,0,psw.length);MenuCanvas类中定义了背景颜色、文字的初始高度以及滚动条显示与否。程序中定义了客厅、厨房、卧室以及改密功能。其中定义类型如下所示: privateString[]SELECT_ITEM={"客厅","厨房","卧室","改密"};对于重绘Canvas。需要获取屏幕的高度和宽度。获取内容如下所示: intwidth=g.getClipWidth(); intheigh=g.getClipHeight();背景和滚动条都需要在屏幕中画出来。其中对于屏幕的绘制实现方法如下所示: g.setColor(Color_BackLine); g.drawRect(0,0,width-1,heigh-1); g.setColor(0xFFFFFF); Fontfnt=Font.getDefaultFont(); fnt=Font.getFont(Font.FACE_PROPORTIONAL,Font.STYLE_BOLD, Font.SIZE_LARGE); g.setFont(fnt); drawLoadingBar(g);//画滚动条 drawMenus(g,width,heigh);MidPlayer类中实现的方法是音效的实现。使用MMAPI进行音效开发,首先需要导入相关的开发包,importjavax.microedition.media.Manager;importjavax.microedition.media.MediaException;importjavax.microedition.media.Player;importjavax.microedition.media.PlayerListener;创建一个Player对象的方式,从InputStream中读取指定路径的数据源或者DataSource和InputStream类型的数据源,分别返回一个Player,当一个Player对象被创建后,使用Player接口的Start()方法就会尽可能快地启动数据的播放,当数据播放完毕后,Player会自动关闭。从InputStream中读取数据源并创建Player,具体代码如下: publicvoidsound(){ PlayermusicPlayer=null; try{ InputStreamis=getClass().getResourceAsStream("/Audio.wav"); musicPlayer=Manager.createPlayer(is,"audio/X-wav"); musicPlayer.prefetch(); musicPlayer.start(); }catch(IOExceptionex){ }catch(MediaExceptionex){ } }PassWordCanvas类实现对密码的修改和控制。其中textfield实现对TextField进行实例化。以及对密码的控制。对背景颜色值以及背景线条颜色值进行控制。颜色控制代码如下所示: privateintColor_Background=0x000000;privateintColor_BackLine=0xFFFFFF;程序使用低级界面局必须要继承Canvas这个抽象类,Canvas是Displaysble的直接子类,属于J2me中的低级API。Canvas的核心就是paint()这个方法,这个方法主要是负责绘制屏幕上的画面。每当屏幕需要绘制时,就会产生重绘事件,系统就会自动调用paint(),并传入一个Graphics对象。而调用reapaint()方法来产生重绘事件的方法是需要四个参数,分别用来指示起始坐标(X,y)和长度,另一个则不需要任何参数,代表整个画面重新绘制。绘制的代码如下所示: protectedvoidpaint(Graphicsg){ intwidth=g.getClipWidth();//获取Canvas宽度 intheigh=g.getClipHeight();//获取Canvas高度g.setColor(Color_Background); g.fillRect(0,0,width-1,heigh-1); g.drawImage(back,0,0,Graphics.TOP|Graphics.LEFT); g.setColor(Color_BackLine); g.drawRect(0,0,width-1,heigh-1); Fontfnt=Font.getDefaultFont(); fnt=Font.getFont(Font.FACE_PROPORTIONAL,Font.STYLE_BOLD, Font.SIZE_LARGE); g.setFont(fnt); g.setColor(0x0011CC); g.drawString(MainMID.TITLE,getWidth()/6+10,10,Graphics.TOP |Graphics.LEFT);//画标题 g.setColor(0x00AADD); g.drawString("密码:",25,222,Graphics.TOP|Graphics.LEFT); if(change_PSW_Success){ g.drawString("密码修改成功",20,80,Graphics.TOP|Graphics.LEFT); }drawWords(g);}当客户端向服务器端发送控制信号时,家庭系统模块将接受的信息向向量中所以的连接进行广播,使每个用户都能接收到该用户发出的信息。在智能家居控制方面在客户端设计独立的控制界面使客户更容易的完成对家电的控制。该系统的另一个亮点是在客户端可以实现影音娱乐,通过流媒体播放存储在家庭系统模块的web服务器上。客户端程序结构图如下所示:客户端程序主界面客户端程序主界面影音娱乐连接web服务器家电控制家庭系统模块图(7)客户端程序结构图智能控制软件设计家庭系统模块建立两个Socket连接的服务器端,分别对应串口通信接口和移动客户端,并为之服务。处理客户端发送的信息,通过串口向单片机发送控制指令,完成客户端对家电的控制,同时接收来自单片机发送的采集信息,将信息反馈给移动客户端。该部分在整个系统中起到桥梁和纽带的作用,是智能家居系统的核心。连接客户端和服务器端。系统开发工具和环境本系统对环境要求不高,需要一些基本的硬件,以及两台电脑。其中装有集成Eclipse3.2、jdk-1.5以及sun.java.2_5_2。因此成本较低。是用虚拟器的形式来实现对家居的控制。通过客户端发送给信息等待服务器端来响应。利用Java的无线应用技术,结合J2me和J2ee平台,设计出健壮、高效的企业级无线应用程序。应用java无线应用技术设计和实现智能家居控制系统。该系统是桌面型客户管理系统在智能移动终端上的扩展。由于基本不具备自主开发能力,即使设计完成以后,用户通常也不能对其中的程序功能进行修改,必须有一套开发工具和环境才能进行开发。开发时往往有主机和目标机的概念,主机用于信息的收发,目标机作为最后的执行机,开发时需要交替结合进行。为了适应网络发展的要求,未来的嵌入式设备必然要求硬件上提供各种网络通信接口。传统的单片机对于网络支持不足,而新一代的嵌入式处理器已经开始内嵌网络接口,除了支持TCP/IP协议,还有的支持IEEE1394、USB、CAN、Bluetooth或IrDA通信接口中的一种或者几种,同时也需要提供相应的通信组网络协议软件和物理层驱动软件。软件方面系统内核支持网络模块,甚至可以再设备上嵌入Web浏览器,真正实现随时随地用各种设备上网。嵌入式设备能与用户亲密接触,最重要的因素就是它能提供非常友好的用户界面。图像界面,灵活的控制方式,使得人们感觉嵌入式设备就像是一个熟悉的老朋友。这方面的要求使得嵌入式软件设计者要在图形界面,多媒体技术上痛下苦功。手写文字输入、语音拨号上网、收发电子邮件以及彩色图形、图像都会使使用者获得自由的感受。目前一些先进的PDA在显示屏幕上已实现汉字写入、短消息语音发布,但一般的嵌入式设备距离这个要求还有很长的路要走。3.1.4智能家居平台系统的技术特点智能家庭网络随着集成技术、通信技术、互操作能力和布线标准的实现而不断改进。它涉及到对家庭网络内所有的智能器具、设备和系统的操作、管理,以及集成技术的应用。其技术特点表现如下:1.通过家庭网关及其系统软件建立智能家居平台系统家庭网关是智能家庭局域网的核心部分,主要完成家庭内部网络各种不同通信协议之间的转换和信息共享,以及同外部通信网络之间的数据交换功能,同时,网关还负责家庭智能设备的管理和控制。2.统一的平台用计算机技术、微电子技术、通信技术,家庭智能终端将家庭智能化的所有功能集成起来,使智能家居建立在一个统一的平台之上。首先,实现家庭内部网络与外部网络之间的数据交互;其次,还要保证能够识别通过网络传输的指令时合法的指令,而不是“黑客”的非法入侵。因此,家庭智能终端既是家庭信息的交通枢纽,又是信息化家庭的保护神。3.通过外部扩展模块实现与家电的互联为实现家用电器的集中控制和远程控制功能,家庭智能网关通过有线或无线的方式,按照特定的通讯协议,借助外部扩展模块控制家电或照明设备。4.嵌入式系统的应用以往的家庭智能终端绝大多数是由单片机控制。随着新功能的增加和性能的提升,将处理能力大大增强的具有网络功能的嵌入式操作系统和单片机的控制软件程序作了相应的调整,使之有机地结合成完整的嵌入式系统。3.2系统网络规划当前大多数新建小区都安装了智能小区管理系统,通信总线一般采用RS-485或CAN总线灯。我们的设想是能够利用现有的总线通信,将家庭网络控制系统内嵌于智能小区管理系统之内。以其达到节约布线投资、实现系统高度集成的目的。在减少不必要开支的同时,还节约了综合布线的时间。系统网络采用无线控制传输系统实现家居之间的交互和通信。3.3系统功能模块灯光控制无线射频灯光控制系统由智能面板开关和调光器组成,调光器用以发送和接收命令信号,命令通过无线电传播,而不是通过家庭的电源线路传输。每个面板开关都备有一个不同的遥控识别代码。这些代码利用19位识别技术,使接收器能准确辨别每个指令。即使邻居同时使用,也绝对不会因其遥控器干扰而发生传输错误。调光开关同样内置RF无线射频发射器,能独立于遥控器或移动开关之外,控制落地灯或桌灯的开关或随意调节灯光亮度。减少干扰,传送或接收指令更加准确无误。3.1.2信息家电控制信息家电控制是一个整合了红外控制和无线控制的多功能遥控系统。它可以控制多达五种红外设备(如:电视机、空调、DVD、功放、窗帘等)和开关、插座等无线设备。信息家电控制系统主要由信息家电控制器和各种智能遥控开关组成。信息家电控制器可以把普通红外电器的遥控器的编码通过学习的方式转存下来从而替代原有的家电遥控器。同时它本身还是无线遥控器,可以发射433.92MHz频率的控制信号,所以它可以控制这个频段的智能开关、智能插座以及无线红外转发器等。信息家电控制器如何实现对空调的遥控空调的红外编码和其他家电的红外编码有很大区别,空调遥控器上每一个按键所对应的红外编码不是固定的。比如按下温度增加或减少的按键,它并不是简单地发送一个固定的温度增加或减少的红外编码,而是向空调发送一个当前工作状态的编码(这个编码包含空调当前是多少度)。所以信息家电遥控器不能只是简单地学习空调遥控器上的几个按键来实现对空调的完全控制。用户只能通过学习空调比较常用的工作状态来达到控制空调的目的。3.4系统工作原理系统由多个类构成。需要客户端通过网络发送对家居的控制。服务器端接收到客户端发送的信息,然后再返回给客户端。本系统是基于HTTP网络的用于智能家居环境中的一种远程自动控制系统。其工作原理为:用户通过自身的手机发出命令请求,在家值守的家庭系统模块接收信息并对信息进行处理,把处理结果通过串行总线传输到单片机上,单片机根据信息调制出相应的红外频率控制相应的设备,完成用户给出的命令。并把最终的控制结果返回给客户端。客户端与服务器端交互图如下:Login_UserLogin_UserLogin_UserLogin_User客户端MIDlet发送消息和数据服务器Servlet处理登录请求处理登录请求处理登录请求图(8)客户端与服务器端交互图系统工作原理图如下服务器服务器类类网络客户端图(8)系统工作原理图各个程序之间通过方法和类的调用来建立关联。选择登陆智能家居控制系统,该界面实现内容主要包含在MainMID这个类中,其中需要键入密码,同时如果密码输入错误,也可以对密码再进行修改。直至密码输入正确。则会跳入到下一个页面。下一个页面则是家具的控制页面。选择所要控制的家具类型,进入相应的房间之后,我们就可以选择要控制的家电类型来实现对家居的控制。然后通过网络连接将要发送的数据发送到服务器端。等待服务器端做出响应。

4智能家居系统功能客户端完成的主要功能包括对家居的控制。通过客户端发送控制信息通过网络传送到服务器端,再由服务器端返回给客户端。进而实现对家居的控制。其中,系统功能结构图如下所示:信息发送端信息发送端用户登录信息发送信息接收家具控制用户注册修改密码发送控制信号接收返回信息房间选择家居选择家居状态选择图(9)系统功能结构图4.1家庭通信智能家庭控制系统的主要功能包括家庭通信、家庭设备自动控制和远程控制三个方面。

主要考虑远程控制这些方面。由于人们生活水平的提高,人们对生活模式的要求也越来越高,因此智能家居主要致力于改变人们的生活模式,使人们的生活更加的简单方便。使用户不管在任何地方都能够随心所欲的控制家居。使家居满足人们的要求。因此如何更人性化的设计智能家居使它能够满足人们的需求。这就是我们要考虑的问题。由手机端发送控制信息,控制服务器端的家电设备,然后由服务器端响应,将响应的信号返回客户端。进而完成对家居的控制。4.2远程电器控制模块的模拟实现用无线通信方式进行家电的控制灵活性较强、覆盖范围较广,免去了综合布线的费用和精力,缺点是家庭内部要有家庭网关和无线路由路,接收端还要有响应的接收装置,成本较高。因此,基于实用性和大众化方面考虑,本文所研究的家电控制器的控制采用I/O控制。家电的本地集中控制硬件设计是利用嵌入式系统的I/O口对家用电器的用电进行控制。系统通过S3C2410的I/O口输出高低电平来进行控制,同时用发光二极管指示家用电器工作状况。发光二极管,表示家用电器通电,发光二极管灭,表示家用电器断电。由于被控模块家用电器大多使用220V交流电,属于强电电路,所以使用继电器控制家电。在芯片与继电器中间加驱动电路。驱动电路可以利用光电耦合的通、断去控制继电器的开与关。也可以利用三极管的饱和与截止去控制继电器的开与关,这里采用三极管方式。当I/O口引脚输出低电平时,三极管饱和导通。

5结论经过充分的调查和对大量资料的研究,分析了智能家居的现状和发展趋势,并考虑到我国的经济发展和人们生活水平的不均衡等特点,利用GPRS移动通信网络,以及嵌入式技术结合蓝牙无线通信技术,安全可靠,性能稳定的智能家居控制系统。同时本系统除用于家庭设备远程自动控制外,还可用于家庭通信、家庭娱乐,共同组建智能家居控制系统。开发充分利用了j2me技术中所提供的API,以及高效的编程。不仅适应了嵌入式系统的软硬件资源受限的特点,而且使得程序的运行速度有所提高。目前该系统在模拟系统中正常运行,实现了目前市场上智能家居系统中最重要的组成部分——智能家居终端的大部分功能。在此基础上,今后的研究工作将从以下方面进行深入:一方面是增加智能家居终端控制家电设备的种类,这需要对协议进行扩展;另一方面使用户能够通过更多途径方案进行远程控制,例如,手机短信控制也是一种方案;第三,考虑到嵌入式系统硬件资源受限,还需要就某些功能的实现代码进行进一步优化,例如,可通过考虑将多进程改为多线程来减少进程的创建和切换的开销等。

附录ControlCanvas类主要代码如下所示:publicControlCanvas(FamilyListfl,Displaydisplay,intType,inti){ index=i; Fl=fl; this.Type=Type;//页面样式 this.display=display; Cmd_Back=newCommand("返回",Command.BACK,1); Cmd_Send=newCommand("发送",Command.OK,1); addCommand(Cmd_Back); addCommand(Cmd_Send); setCommandListener(this);//设置功能键侦听器 setTitle(Fl.getItemString(index));//设置标题 try{ selectImage=Image.createImage("/select.png"); }catch(IOExceptione){ e.printStackTrace(); } }protectedvoidpaint(Graphicsg){ //画背景图片 if(Fl.getBackImage()!=null){ g.drawImage(Fl.getBackImage(),0,0,Graphics.TOP|Graphics.LEFT); } if(Type==ControlCanvasType_STYLE_ON_OFF){ //开关样式 draw_On_Off_String(g,getWidth()/5,getHeight()/3); }elseif(Type==ControlCanvasType_STYLE_ROLL){ //滚动样式 draw_roll_Style(g); }elseif(Type==ControlCanvasType_STYLE_DOUBLE_ROLL){ //双滚动条样式 draw_doubleroll_Style(g); } }FamilyList类中的主要代码如下所示:publicFamilyList(Displaydisplay,Canvascv,Stringtitle,String[]items, ImagebackImage){ Title=title; setTitle(Title);//设置标题 setLastPage(cv); this.display=display; //音效 MidPlayermp=newMidPlayer(); mp.sound(); ITEMS=items; BackImage=backImage; Cmd_Back=newCommand("返回",Command.BACK,1); Cmd_OK=newCommand("设置",Command.OK,1); addCommand(Cmd_Back); addCommand(Cmd_OK); setCommandListener(this);//设置功能键侦听器privatevoiddrawItems(Graphicsg){ //画背景图片 intpointX=40;//横坐标固定点 intBaseY=40;//纵坐标固定基点 if(BackImage!=null){ g.drawImage(BackImage,0,0,Graphics.TOP|Graphics.LEFT); } for(inti=0;i<ITEMS.length;i++){ Fontfnt=Font.getDefaultFont(); if(i!=SeletedItem){ fnt=Font.getFont(Font.FACE_PROPORTIONAL,Font.STYLE_PLAIN, Font.SIZE_LARGE); g.setFont(fnt); g.setColor(0x0022AA); g.drawString(ITEMS[i],pointX,BaseY+i*30,Graphics.TOP |Graphics.LEFT); }else{ fnt=Font.getFont(Font.FACE_PROPORTIONAL,Font.STYLE_PLAIN |Font.STYLE_BOLD,Font.SIZE_LARGE); g.setFont(fnt); g.setColor(0xAA2200); g.drawString(ITEMS[i],pointX,BaseY+i*30,Graphics.TOP |Graphics.LEFT); g.drawRect(pointX-5,BaseY+i*30, ITEMS[i].length()*12+13,20);//画选中框 }MainMID类中的代码如下所示:privatevoidinitAlert(){ alert=newAlert("密码错误","请输入正确的密码!",null,AlertType.ALARM); alert.addCommand(newCommand("退出",Command.CANCEL,2)); alert.addCommand(newCommand("返回",Command.BACK,1)); alert.setCommandListener(newCommandListener(){ publicvoidcommandAction(Commandc,Displayabled){ if(c.getLabel().equals("返回")){ dp.setCurrent(pwc); } if(c.getLabel().equals("退出")){ Close();//关闭程序 }MenuCanvas类中的主要代码如下所示:protectedvoidpaint(Graphicsg){ intwidth=g.getClipWidth();//获取Canvas宽度 intheigh=g.getClipHeight();//获取Canvas高度 //填充背景 g.setColor(Color_Background); g.fillRect(0,0,width-1,heigh-1); g.drawImage(back,0,0,Graphics.TOP|Graphics.LEFT); g.setColor(Color_BackLine);g.drawRect(0,0,width-1,heigh-1); g.setColor(0xFFFFFF);Fontfnt=Font.getDefaultFont(); fnt=Font.getFont(Font.FACE_PROPORTIONAL,Font.STYLE_BOLD, Font.SIZE_LARGE); g.setFont(fnt); drawLoadingBar(g);//画滚动条 drawMenus(g,width,heigh);privatevoiddrawMenus(Graphicsg,intwidth,intheigh){ if(isLoadingComplete){ int[]pos=setStringRectPosition(width,heigh); for(inti=0;i<SELECT_ITEM.length;i++){ Fontfnt=Font.getDefaultFont(); if(i==NOW_ITEM){ g.setFont(fnt); g.setColor(0xAA2200); g.drawString(SELECT_ITEM[i],pos[0]-1,pos[1]*(i+3), Graphics.TOP|Graphics.LEFT); }else{ g.setColor(0x0022AA); fnt=Font.getFont(Font.FACE_PROPORTIONAL, Font.STYLE_PLAIN,Font.SIZE_LARGE); g.setFont(fnt); g.drawString(SELECT_ITEM[i],pos[0],pos[1]*(i+3), Graphics.TOP|Graphics.LEFT);MidPlayer类中的主要代码如下所示:publicvoidsound(){ PlayermusicPlayer=null; try{ InputStreamis=getClass()

温馨提示

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

评论

0/150

提交评论