(检测技术与自动化装置专业论文)智能家居的人性化设计.pdf_第1页
(检测技术与自动化装置专业论文)智能家居的人性化设计.pdf_第2页
(检测技术与自动化装置专业论文)智能家居的人性化设计.pdf_第3页
(检测技术与自动化装置专业论文)智能家居的人性化设计.pdf_第4页
(检测技术与自动化装置专业论文)智能家居的人性化设计.pdf_第5页
已阅读5页,还剩98页未读 继续免费阅读

下载本文档

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

文档简介

摘要 摘要 智能家居的概念提出已久,对人性化设计的要求也越来越高。很多机构正致力于智 能家居的开发,其中重要的技术关键是计算机、通讯和消费电子等i t 产业核心产品的 控制和互联互通。 目前正在广泛使用的家用电器设备中,主要控制手段仍是以红外遥控为主。但是 各种品牌的家用电器各有各自的遥控器,以至于家庭中红外遥控器数量繁多,功能单 一,使用方法又各不相同:缺乏通用控制手段,成为利用现有的家庭电器设备发展智 能家居的一大障碍。 本文设计了基于网络的嵌入式控制系统,控制中心通过i e c 8 0 2 1 1 无线局域网与 r s 4 8 5 总线组成的家庭局域网络中的所有可控设备进行通讯,使各种黑色家电的红外控 制终端、彩灯控制终端、窗帘控制终端等设备联动工作;提供了“自然醒闹钟 应用 实例,并可用于多种场景的综合控制。并具备现场红外学习功能, 本设计的工作内容如下: 1 利用r s 4 8 5 总线、基于i e c 8 0 2 1 1 的t c p i p 网络构建了复合通讯网络平台, 并制定应用层通讯协议。 2 在l i n u x 平台上设计并开发了家庭控制中心,拥有“自然性闹钟”场景控制实 例,并集合了红外现场学习、红外设备通用控制、灯光控制、步进电机控制等功能于 一体,通过“虚拟遥控器文件对各种家用电器实现了通用控制。使用自适应分频算 法、g c d ( g r e a t e s tc o m m o nd j v i s o ,最大公倍数) 算法与p s n r ( p e a ks i g n a ln o i s o r a t i o ,峰值信噪比) 算法将编码在有效范围内进行压缩,提高了传输效率与存储空间 利用率。通过l i n u x 下的多进程和多线程、i p c s 通讯机制、动态库等技术实现了系统 的软件部分,使控制中心在并发实时性与稳定性上有良好的表现。 3 目前广泛使用的家用电器设备中,控制手段仍是以红外遥控为主;针对这种现 状,根据对红外信号编码规范和多种红外遥控器信号的分析结果,设计开发了自适应 分频的红外控制终端;对现有预存式万能遥控器局限于已有制式信息、学习式通用遥 控器对部分家电不适用的缺陷进行了改进。 关键词:智能家居,嵌入式系统,l i n u x ,m i n i g u i ,自适应红外控制器,网络技术 a b s t r a c t a b s t r a c t u s a b i l i t ya n dh u m a n i t yi st h em o s tc r i t i c a lr e q u i r e m e n ti nt h ed e v e l o p m e n tp r o c e s so f i n t e l l i g e n th o m ec o n t r o ls y s t e m ( i h c s ) i h c si sb a s e do nt h et e c h n o l o g yf o u n d a t i o no f e m b e d d e ds y s t e mc o n t r o l ,n e t w o r kt e c h n o l o g y , w i r e l e s s ,m u l t i m e d i aa n do t h e rt e c h n o l o g yt o f u l f i l lt h ed e s i r ef o rh i g hl i v i n gs t a n d a r di nt e r m so fh e a l t h ,l i v i n gc o n d i t i o n ,e n t e r t a i n m e n t , b u s i n e s sp l a t f o r m t 1 1 i s p a p e r d e s c r i b e st h ed e s i g na n dt h ei m p l e m e n t a t i o no ft h e s e l f - a d a p t a b l ei n f r a r e dr e m o t ec o n t r o l l e rb a s e do nn e t w o r k ,a n dc o n d u c t e dt h ef o l l o w i n g w o r k : 1 b u i l dah y b r i dn e t w o r ks y s t e mb a s e do nr s 4 8 5b u s ,8 0 2 1 1w i r e l e s sa n dt c p i p n e t w o r k , b a s e do nw h i c ht h em a i nc o n t r o l l e ra n dt h ei n f r a r e dt e r m i n a lc a np e r f o r m c o m m u n i c a t i o n 2 d e s i g na n dd e v e l o ps o w , v a r eo nl i n u xo s ,r e a l i z e d n a t u a lc l o c k f u n c t i o n d e s i g n a n di m p l e m e n ts o f t w a r eo ne m b e d d e du c l i n u xp l a t f o r mu n d e rt h es u p p o r to fm u l t i p l e p r o c c e s s ,i n t e r p r o c e s sc o m m u n i c a t i o ns y s t e m ,s h a r e dl i b r a r y m a k ei t c a p a b l et o d y n a m i c a l l yr e c e i v ea n ds t o r et h ei n f r a r e dc o d ei n t oi t sf i l es y s t e m ,m a i n t a i nt h ev i r t u a l r e m o t ec o n t r o l l e ri n f o r m a t i o n ,a n dc o m m u n i c a t ew i t hl p c 9 3 2v i an e t w o r k p u te x t r ac a r eo n t h er e a l - t i m ep e r f o r m a n c ea n dt h er e l i a b i l i t yo ft h es y s t e m 3 c o n d u c taw i d er a n g eo fa n a l y s eo v e rc u r r e n te x i s t i n gr e m o t ec o n t r o l l e r , o v e r c o m e d c o n v e n t i o n a lp r o b l e mw i t hi n f a r e dc o d i n gm e c h a n i s m ,u s ei n t e l l e n g e n ta l g o r i t h mt od e v e l o p t h ee n c o d i n ga n dd e c o d i n gf a c i l i t yi nt h es y s t e m d e s i g na n dd e v e l o p e di rt e r m i n a la sw e l l a so t h e rh o m ec o n t r o lt e r m i n a l s k e yw o r d s :s m a r th o u s ee n v i r o m e n tc o n t r o l ,e m b e d d e ds y s t e m ,a r m ,l i n u x ,m i n i g u i , s e l f - a d a p t a b l ei n f r a r e dr e m o t ec o n t r o l l e r , n e t w o r kt e c h o n o l o g y i i 同济大学学位论文原创性声明 本人郑重声明:所呈交的学位论文,是本人在导师指导下,进行研究 工作所取得的成果。除文中已经注明引用的内容外,本学位论文的研究成 果不包含任何他人创作的、已公开发表或者没有公开发表的作品的内容。 对本论文所涉及的研究工作做出贡献的其他个人和集体,均已在文中以明 确方式标明。本学位论文原创性声明的法律责任由本人承担。 虢,前呶擘 妒区年弓月e l 学位论文版权使用授权书 本人完全了解同济大学关于收集、保存、使用学位论文的规定,同意 如下各项内容:按照学校要求提交学位论文的印刷本和电子版本;学校有 权保存学位论文的印刷本和电子版,并采用影印、缩印、扫描、数字化或 其它手段保存论文;学校有权提供目录检索以及提供本学位论文全文或者 部分的阅览服务;学校有权按有关规定向国家有关部门或者机构送交论文 的复印件和电子版;在不以赢利为目的的前提下,学校可以适当复制论文 的部分或全部内容用于学术活动。 学位论文作者签名: 16 ; n e x t r e m a i n d e r = 0 x f f f f ( u n s i g n e di n t ) ( f i n a l t i l & o x o o o o f f 哟; t h l m g = n e x t r e m a i n d e r 8 ; t l l m g = n e x t r e m a i n d e r & 0 x 0 0 f f ; 5 6 第5 章终端与网络设计 第5 章终端与网络设计 5 1 红外终端设计 5 1 1 功能描述 l p c 9 3 2 控制终端的工作涉及到键盘操作、接收网络信息、获取红外编码,发送红 外编码,其工作状态通过用户键盘切换。本系统中利用有限状态机f s m ( f i n i t es t a t e m a c h i n e ) 设计整个下位机系统。 系统功能如下: 1 4 个键盘按键,分别对应确认、取消、上翻、下翻 2 模式切换:拥有红外学习与红外控制模式,用户可根据键盘来选择工作在哪个 模式。 3 从r s 4 8 5 总线读区数据报文,分析命令,执行相应的任务 4 从数据流中提取红外控制编码,转为定时器时间序列 5 通过g p i o 口的红外线发送器,调制红外编码发送至空调 6 通过g p i o 口的红外接受器,将红外信号调制成相应编码,返回至主机 5 1 2 l p c 9 3 2 终端控制器的状态机设计 本系统的有限状态机结构设计如下: 7 种系统工作状态点: 1 菜单选择,拥有两个子状态:l e d 显示学习、l e d 显示控制 2 学习模式,拥有两个子状态:待命状态、上送状态 3 控制模式:拥有三个子状态:待命状念、报文解析状态、红外发送状态 3 个系统状态属性变量: 1 键盘按键:当用户按下按键后,k bi s r ( 键盘中断处理程序) 检测被按下的按 键,并设置该变量。 2 红外信号有效:在收到红外信号后,e i n ti s r ( 外部中断处理程序) 学习红外 5 7 第5 章终端与网络设计 一一 。被收入觥f u 群 初始化状态 一 完毕【报文分析状态 迓过毂壤有效牲 墅茁 盒过红外发送口信 输红外信号 图5 1 红外终端状态转移图 确定键莪按泽 学习模式 开启i n t 中断 。毕缸锌铝号 发送红外编码 至上位机 5 2 彩灯终端设计 本系统中,使用三色l e d 发光电路来模拟实际的家庭灯光系统。 利用脉宽调制技术,可以控制l e d 的发光亮度。因此从理论上,通过改变r g b 三 原色可以调制任意亮度、任意颜色的光调。 系统利用l p c 9 3 2 控制终端连接三色l e d 发光扩展板。根据主控制器发送的命令, 实现多种控制效果,例如渐亮、渐暗、各种颜色灯光的逐渐切换、以及霓虹灯的闪烁 效果。 l p c 9 3 2 开发板与三色l e d 发光扩展板的连接如下: 第5 章终端与网络设计 幽5 2p w m 调光电路 l p c 9 3 2 具有四路p 州脉宽调制电路o c a 、o c b 、0 c c 、0 c d 。本系统使用o c a - o c c 控 制三色l e d 的亮度变化。 5 3 步进窗帘终端设计 本系统中,使用步进电机来控制床帘的打开与闭合。 步进电机控制电路如下: 削5 3 步进l b 机电路 使片ju l n 2 0 0 3 a 忭为步进电机的驱动电路。【p c 9 3 2 通过j p l 9 与步进电机控制模块 相连接。 第5 章终端与网络设计 5 4e t h e r n e t 转r s 4 8 5 模块 本系统选用广州周立功的z n e l 0 0 t 以太网转r s 4 8 5 模块进行网络的转换。 该产品采用a r m 7 内核,内置t c p 1 p 协议栈,可将以太网物理层上的t c p i p 协 议与r s 2 3 2 r s 4 8 5 信号相互转换。 幽5 4z n e l 0 0 t 明户改备 该模块配有维护软件,用户町通过指定的端口、用户名、密码维护和修改诙模块 的i p 地址、端口号,及串口收发参数。 5 5 网络结构设计 本系统以主从方式实现系统功能。 主机具有图形埘户操作界面。而从机为多个单片机终端系统,拥有红外收发的功 第5 章终端与网络设计 能,安装在空调附近,与r s 4 8 5 总线连接。 主从机通信通过i e c 8 0 2 1 1 + t c p i p + r s 4 8 5 总线的混合网络连接,如下图所示。 基于l i n u x 的 衫 自自 客 i u 视卧式m 视 图s s 网络结构目 一 岛厶 第5 章终端与网络设计 主控器内整合了i e c 8 0 2 1 1 网络控制器,与家庭i e c 8 0 2 1 l 路由a p 通过无线物理 层相连。路由器的l a n 口连有z n e i o o t 以太网转r s 4 8 5 设备。该设备可将t c p i p 应用 层的数据剥离,并以r s 4 8 5 的电气特性将应用层数据包发送到r s 4 8 5 总线中。 各红外终端的m c uu a r t t t l 电平串口信号线通过m a x 2 3 2 芯片转换成r s 2 3 2 电气 信号后,并经过r s 2 3 2 r s 4 8 5 转换器连接至r s 4 8 5 总线中。 5 6 网络通讯规约设计 5 6 1 应用层协议数据结构 5 6 1 1 数据报文结构 由于r s 4 8 5 总线只提供了物理层和数据链路层的标准,不包含网络层,传输层, 会话层等符合标准o s i 模型的层次以保证数据传达的可靠性,因此需要自定义种应 用层协议来保证数据可靠的传输。 数据报文的格式如下: 表5 1 数据报文结构 功能帧头地址 命令长度数据校验 长度l2 字肖 2 字:幅2 字节 2 - 7 节l e n g t h 1 l 值 l 5 a 5 a a d d r l ! a d d rc m d l ! c m dl e n g t h c o d es u m l 报文中包括以下信息: 帧头: 表示数据报文的开始。r s 4 8 5 总线启始工作时,头几个字节传输容易发生错误。帧 头就是为了使总线稳定而设置的字段。用户接收后无需判断帧头的值。 地址: 由一字节的地址值与一字节的地址值取反组成。用户应该判断a d d r o 是否等于 a d d r 1 。a d d r 代表数据发送目的在r s 4 8 5 总线内的地址号。 命令: 目前支持的网络命令如下 p i n g : 测试工作状态命令。由主机一 红外发送终端 p i n ge c h o 操作成功的返回数据。由红外发送终端 主机 6 2 第5 章终端与网络设计 i rt x发送红外编码命令。操作完成后,终端返回p i n g 帧。在红外编码方 式下,数据域由分频值( 1 字节) 、基本时间片( 2 字节) 、红外编码组成。如果是学 习状态,则数据域中没有基本时间片。 彩灯控n - 数据域长度为l 字节,可传递以下几种灯光控制效果: 1 :渐变至红光 2 :渐变至绿光 3 :渐变至蓝光 4 :所有灯光渐亮 5 :所有灯光渐暗 6 :交替渐变闪烁 窗帘控制:1 字节的数据区可传递以下集中床帘控制效果: l :窗帘打开 2 :窗帘关闭 长度:数据域的字节数,记作l e n g t h 。 数据:数据域,长度为l e n g t h 个字节 校验:采用和校验,其值等于该帧的第三个字节( a d d r ) 到数据域的最后一个字 节的和累加的低8 位。 5 6 2 传输过程 位于l i n u x 端的s e r v e r 进程在接收到命令后,应该按照上述数据协议进行数据 封装,然后通过以太网发送至l p c 3 2 ,同时等待l p c 9 3 2 返回的p i n ge c h o 包。当然 不可能无限时间一直等下去,本系统采用了超时机制,在发送包后的1 秒钟内如果无 p i n ge c h o 包返回,则认为操作失败。在此情况下,系统会继续重发3 次,如果3 次 都没有响应,则认为操作失败,同时向r m c 进程的f i f o 返回“e r r o r 信息。 l p c 9 3 2 单片机在接收数据包时也采用相应规则。单片机认为一个包的接收时限为 3 0 0 m s 。从串口收到第一个数据开始计时。同时如果1 5 m s 的字符问超时时限内没有收 到新的数据,则认为一个包接收完成。在收完一个包( 一帧数据) 后,对数据内容进 行分析。 6 3 第5 章终端与网络设计 首先判断地址是否有效( a d d r 0 】一a d d r 1 】) ,接着判断a d d r 是否等于自己的r s 4 8 5 网络地址号。然后检查命令是否有效,最后进行和校验是否有效。如果通过上述检查, 则认为收到有效数据帧,执行相应操作,结束后合成并返回p i n ge c h o 数据包。 5 6 3 执行流程 主控端的通讯过程如下: 详细数据报文处理过程如下: 图5 6 通讯过程 第5 章终端与网络设计 图5 7 详细处理过程 6 5 第6 章控制中心软件架构 第6 章控制中心软件架构 本节将从软件工程的角度分析系统的软件结构设计目标,使其在模块化、可移植 性、可维护性、重用性、系统结构等方面得到较高性能。 软件的质量因素很多,如正确性,性能、可靠性、容错性、易用性、灵活性、可 扩充性、可理解性、可维护性等等。有些因素相互重叠,有些则相抵触,提高系统整 体软件质量,需要从综合角度,考虑多方面的权衡。 6 1 整体架构设计 本系统的软件设计分为两个部分:l i n u x 主控端与l p c 9 3 2 受控终端。 主要的软件设计集中在l i n u x 主控端与网络通讯规约。 l i n u x 主控端共使用了三个进程,各自处理不同的系统任务,并利用i p c s 通讯, 完成整个系统的协调工作。 进程总体设计如下: v r c m a i n : 进程管理器,负责管理其余三个进程的启动与退出。在l i n u x 内核启动后,v r c m a i n 将通过r c 选项启动,并同时通过e x e c 启动其余两个进程,在其余两进程均成功完成 初始化后,通过信号( s i g n a l ) 发送同步信号,使系统开始运行。 同时,v r c将通过监控其余进程的状态,若其余两进程运行出错成_ m a i n s i g c h l d 为僵死状态,则重新启动该僵死进程。 v r cu s e r c l i e n t : 通过m i n i g u i 接口,以g u i 方式接收用户的命令请求,向n e t a g e n t 进程发送消息 触发网络控制命令,通过调用v m r d b 动态库管理v r c 虚拟遥控器数据。 v r c _ n e t a g e n t s e r v e r : 从内核消息队列读取网络命令请求,根据不同的命令封装并发送数据至以太网, 从而控制各红外终端对空调进行控制;从终端捕捉红外编码信息,返回至数据库以存 第6 章控制中心软件架构 储。 v r cd b : 以动态库的方式,管理读写遥控器编码信息的任务。 采用动态库后,系统的调用接口被明确化,可使数据访问部分与系统功能部分独 立开发,增强了系统的清晰性与结构性,同时为将来的系统升级提供了良好的途径。 l i n u x 主控端的软件结构示意图如下 窿叠 一肾? - 盔i r i 1 札料 - 一 _ ,r l 囊黑阑曩 第6 章控制中心软件架构 后,调用g u i 通知用户操作结果 6 2 运用操作系统多进程提高系统实时性能 621s e r v e r - c ii e n t 经典模型的优越性 单进程控制命令发送过程如下: _ - 。 - 幽6 2 单进程控制 其中绿色部分表示界面能够更新,红色的部分表示界面无法更新,此时界面处于 “假死”状态。可以看到,在接收到用户请求后,有相当长的时m 系统忙于发送网络 命令并等待返问,界面处于假死状态。 本系统采用s e r v e rc l i e n t 模掣,u s e r m a n a g e r 进程属c l i e n t ,n e t a g e n t s e r v e r 属于 第6 章控制中心软件架构 s e r v e r 进程。 其中,c l i e n t 进程处理图形更新与用户请求,一旦检测到有用户界面请求,则通过 消息队列将请求发送至n e t a g e a a t s e r v e r 进程,继而马上返回继续处理用户请求,同时 等待消息队列返回的执行结果。 s e r v e r 进程监听消息队列中的客户请求。一旦s e r v e r 进程得到用户的请求,则创 建一个新的线程,由该线程去处理相应网络通讯任务。这里必须提到的是,r s 4 8 5 总线 在一个时刻只允许有一个几个节点进行数据的发送,否则总线将处于混乱状态,只有 通过总线复位,才可解除混乱状态。因此在线程进入网络通讯任务的临界区前,需获 得信号量,通过互斥的方法将进行网络数据的传输。如果s e r v e r 同时得到多个用户请 求,则第一个执行的线程进行获得信号量( p 操作) ,其余线程必须等待该信号被释放 ( v 操作) 后,才能对网络进行控制。 流程图如下: 第6 章控制中心软什架构 仨 ,凰二j | _ _ _ 溺 匿豳。习 幽6 3 多进程控制顺序 鳃囊j 一、 。 ! 豳警j 可以看到,系统的实时性能有了很大的提高,在发送请求后,界面不会进入假死 状态,而且系统拥有同时处理多条请求的能力。 6 22u s e r c iie n t 进程与n e t g e n t 进程间使用消息队列的优点 如果使用普通的f i f o 管道通讯机制,在系统发出第个命令后等待反馈的时间内, 如果再次接受到用户的请求发送第二条命令( 即多c 1 i e n t 同时请求) 则之后系统无法 辨识返旧的执行结果属f 哪个任务,因此无法可靠的提示川户返回结果。 加 。国 第6 章控制中心软件架构 使用消息队列能在发送任务请求时绑定一个唯一的任务i d 序列号,使得在多请求 情况发生时,系统可以正确的辨认出该响应属于之前哪个任务,提高了系统的稳定性。 6 2 3 n e t a g e n t 使用线程的优点 在5 2 1 节已简单描述了系统的s e r v e r - c 1 i e n t 模型。但实时性还有进一步提高 的空间。 s e r v e r 进程中,为了在处理网络通讯的同时可以同时处理用户的新请求,采用了 并行工作法则,即:在接收到请求后,创建线程完成实际的传输任务,原进程可继续 处理新的用户请求。 在应用中,就“使用线程和“使用进程 存在着广泛的争议。线程与进程有着 类似的工作方式,但是实现手段截然不同。 本系统采用多线程设计n e t a g e n t 进程,现在简单的对比线程与进程,并阐述采用 该设计方案的理由。 下表对进程和线程作了比较: 表6 1 进程与线程的区别 线程进程 内存占有低同 执行效率两低 通讯方式共享数据i p c s 机制 本系统在设计n e t a g e n t 进程时采用多线程而非多进程的原因如下: 嵌入式开发平台的内存有限。 无法预估最大同时请求数,若采用多进程,可能会使内存崩溃。 在进行网络通讯任务时,所有并行任务均使用同一s o c k e t 文件描述符,使用线程 能高效的实现资源的共享。 综上所述,采用多线程设计n e t a g e n t 进程是相对高效的方法。 6 3 项目管理及i 啊a k e f ile 本系统l i n u x 端源代码文件结构如下: 7 1 第6 章控制中心软件架构 v m rc o m m o n h v m rm a i n c v m r _ n e t a g e n t c v m r _ n e t a g e n t h v m ru s e r c l i e n t c v m ru s e r c l i e n t h v m rd b c v m rd b h t v c o n t r 0 1 h t v c o n t r 0 1 c g e n c o n t r 0 1 h g e n c o n t r 0 1 c 编译后生成的可执行文件列表如下: v m rm a i n v m r _ n e t a g e n t v m ru s e r c l i e n t v m rd b s 0 由于每个进程对应的源码文件只有一个,无须进行多个对象文件的连接,因此 m a k e f i l e 内容相对简洁。 对应的m a k e f i l e 如下: e x e c = v r c m a i nv r c u s e r c l i e n tv r c _ n e t a g e n tv r c d b s o o b j s = v r c m a i n ov r c - - u s e r c l i e n t ov r c _ n e t a g e n t ov r c d b o t v c o n t r 0 1 o g e n _ c o n t r 0 1 oa d a p t e r 0 c c = a r m - e l f - g c c f l a g s = w a l l l i b = i 一i n c l u d e 第6 章控制中心软件架构 a l l :$ ( e x e c ) v r cm a i n :v r cm a i n c 乇cc o m m o n h $ ( c c ) $ ( f l a g s ) $ ( l i b ) 一o $ $ 一g v r c u s e r c l i e n t :v r c u s e r c l i e n t cv r c u s e r c l i e n t hv r c c o m m o n h $ ( c c ) $ ( f l a g s ) $ ( l i b ) l m i n i g u i 一0 $ $ 一g l d l v r c _ n e t a g e n t :v r cn e t a g e n t hv r c c o m m o n h $ ( c c ) $ ( f l a g s ) $ ( l i b ) 一l p t h r e a d o $ $ - g v r cd b s o ;v r cd b cv r cd b hv r cc o m m o n h $ ( c c ) $ ( f l a g s ) $ ( l i b ) - 0 $ $ - s h a r e d - g c l e a n : r i l l f $ ( e x e c ) r i l l f $ ( o b j s ) 编译v m r d b 动态库需要加上s h a r e d 选项,以生成动态库对象。 编译v m i u s e r c l i e n t 加上i d l 选项,使其在运行时能绑定动态库。 编译v m r u s e r c l i e n t 加上一l m i n i g u i 选项,使其能连接m i n i g u i 的静态库。 编译v m rn e t a g e n t 加上一l p t h r e a d 选项,使其能连接多线程所需的静态库。 使用m a k ea l l 命令,可一次性完成所有的可执行文件的编译工作。 使用m a k ec l e a n 命令,可删除所有的可执行文件及目标文件。 7 3 第6 章控制中心软件架构 6 4v r c 配置文件概念及其存储格式 6 4 1 虚拟空调文件管理 储存虚拟遥控器的关键问题在于:如何获取空调的红外编码,以何种方式存储, 如何去管理不同型号空调的信息。 本系统中,每个空调的基本信息存放在一个专用的配置文件中,该文件以特定字 符串作为后缀名。并且文件内部遵循一定的协议规则,每个红外设备的基本信息,以 及红外编码,均按照这个协议存放,这样一来,管理不同的空调就变成管理不同的文 件。而且,l i n u x 内核中采用了v f s 虚拟文件系统,使之对文件系统的支持相当优越, 再结合l i n u x 自带的文件处理工具如模式搜索程序g r e p ,流编辑程序s e d ,数据加工 检索工具a w k ,可以非常高效的对空调进行控制。 现在对r m c 的内部语法结构进行具体说明: f i l e n a m e = x x x r m c t i t l e t i t l e = r e m o t ec o n t r o l l e ri n ff i l e r o o m r o o m = 实验实 a i rc o n d i t i o n e rt y p e 】 t y p e = l g n a m e 】 n a m e = y - 作室空调 a d d r a d d r = 0 x 01 o p c o d e o n = o f f = m o d e c o l d = 在r m c 文件中,将不同信息分为“项 ,每项的标题被“ ”包含在内。 t i t l e 项为文件头信息,只有t i t l e 内容为“r e m o t ec o n t r o l l e ri n ff i l e ”且后 7 4 第6 章控制中心软件架构 缀名为r m c 、t v 、g e n 的文件才能正确被识别为虚拟空调文件。此项也是设备开机自检 时搜索系统内存在的虚拟遥控器的重要依据。 n a m e 是虚拟空调遥控器的名字。用户可随意给它取名。 a d d r 是该遥控器对应的红外发射器在r s 4 8 5 网络内的地址号。此项为关键信息。 r o o m 和a i rc o n d i t i o n e rt y p e 分别对应空调的房间及空调的型号。此项尽量与实 际信息相符。 o p c o d e 则就是遥控器各个按钮的编码。关于遥控器红外线编码获取方式的具体细 节,请见下节。 6 5 v r c 动态管理及其特点 本系统的一大特点是,将不同的遥控器虚拟文件化,即:一个虚拟遥控器文件对 应一个实际存在的真实遥控器。当一个遥控器的红外编码按照指定格式存储至系统后, 该遥控器就在系统内以软件的形态重生,可以灵活的对其进行管理。 本系统的一大特点是:可以动态管理所有的虚拟遥控器文件,即,在用户运行系 统时,通过g u i 的方式添加删除虚拟遥控器文件。包括: 删除现有的虚拟空调遥控器。 添加虚拟空调遥控器:通过l p c 9 3 2 单片机的红外接收口,自适应真实遥控器编码, 并存储至文件系统内。当然,系统需要通过m i n i g u i 为用户提供良好的接口。在 v r cu s e r c l i e n t 中对该功能的设计进行了详细描述。 6 6 v r c m a in 进程详细设计说明 本节讨论整个系统的管理进程:v r cm a i n 进程。 6 6 1 进程功能描述 v r c _ m a i n 进程包括以下功能: 1 v r cm a i n 进程是供用户执行的管理总进程,可将其放入启动r c 文了中,在 每次系统上电时自动运行。 2 v r cm a i n 开始运行后依次执行f o r k e x e c 命令,启动其余的两个主要进程。 3 在其余两个主要进程都成功运行后,发送s i g n a l 通知其余两个进程开始运行。 7 5 第6 章控制中心软件架构 4 在后台监控进程运行状态,在收到某一进程僵死的s i g c h l d 信号后,则重新 运行该进程,避免系统功能阻塞。 5 后台程序设有看门狗定时器。其余两个进程使用s i g u s r l 作为喂狗信号,在 十秒的期限内按时喂狗,如果超过该期限没有收到某进程的喂狗信号,则结束该进程 并重新启动。 6 6 2 进程间通讯接口 v r c _ m a i n 进程与其余两进程主要通过信号( s i g n a l ) 进行通讯。 v r cu s e r c l i e n t 与v r c 在启动后,等待发送的同netagentv r cm a i n s i g u s r l 步信号,然后开始运行。 v r cm a i n 在启动后,定期等待u s e r c l i e n t 与n e t a g e n t 的喂狗信号。 示意图如下: 6 6 3 执行流程图 v r cm a i n 的主执行流程如下: 图6 4 喂狗方式 7 6 第6 章控制中心软件架构 n y 图6 5v r cm a i n 流程图 7 7 第6 章控制中心软件架构 6 7u s e r ci e n t 进程详细设计说明 6 7 1 进程功能 u s e r c l i e n t 进程有两个工作模式:控制模式和自适应模式。 主要实现了以下功能: 1 通过m i n i g u i 接口初试化程序界面 2 循环扫描用户请求,进行相应处理: ( 1 ) 发送空调遥控命令至于n e t a g e n t 进程 ( 2 ) 通过s i g u s r 2 接收执行结果返回 ( 3 ) 进入虚拟遥控器文件管理菜单 ( 4 ) 自适应学习遥控器界面 3 通过数据库接口动态管理访问v r c 信息 ( 1 ) 动态加载所有遥控器信息至系统链表,将虚拟遥控器文件信息与该链表对应 节点绑定 ( 2 ) 从空调遥控器链表节点中读取指定项的命令内容 ( 3 ) 删除虚拟遥控器节点与对应文件 ( 4 ) 新建虚拟遥控器文件 ( 5 ) 向虚拟遥控器文件内写入指定内容( 仅以追加方式写入) 4 通过消息队列委派空调控制命令 ( 1 ) 生成唯一的序列号,将该序列号作为消息队列的t y p ec h a n n e l 值,发送至 n e t s e r v e r 进程。 ( 2 ) 通过s i g u s r 2 信号,到消息队列的指定t y p ec h a n n e l 接收n e t s e r v e r 的执行 结果反馈,并将结果通过用户界面显示。 6 7 2 进程间通讯接口 6 7 2 1 进程间数据流关系 u s e r c li e n t 与n e t a g e n t 属s e r v e r c 1 i e n t 模型,其数据流通讯关系如下: 7 8 各c l i e n t 以独有的序列号 访问消息队列 图6 6 进程间通讯方式 由于考虑到系统今后可, 日u 匕l - , 扩充为多c l i e n t 模式,因此使用带唯一序列号的t y p e c h a n n e l 来使c l i e n t 与s e r v e r 进行通讯。该t y p ec h a n n e l 可以是各c l i e n t 进程的 p i d ( p r o c e s si d ) 。 如果s e r v e r 与c 1l e n t 不指定消息队列的t y p e ,或者使用f i f o 进行通讯,则各 c l i e n t 无法识别属于其自己的执行返回结果,系统将无法可靠执行。 6 7 2 2 消息队列中的数据结构定义 现在讨论用于s e r v e r c l i e n t 通讯所使用的消息队列内存具体数据结构。 t y p e d e fs t r u c t rm s g q p i d tp i d : p i do fc l l e n tp r o c e s s u i n t 8c m d :c o m m a n df o rs e r v e r u i n t 8a d d r4 8 5 :a d d r e s so fo p e r a t i o nn o d ei n4 8 5b u sc h a i n u i n t 8o p :c o d e 5 1 2 o p e r a t i o ni rc o d en e e d e db yl p c 9 3 2 u i n t 3 2e r r c o d e : tm s g q ,* p tm s g q : 第6 章控制中心软件架构 1 p i d 为客户端进程的p i d 号。s e r v e r 根据该进程号,将操作结果通过s i g u s r 2 信号返回至c l i e n t 进程。 2 c m d 为c l i e n t 向s e r v e r 发布的命令。目前支持的命令有: c m dp i n g :发送p i n g 包至节点,检测r s 4 8 5 网络节点是否正常工作 c m dt x :发送红外代码到r s 4 8 5 网络节点。节点上的红外终端控制器在收到 命令后应该进行红外操作 c m ds a :接收到红外自适应编码 3 a d d r4 8 5 :对应r s 4 8 5 节点的地址。 在主机向r s 4 8 5 节点发送控制命令时,该字段对应要控制的节点地址; 在自适应模式中,该字段为学习红外编码的r s 4 8 5 节点地址。 4 o pc o d e :红外编码数据,该编码将被传输至r s 4 8 5 节点控制终端,在发射红 外控制信号时使用。其中包含自适应动态分频值 5 e r rc o d e :错误返回码,在此不详述。 6 7 3 执行流程图 6 7 3 1 控制模式 控制模式模拟空调遥控器。界面如下: 在使用过程中,用户可通过右上方的下拉框,自行切换需要控制的空调。 在更改了当前控制的空调后,系统会发送p i n g 命令至r s 4 8 5 节点,检查节点 l p c 9 3 2 控制终端是否j 下常工作。如果终端状态异常,将通过状态栏的“终端”显示错 误信息。 具体执流程程如下: 第6 章控制中心软件架构 1r 。 冬等多 定时器超时 i r 显示。操作超时”, 鲡进程是否上e 在执疗卜 清空b u s y 全局变 一个控制命令操作? 量 y 设置b u s y 全局变 量 o 收到s i g u s r 2 | 信弓 调m v r c d b 动态 i j 宰,获取千f i 应审调的 详细信息 从消息队列获取执 之 行结果代,将执 行结果显示到屏幕 封装消息队列数 | 据,发送请求砭 n e t s c r v e r 进程 | 取消超时定时器, 清空b u s y 全局变 | 簧 设置超时定时器,继 续更新用户羿面,并 处理用户请求 图6 7u s e ra g e n t 流程图 1 在接收到用户请求后,检查系统的上一个操作是否完成。 2 首先根据当前选择的空调链表节点信息,调用动态库,获取相应的红外编码。 3 将红外编码与控制命令封装至m s g q 数据结构中,通过消息队列发送至 n e t s e r v e r 进程。 4 设置超时定时器,返回用户界面处理 第6 章控制中心软件架构 5 在此期间,若收到n e t s e r v e r 的执行完毕信号s i g u s r 2 ,则进入信号处理函数, 从消息队列接收执行结果,并将操作结果显示在用户屏幕上。同时禁止超时定时器, 清空b u s y 全局变量。 6 如果在指定的时间内,没有收到n e t s e r v e r 的结果返回,则提示超时。超时时 间设置为5 秒。 该进程调用m i n i g u i 接口,完成了所有的与界面相关的操作,包括:电视控制、 空调控制、通用控制、自适应的用户端工作。 ( 1 ) 空调控制 在空调控制属性栏中,拥有当前空调运行状态的显示功能,表示空调当前的运行 状态。 空调可在制热、制冷、通风三种模式问切换。 同时系统支持风力的切换、调节室内温度。 ( 2 ) 电视控制 电视控制栏中不支持显示当前系统状态。主要功能是根据用户的按键,发送各种 控制命令: ( 3 ) 通用控制 与电视控制类似,在此不累述。 6 7 3 2 自适应模式 在自适应模式中,u s e r

温馨提示

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

评论

0/150

提交评论