基于java的智能家居控制系统的设计毕业设计内容摘要:

庭网络无需人工参与,网络设置可自动完成。 (2) MIDP MIDP 定义了一套完整的用户界面接口,全部定义在 . lcdui 包中。 MIDP 用户界面程序包的核心抽象是类 Displayable。 根据用户的交互,应用程序在完成任务的每一步不断设置和重设在 Display 对象上的当前Displayable 对象。 用户任务(指与用户界面的交互)通过 Command 对象来实现。 当用户选择了一个 Command 对象之后,应用程序自动获得通知。 作为反馈,应用程序经常改变当前的 Displayable 对象,把另一个 Displayable 作为当前值。 设备软件管理了本地应用程序和 MIDP 应用程序之间的物理显示资源的共享。 Displayable 的子类有两种: Canvas:允许应用程序进行图形处理和输入处理的底层对象。 Screen:封装了完整的用户界面组件(类 Alert、 List、 TextBox、Form)的高层对象。 List:允许从一个预定义的选择集中选择。 TextBox:是一个拥有可控制编辑方法的平坦文本编辑器。 Alert:显示临时信息或者简单选择问询。 Form:更宽泛的容器,允许显示多个密切相关的叫做 Item 的用户界面元素。 小结 本章通过对系统的结构、工作原理等各方面的设计,对系统的流程以及系统所要完成的功能都有了较为深入的了解。 为人们掌握智能家居的使用方法了解智能家居奠定了坚实的基础。 13 4 系统详细设计与实现 数据存储 在 MIDP 规范中,提供了记录管理系统( Record Management System, RMS),这个记录管理系统就是一个小型简单的数据库管理系统( Database Management System),除了能用于管理系统储存的资料之外,也可以用于存储对象的状态信息。 RMS 是 J2me 的一个重要的子系统,目的是实现应用程序本地数据的持久性存储。 RMS 是管理数据的系统, Record(记录)是系统中最重要的实体。 在移动设备存储空间存储的并不是字段,而是字节数组。 RMS 的职责是存储和唯一标识记录,而表示数据的任务是由应用程序来完成的。 这样做的目的是简化 MIDP的实现,使得 J2ME 的子系统尽量的小巧、灵活。 Record Store(记录仓储)是一系列的有序集合,记录是不能单独存在的,必须属于记录仓储。 记录仓储保证记录的读写操作都是原子的,数据不会被破坏。 在 API 中记录仓储是由 实现的。 每条记录代表了一条数据信息。 一条记录由一个整型的 RecordID 与一个代表数据的 byte[]数组两个子元素组成。 RecordID 是每条记录的唯一标识符,利用这个标识符可以从记录仓储中找到对应的一条记录。 其中 RMS 所使用的空间图如图所示: R e c o r d S t o r eR e c o r dR e c o r dR e c o r d I D D a t aR e c o r d I D D a t a 图( 3) RMS 空间图 基于 JAVA的智能家居系统的设计 —— 信息控制子系统 14 系统中对密码的存储是通过 RMS 进行实现的。 首先要在系统中使用 RMS,首先需要定义 RMS 的名称。 在系统中定义的 RMS 的名称是 RMS_NAME,然后 对它进行实例化,使用 rs=openRSAnyway(RMS_NAME)来 进行。 要写入密码,首先就需要打开 RMS,使用 rs= (rsname, ture)函数,然后 returen rs;即可实现。 密码写入之 后则需要关闭仓储,使用 rs= (rsname)来实现。 系统中输入密码的时候要验证密码输入是否正确,这个时候也需要用到仓储。 首先需要用函数 (RMS_NAME, ture)来打开仓储和仓储中存储的数据进行比对,然后调用相应的函数来验证。 系统功能的设计与实现 该智能家居控制系统实现了以下几个功能:登陆、客厅模块、厨房模块、卧室模块和改密等一系列的功能。 下面将对以下几种功能进行详细的论述。 客户 端完成的主要功能包括对家居的控制。 通过客户端发送控制信息通过网络传送到服务器端,再由服务器端返回给客户端。 进而实现对家居的控制。 其中,系统功能结构图如下所示: 用 户 登 录修改密码发送控制信息接收控制信息家具状态选择房间选择信 息 发 送 卧 室用户登录家具选择信 息 发 送 端信 息 接 收图 ( 4) 系统功能结构图 登录功能的详细设计 登录功能是为了保证用户信息的安全, 因此在智能家居控制系统的首页需 15 要键入密码, 键入密码之后,则需要点击菜单按钮,然后点击登入按钮, 如果密码输入正确之后才能进入智能家居控制系统。 如果密码输入错误,则会返回一个页面,提示密码输入错误,请重新输 入。 系统名称的实现:系统标题“智能家居控制系统”首先需要使用 title 来定义系统名称。 实现方法如下: public static String TITLE=“ 智能家居控制系统 ” ;其中要设计它的位置,则需要使用锚点来实现, 锚点的作用就是设置占用屏幕矩形方块的具体位置。 实现方法如下: (Main MID. TITLE,getWidth() /6+10,10,|)。 字体的实现方法每个 Graphics 都有一个 Font 对象与其关联,来进行文字的 渲染操作,调用其类方法 setFont(null),即可使字体恢复到默认状态。 使用 static Font getFont (int face, int Style, int size)来获得一个对象以表示字体所具有制定的外观。 使用的均为最大字体。 Face 参数,用来定义字体的外观。 其中使用到的 Font 类定义的外观常数如下: Static int FACE_PROPORTIONAL: “比例”字体外观,数值 64被制定给此数。 Style 参数,用来定义字体的样式。 在这个类中使用到 Font 类定义的样式参数如下: Static int STYLE_PLAIN: 格式常数“常规”,数值 0 被制定给此常数。 Static int STYLE_BOLD: 格式常数“加粗”,数值 1被制定给此常数。 首页显示图片的实现方法:首先需要构建画布,使用 back = Image. createImage(“/”) 来实现对画布 图片 的载入。 用低级用户界面 Canvas 实现智能家居控制系统中按钮的设置。 其中对按钮的定义操作包括: private Command Cmd_Back。 private Command Cmd_Send。 按钮实现的方法包括: Cmd_Back = new Command(返回 , , 1)。 Cmd_Send = new Command(发送 , , 1)。 密码键入中文本框的实现则通过 TextField 类来实现。 TextField 类用于带约束的文本类型输入。 密码的设置要求输入密码的最大值为 8 个字符。 因此对密码的限制要求是 32 位。 首先要对 TextField 进行后台的实例化,然后设置这个文本框所在的位置,以及位数。 实现方法是 textfield=new TextField(“” , “”,8,| ); 输入密码之后要获取 TextField基于 JAVA的智能家居系统的设计 —— 信息控制子系统 16 中的文本,使用方法是 (str)。 来实现。 密码框的画法包括对颜色、字数的限制。 其中对颜色的控制方法是调用 setColor()方法来设置字体的颜色。 使用 ()方法来设置矩形的边框。 Fillrect()方法则表示使用指定的画刷来填充矩形。 系统运行界面如下所示: 图( 5)系统运行界面 PassWordCanvas 类主要 包含 TextField 子类,首先要对 TextField 在后台进行实例化, TextField 是用于带约束的文本类型输入。 textfield = new TextField(, , 8, | )。 // 后台TextField 实例化。 其中还包括对登录界面中字体颜色、背景等方面的设计。 键入密码“ 1234”之后点击菜单中的登陆按钮我们就可以进入到智能家居控制系统的页面。 如果输入密码错误,则跳转到密码输入错误页面,重新输入密码,直到密码输入正确,则可以进入到控制页面。 密码错误界面的实现方法如下:使用 Screen 类的子类 Alert 来实现临时信息的显示。 密码输入错误,则跳转进入密码错误界面,实现方法是 initAlert()方法。 其中显示文字的实现方法是alert= new Alert(“ 密码错误 ” , “ 请输入正确的密码。 ” , null,) ; 控 制 按 钮 的 实 现 方 法 是 : (new Command(“ 退出 ” , ,2))。 (new Command(“ 返回 ” , ,1))。 文字显示的位置也是通过锚点来实现。 其中密码输入错误之后页面提示界面如下: 17 图( 6)密码键入错误 要实现对该页面的设计,首先需要填充背景的颜色,画出背景的边框、标题等。 要通过确定锚点来实现对功能的定位。 而键入的密码则存储在仓储中。 通过调用 getNextRecordID()方法来 验证键入的密码是否正确。 如果密码输入错误,则会调用 initAlert()方法将“密码错误,请输入正确的密码”返回给用户。 如果密码输入错误,我们可以选择回删按钮,调用 deleteOneChar()方法来删除字符。 最终输入正确的密码后, 调用 IntoSystem()方法进入系统。 家居状态的详细设计 密码键入成功之后,就会自动跳转到家居的控制页面。 选择客厅点击开始按钮,就会进入到家具的选择页面。 其中包括:防盗门、窗帘、吊灯、空调和电视的控制。 防盗门、窗帘和电视的状态包括开启和关闭两种状态。 另外吊灯在开 启和关闭的基础上另外增加了对亮度的控制。 空调则是在开启和关闭的基础上增加了对湿度和温度的调节和控制。 输入密码正确之后,则可以进入到系统控制界面。 其中包括:客厅、厨房、卧室和 修改密码 功能。 其中,这几个模块在页面中的显示方法是通过数组的形式来定义的。 定义方法是 private String[] SEECT_ITEM = {“客厅”,“ 厨房 ”,“ 卧室 ”,“ 修改密码 ” },然后通过 if 语句来实现对文本框现在所在位置的确定。 Fnt= 基于 JAVA的智能家居系统的设计 —— 信息控制子系统 18 (,|, )。 这里实现了对字体的定义 , 然后调用 setFont()函数来实现。 欢迎回到温暖之家这几个字的实现方法如下: (0x0011CC)最终显示的字体为蓝色。 确定位置所使用的函数是 (“ 欢迎回到温暖之家 ” ,getWidth()/6+10,10,|),确定屏幕中这几个模块所在的位置, 使用 Graphics 类提供的绘图来实现。 实现方法为(fnt)。 (0xAA2200)。 (SELECT_ITEM[i], pos[0] 1, pos[1] * (i + 3), | )。 其中,系统运行界面图如下所示: 图( 7)家居状态选择界面 客厅、厨房、卧室的布局都是类似的,现在我们选择以客厅为例 ,客厅中的家居包括:防盗门、窗帘、吊灯、空调和电视。 这几个家居的实现方法和上面我们实现的方法类似, 但是在文本上增加了矩形方框的设计。 选 择客厅调用FamilyList 函数 in=new FamilyList(display,this, “ 客厅 ” ,stringArray, (“ ” ))。 使用 void drawRect()函数来实现。 其运行界面图如下所示: 19 图 ( 8) 客厅运行页面 (1) 对灯光的控制包括: 无线射频灯光控制系统由智能面板开关和调光器组成,调光器用以发送和接收命令信号,命令通过无线电传播,而不是通过家庭的电源线路传输。 每个面板开关都备有一个不同的遥控 识别代码。 这些代码利用 19 位识别技术,使接收器能准确辨别每个指令。 即使邻居同时使用,也绝对不会因其遥控器干扰而发生传输错误。 调光开关同样内置 RF 无线射频发射器,能独立于遥控器或移动开关之外,控制落地灯或桌灯的开关或随意调节灯光亮度。 减少干扰,传送或接收指令更加准确无误。 其中,开启和关闭,除了在位置上的设置之外,还增加了矩形框的设计。 当矩形框在开启这两个字上面时,开启二字加粗,关闭使用常规。 首先定义两个函数 fnt和 fnt2 来表示常规和加粗两种状态下所调用的方法。 分别为 fnt=(, BLOD|,)。 fnt2=(R。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。