【智能家居系统设计(附图)10000字】_第1页
【智能家居系统设计(附图)10000字】_第2页
【智能家居系统设计(附图)10000字】_第3页
【智能家居系统设计(附图)10000字】_第4页
【智能家居系统设计(附图)10000字】_第5页
已阅读5页,还剩27页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

智能家居系统设计摘要:科技的发展是人类社会更进一步的象征,同时也是工业发展的一个重要因素。伴随着我国工业水平的快速发展,人民的生活方式发生了很大的变化。越来越多的高科技产物走进了人民的家中,可是越来越多的功能,让人们意识到必须设计一种方案来解决使用上的复杂,随着人们的不断研究和探索,一种智能家居的概念被世人所知晓。本文所介绍的就是一种基于三星ARM-cortexA9核心的Exynos4412的SOC芯心所集成的开发板,同时采用了嵌入式和QT应用编程技术进行开发,并将系统完整的移植到所使用的开发板上,加载硬件设备驱动模块,使QT客户端通过网络通信实现对cortexA9集成电路板的硬件进行远程控制与板子所反馈的当前状态进行查看,可以一个人同时控制多个功能,减少了实际运用中繁琐的过程,极大的减少了使用人员的负担。同时使用M0数据采集板模拟现实的家居环境,通过QT客户端的控制,完成灯光的开启和关闭,温湿度的信息采集和调节,温度报警系统和远程监控的功能。论文详细介绍了软硬件系统的各部分组成,各个模块的工作原理和显示控制过程。该远程系统性能稳定,扩展方向多样化且扩展升级简易。关键词:ARM-cortexA9;M0数据采集板;QT客户端目录129401绪论 1311231.1课题背景及研究意义 1114031.2课题的设计要求 1118201.3课题的研究内容 14141.4国内外发展现状 2180422智能家居系统的设计和实现 486382.1智能家居系统概述 471962.2智能家居系统的模块化设计 4111192.3Exynos4412平台服务器的设计与实现 6228822.3.1Exynos4412平台服务器硬件电路 6302612.3.2Exynos4412平台服务器程序设计 7154622.4传感器模块的设计与实现 886442.4.1传感器模块硬件电路 8245882.4.2ZigBee模块简介 9224023cortex-A9开发板的系统移植 1186773.1系统移植概述 1164913.2交叉编译环境搭建 11133863.3配置TFTP和NFS服务器 1240883.4BootLoader简介 1397703.5Linux内核的编译与移植 1571214基于cortex-A9开发板的网络通信 17139144.1TCP/IP网络协议简介 17183584.2SOCKET简介 17139364.3QT客户端界面编程 18288674.3.1QT简介 1885624.3.2QT客户端界面设计 18222414.4基于TCP的信息通信 19278584.5基于UDP的视频信息采集 2087565系统效果与结论 2237405.1系统效果 2233765.2结论 2418876参考文献 258238附录A系统电路和相关附图 266596附录B全部程序清单(必须有) 27PAGE11绪论1.1课题背景及研究意义智能家居系统这个概念的起源可以追溯到上个世纪70年代的美国,通过不同渠道的传播,先后到达了欧洲、日本等国,并且取得了很大的发展进度。在我们国家,这一概念的出现比较晚,大约在上世纪90年代末才开始在国内出现,但它的发展速度十分惊人,现在已经在我们的生活中的各个方面得到了很广泛的运用,各种智能化小区和住宅在不断的增加。所谓的智能家居从字面上理解就是带有一定程度自主性,可以根据使用者的不同要求提前做出改变,不在是以往那种只是被动改变。这种自动化兼智能化的家居环境让使用者能更好的利用时间,让家庭生活更加舒适,高效且安全。在工业发展的领域,智能家居一直都是各个公司热衷于研究的方面,想取得的目标是通过网络等信息通信技术手段来实现远程对智能家电的控制,使它能按照人们预想的去工作,而且效率更高效。随着网络通信技术的发展,已经网络化的智能家居系统已经可以提供远程的遥控、日常家电的控制、灯光控制、防盗报警、温湿度控制等等多功能应用,而这些功能的出现也能让我们的生活更加方便快捷并且安全系数更高。随着科技力量的发展,经济水平的提高所带来的必然是人们对家居环境越来越高的需求,而智能家居系统作为智能家居的核心部分,也有着越来越重要的地位。由此可见,智能家居领域在未来必将是国家经济发展的一个重要部分。1.2课题的设计要求本课题的研究重点是设计一种ARMcortex-A9开发板的智能家居系统。利用TCP/IP网络通信来完成客户端与开发板的信息交互。客户端通过发送各种指令完成对灯光的控制,利用温湿度传感器测量信息,打包和传输,最终显示到客户端上。课题要求如下:1.客户端发出指令对灯光进行开关控制。2.对室内温度进行测量并将信息反馈到客户端进行显示。3.对室内湿度进行测量并将信息反馈到客户端进行显示。4.用户通过客户端完成实时监控。5.设计了温度阈值,当温度到达设定值时启动蜂鸣器进行警告。1.3课题的研究内容本设计采用的是模块化设计,将客户端,服务器和底层硬件设计分离开来,并且通过制定一些具体的数据传输协议来实现对各个不同模块的通信控制。客户端使用的是QT图形界面开发,该软件具有很强的功能,能够于不同平台之间进行通信,有良好的兼容性,为用户使用提供了更好的人机交互体验。服务器是在linux环境下进行运作,整体是采用了C语言进行功能实现,并且根据自己的需要进行功能的裁剪。底层主要是由ZigBee将从各种传感器数据进行收集识别并解析出命令,再根据传达的命令驱动各种硬件模块进行工作,该部分是在已有的基础上进行修改使用。本文是基于ARM-cortexA9核心的Exynos4412的SOC芯片的主控板,另有一块集成了各种不同传感器的数据采集板,两者之间通过ZigBee模块进行通信。QT客户端运行于Windows系统下的个人PC端上,并且通过连接网线与主控板进行数据通信。1.4国内外发展现状智能家居的概念更早起源于美国,所以最早的一栋智能建筑出现在了1984年的美国康涅狄格州。这栋里程碑式的的建筑只是用了一栋旧大楼改造而来,它只是采用了计算机系统对楼层中的照明、冰箱、空调等设备进行监控,并且提供了各种信息方面的服务。到了2000年,在美国各州已经有高达4万多的用户使用了这种智能化系统。又到了2003年,智能化家居的建设已经带来了高达4500亿美元的收益,极高的经济收益,更是激发了国外相关企业的争先研究。现在,国外的智能家居系统技术已经逐步走向成熟,预计每年都有超过50%的新房采用一定的智能化家居功能。而且由于技术日益成熟,成本也在逐渐降低,以往只有高收入人群才可以享受到的优质服务现在也已经面向群众。智能家居系统从二十世纪90年代后期传入我国后,我国的智能化小区数量也是日益增加。众所周知,在我国最早的智能化住宅出现在上海、广州等沿海城市,并且逐步开始向内陆发展。在1999年,建筑部勘察设计司、建筑部住宅产业化办公室联合举办的全国小区智能化示范工程,是标志着我国住宅小区智能化进入了一个新的阶段。由于我国的智能家居研究起步的比较晚,目前还没有形成一个固定的国家标准。主要还是采用国外的一些技术,但是也有一些企业推出了自己的产品。国内的各大软、硬件机构都在积极研究、开发更好的智能化设备,来解决目前智能化产品的各项弊端,增加它的实用性。研发人员的不断探索拉近了我们于国外的技术差距,我国的智能家居领域相信有一个很好的未来。2智能家居系统的设计和实现2.1智能家居系统概述智能家居系统就是一个采用先进的计算机技术,结合网络通信技术、综合布线技术并且依照人体工程学原理,融合进个性需求,该系统将把家居中与生活相关的各项子系统结合起来,通过网络化综合智能控制和管理,给人带来更好的体验。如图2.1所示,用户可通过自己的需求和实际的情况来完成对家电的控制,通过网络通信手段将控制指令发送给各个智能家电,支持多种网络通信方式,可以根据用户的实际需求进行调整,也可以对它们进行预设,让它在规定的时间进行工作,而且当家居中添入新的家电时,操作方式也很简单,不需要重新修改系统,有很好的扩展性。图2.1智能家居示意图2.2智能家居系统的模块化设计综合了智能家居系统的先进理念和功能需求,该项目可以化分为四个重要模块:如图2.2所示:上位机(QT客户端(PC))、网络通信模块、基于ARM平台的数据处理服务器(Exynos主控板),集成多个传感器的数据板(M0)。其中数据板主要负责环境信息的采集和提供灯控系统,通过ZigBee模块与主控板实现数据通信。主控板主要用来实现数据的分析以及摄像头数据的解压缩,客户端为用户使用的界面,可以传达各项指令达成控制和实时监控。系统框图如图2.2所示。图2.2智能家居模块化示意图其余子功能模块如表2.1所示表2.1智能家居模块化细分功能表功能类别标识符子功能名称描述UART接口模块ZigBee协调节点对内:通过UART接口与Cortex-A9单板连接,实现基本的串口通信;对外:通过ZigBee实现与外部各个Cortex-M0数据采集模块进行通信,包括模块的控制和数据采集;功能:1.通过ZigBee接收温湿度、光照度等信息(已实现);2.接收Cortex-A9主控板的命令传输给外部Cortex-M0数据采集模块实现控制;QT用户界面功能页面切换按照功能的不同选用不同的界面进行操作。实时监控页面发送获取摄像头采集的数据的请求,服务器接收上位机的命令进行解析,识别出摄像头数据的请求,并把内容打包发给客户端温、湿度控制界面上位机发送获取请求,服务器接收上位机的命令进行解析,识别出环境信息的请求,并打包发给上位机,上位机接受数据包之后,拆分并在界面上显示出来。灯光控制界面上位机通过发送命令,服务器接收上位机的命令进行解析,识别出关于灯的相关控制命令,然后调用灯开,或灯关的函数摄像头模块Camera_open打开摄像头摄像头开启Camera_close关闭摄像头数据发送完成后,关闭摄像头2.3Exynos4412平台服务器的设计与实现在智能家居系统中,由于每个家庭的内部环境有所不同,所以对环境的采集也需要灵活地变换,需要设计出能满足所有不同类型的家庭环境,适用于不同的操作系统,还要能支持各种远程端的操作,复杂环境下的命令识别解析。这些要求都说明需要一种功能强大,运算速度快,能量耗低的SOC,同时能扩展多个不同的外部电路,实现对新接入的外部设备进行各项操作,由于需要进行处理的数据比较多,而且功能复杂,所以需要通过多线程/多进程实现对多种任务的并发处理,常见的一些51单片机等单线程设备难以满足需求,所以本项目选用了基于ARMCortex-A9核心的三星Exynos4412芯片集成于主控板上,可以搭载Linux系统,4核处理器支持多任务处理,编程时可以极大的提高效率,加快了各种数据处理,使指令能更快被识别执行。2.3.1Exynos4412平台服务器硬件电路Exynos4412采用了三星32nmHKMG工艺,是三星旗下的第一款四核处理器,同时主控板上具有多种不同的外设接口,在搭载了Linux操作系统后可实现连接上的用户对多任务的处理的请求,可以作为服务器硬件平台完成指令的中转。主控板硬件电路模块如图2.3所示:图2.3主控板服务器电路模块示意图主控板服务器硬件电路模块主要包括:音频模块、通讯模块、A/D转换模块、摄像头模块红外检测模块,蜂鸣器电路模块,USART串口模块、以太网模块、USB接口等。种类多种多样,具有很好的扩展性,根据不同的需要选择需要的功能开发。图2.4为主控板实物图:图2.4主控板服务器电路实物图2.3.2Exynos4412平台服务器程序设计服务器(主控板)需要同时进行数据采集板发过来的环境信息的接受和解析,同时需要转发摄像头传来的图像信息,还要接受来自上位机的指令,识别并解析指令。对此需要程序能同时进行多项处理且互不干扰,所以采用了多进程的程序设计思路,主程序采用模块化编程的设计理念进行设计结构,由于需要保证传输时的数据具有很好的可靠性,所以采用了TCP/IP来进行服务器搭建,服务器搭建完成后,就开始循环的接收来自数据采集板的各项环境数据信息,同时等待QT客户端传来的指令,当客户端发送来开启摄像头的指令时,服务器识别指令后马上就判断出使用fork()开辟一个新的进程将采集到的图片数据发送回客户端,实现任务的并发处理,互相不产生干扰,而且由于摄像头的采集出来的数据量比较大,采用TCP进行传输效果不好,所以需要采用实时性更高的UDP通信协议传输图像信息。2.4传感器模块的设计与实现该模板是通过一块M0的ARM开发板进行收集环境的温度、湿度、亮度环境信息,其中具体数据是通过Zigbee协议进行接收或者发送,使用uart串口协议通过USB连接到A9的ARM开发板进行接收,其数据的格式如表2.2下所示:表2.2M0环境数据格式解析通过接收到的数据进行解析后,发送到已连接的上位机,进行环境信息的显示。数据采集板采集的数据需要经过处理打包,通过在数据头尾部分别加入帧头、帧尾以及CRC校验等机制实现打包,数据包通过ZigBee模块由SPI总线传送给主控板,由于ZigBee技术拥有非常优秀的拓扑网络布局优势,灵活组网,成本低廉,随着家庭使用的设备不断增多,需要接入的设备也越多,运用ZigBee技术非常的方便高效。2.4.1传感器模块硬件电路数据采集板使用的是一款基于ARM-cortex-m0内核的LPC11C14芯片,是一款低成本的32位MCU,运行频率在50MHz,周边扩展了包括16/32KB的闪存、8KB的数据存储器、一个CAN控制器、UART、两个SPI、I2C、一个24位系统计数器、两个16位计数器、两个32位计时器、8通道10位高精度数模转换芯片,具有32个向量中断。数据采集板的程序是在已有的基础上做了适当的删改,主要是使用到其中的LED灯、温湿度传感器和蜂鸣器和ZigBee模块,其完整的硬件电路示意图如图2.5所示,实物图2.6如所示图2.5数据采集板硬件电路示意图图2.6数据采集板实物图2.4.2ZigBee模块简介ZigBee是一项新型的无线通信技术,适用于传输范围短数据传输速率低的一系列电子元器件设备之间。相较于其他网络通信技术,ZigBee技术能够利用复杂数据加密算法实现数据的可靠传输,并实现CRC数据循环冗余校验和对各种数据传输环境的自适应[1]。ZigBee网络基于IEEE802国际标准、ZigBee协议栈。ZigBee技术的特点是小成本、低功耗、低速度的双向无线通讯技术[2]。适用于距离短。功耗低、传输速率要求不高的应用场景,实现周期性数据、间歇性数据、低反应时间数据传输应用。ZigBee网络是一种可靠性非常高的无线传输技术,技术上类似于CDMA和GSM,其标准的通信距离是75米并且可以在此基础上扩展到几百千米远,更重要的是可支持无限扩展。ZigBee技术主要为工业自动化控制技术中的数据传输而设计,因此与GSM和CDMA等为语音通信而服务的移动通信不同,它具有使用方便简单,工作可靠、价格低廉,与通信基站动辄上百万的价格相比,ZigBee网络节点的建设不到千元人民币。本文采用的是ZICM2410模块,集成了单片CPU,为无线通信提供了高性能、低成本的收发硬件基础。它包含了多个通用的I/O引脚、串口、SPI、定时器等。同时附带基带射频发射器,提供500kbps和1Mbps的无线传输速率。该模块是一种高集成的模块,大大简化了开发步骤,降低了开发的成本和资源。3cortex-A9开发板的系统移植3.1系统移植概述嵌入式系统不断的更新换代,越来越智能化和网络化,这就需要开放共享,提供丰富的API,来集思广益。Linux系统是一款开源的系统,使用者可以根据自己的需求裁剪内核,定制出属于自己的心意的内核。但是,Linux在嵌入式中的应用仍存在有较多的问题,首先,Linux系统不是为嵌入式而诞生的,并且它对硬件设备的要求比较高,而嵌入式系统的硬件条件一般比较有限。其次,Linux的体系也相对比较庞杂,门槛较高,理解和维护的难度较大。由于Linux的源代码有着开放特性,移植在产品上时,不会有专业的技术服务,遇到内部技术问题,不能针对性地去解决,可以试着询问专业技术人员或有相关研究的老师,否则只能自己多查阅资料进行解决。以下是系统移植的几个重要步骤:搭建交叉编译环境烧写U-boot初始化引导程序内核(kernel)的配置,编译,移植、调试根文件系统的制作3.2交叉编译环境搭建为什么要进行交叉编译-嵌入式系统的硬件条件有限(包括CPU频率、内存容量等)-嵌入式系统的MCU体系结构和指令集千差万别,各有不同(ARM、MIPS、51等体系结构的不同)-提高开发效率-目前的主流模式——Host/target模式[3],但这又引起不小的问题:因为Target和Host的处理器机构不同,因此我们不能直接用计算机上既有的开发工具,必须利用跨平台开发工具,即在Host上能在Target上运行格式的目标文件,称之为交叉编译(Crossovertoolchain)[4]。为什么要搭建交叉编译环境因为有的目的平台上不允许或不能够安装我们所需要的编译器,而我们又需要这个编译器的某些特征;还因为有的目的平台上的资源太少,无法满足我们的需求;还可能因为目的平台还没有建立,连操作系统都没有,根本谈不上运行什么编译器。进行交叉编译器的安装过程:1.将gcc-4.6.4.tar.xz拷贝到虚拟机的某一个目录中 cpgcc-4.6.4.tar.xz~/workspace/fs4412 2.进入到所对应的目录中,解压gcc-4.6.4.tar.xz cd~/workspace/fs4412 tar-xvfgcc-4.6.4.tar.xz3.进入到gcc-4.6.4目录中,通过pwd查看绝对路径 cdgcc-4.6.4/bin pwd===>/home/farsight/workspace/fs4412/gcc-4.6.4/bin4.修改PATH的值 进入到/etc/bash.bashrc,在文件的最前面添加 sudovim/etc/bash.bashrcexportPATH=$PATH:/home/farsight/workspace/fs4412/gcc-4.6.4/bin5.重启 source/etc/bash.bashrc3.3配置TFTP和NFS服务器嵌入式系统移植时,将uboot加入目标机的flash中,内核文件放在PC中,主控板上电后将通过TFTP协议自动下载PC中的TFTP文件传输服务器目录中的内核文件和设备树文件到开发板内存中,而根文件系统主要挂载在NFS服务器上,开发板可以远程访问根文件系统。TFTP是基于udp协议实现的,因此使用起来非常方便快捷,是用来远程下载文件最简单的协议。TFTP文件传输速度快,可以在主机中先编译好内核再传入开发板,最大限度地利用资源,节约开发时间。NFS(NetworkFileSystem)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。下面介绍TFTP服务器的配置步骤:检查PC是否已经安装了TFTP服务器#sudoapt-cachepolicytftpd-hpa如果没有安装配置,重新安装服务器#sudoapt-getinstalltftpd-hpatftp-hpa注意:虚拟机需要连外网,也就是能够ping配置TFTP服务器#sudovim/etc/default/tftpd-hpa TFTP_USERNAME="tftp" TFTP_DIRECTORY="/tftpboot" TFTP_ADDRESS=":69" TFTP_OPTIONS="-l-c-s"在根目录系统下面创建目录tftpboot,修改共享文件的权限#sudochmod0777/tftpboot启动tftp服务器#sudoservicetftpd-hparestart测试#tftp#tftp>get<filename>#tftp>qNFS服务器所需的条件类似,NFS服务器主要是把本地的某个目录通过网络导出,其他主机可以远程访问该目录。使用时的过程如下:修改/etc/exports文件启动NFS服务器$sudo/etc/init.d/nfs-kernel-serverrestart3.4BootLoader简介BootLoader是硬件启动的一种引导程序,是运行系统的基础,但它又不是系统代码。它是操作系统内核运行前的一小段代码,用于对硬件资源的初始化和设置,并引导之后操作系统的启动。BootLoader一般由汇编语言和C语言组成,要向开发板移植系统时,必须腰围开发板移植BootLoader。不同的BootLoader适配于不同的CPU体系结构,同时也与嵌入式系统硬件配置有关。BootLoader运行过程如图3.1所示图3.1BootLoader运行过程图U-boot的特点:-代码具有标识度,让人容易的看懂,且设计理念十分合理,方便进行移植 -支持多种处理器体系结构 -有多种命令,支持文件系统 -支持多种协议和设备(网络协议、USB、SD等)由于U-boot具有这些特性,所有选用U-boot作为启动代码。而U-boot的烧写过程为:获取U-boot u-boot-2013.01.tar.bz2将U-boot放到自己选定的目录中进入到存放U-boot的目录中解压U-boot进入到U-boot目录中 编译U-boot流程: 1)修改Makefile,指定编译工具同时指定编译的体系架构将: CROSS_COMPILE?=修改为: CROSS_COMPILE?=arm-none-linux-gnueabi- 2)清除配置信息和编译环境等 makedistclean 3)配置编译信息 makeorigen_config 4)编译U-boot make 5)将U-boot.bin拷贝到tftpboot目录中 cpu-boot.bin/var/lib/tftpboot 6)将U-boot烧写到目标板中。3.5Linux内核的编译与移植Linux内核已经是世界上最受欢迎的Unix操作系统,ui最早也是由LinusTorvalds为其提供了Unix操作系统而研发出来的。Linux是一个宏内核系统,它用模块化的编程思想编写完成的,而且可以在使用过程中进行装载或卸载。Linux系统具有高稳定性,可靠性和开源可修改裁剪等诸多优点,Linux内核支持X86、ARM等多种体系结构的处理器,具有完善的网络通信功能。内核的编译步骤:从共享目录中拷贝Linux-3.14-fs4412压缩包到Linux文件系统的某个目录下cplinux-3.14-fs4412.tar.xz/home/farsight/hanburger/kernel/解压压缩包tar-xflinux-3.14-fs4412.tar.xz编译内核makeuImage,如果编译提示缺少mkimage,则将mkimage拷贝到/usr/bin/中即可显示以下信息如图3.2证明编译成功图3.2编译成功示意图将编译好的uImage和exynos4412-fs4412.dtb拷贝到tftpboot目录下cpuImage/tftpbootcpexynos4412-fs4412.dtb/tftpboot启动电路板进入交互模式设置环境变量setipaddr22 //设置【目标机】的ip地址;setserverip33 //设置【开发主机】的ip地址;setgatewayip //设置网关setnetmask //设置子网掩码saveenv //保存环境变量到emmc中注意:必须保证目标机和开发主机的网络在同一网段重启电路板出现如图3.3则表示移植成功图3.3移植成功示意图4基于cortex-A9开发板的网络通信4.1TCP/IP网络协议简介TCP/IP协议主要分成了两个不同的协议,一个是检测网络数据传输差错的传输控制协议即TCP协议,另一个则是专门负责各个网络互联互通的互联网协议即IP协议。网络大多采用分而治之的理念,采用模块化的思维,将网络的各个功能归类划分,让不同层次不同功能有机组合,分工有序,大大提高了网络安全性和传输效率。TCP/IP协议族网络层次图如图4.1所示:图4.1TCP/IP协议族层次图由图可知TCP/IP协议可以划分为四个不同的层,从上到下分别是应用层、传输层、互联网络层、网络接口层(又叫数据链路层),在传输层中有两个比较特别的传输协议,分别是TCP协议和UDP协议,TCP是一种有连接的可靠性高的通信协议,而UDP是无连接的不保证可靠性的通信协议,两种通信协议都有各自的优缺点,适用场景也是有着很大的不同,在面对不同实际情况时要选取合适的通信协议,而在本项目中两种协议皆得到了运用,面对指令等需要精确稳定的通信环境,选取了TCP来完成,而摄像头的数据量大选取的是UDP来实现。4.2SOCKET简介Socket最早源于BSDSocket即伯克利套接字,支持UNIX下的TCP/IP通信,之后被广泛应用并移植到各个平台上,它不属于某个具体的网络协议,而是一种通用的网络编程接口。由于TCP/IP协议已经被集成进了Linux操作系统内核中,使用socket这一通用的网络编程接口,可以使我们方便地进行I/O操作,不用担心太多机器间的差异。为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCP/IP协议交互提供了称为套接字(Socket)的接口。4.3QT客户端界面编程4.3.1QT简介Qt是挪威Trolltech开发的一款多平台并基于C++的图像界面的应用程序编程开发软件,Qt同Window上的Motif,Openwin,GTK等图形界面库和Windows平台上的MFC,OWL,VCL,ATL是同类型的东西[5]。根据官方描述,QtCreator的设计目标是使开发人员能够利用Qt这个应用程序框架更加快速及轻易的完成各项开发任务,减轻开发过程的各种繁琐操作,提高效率。而且在QT软件的库中有很多已经被封装好的类以及函数接口,使用者只需要引用库名就可以直接调用库中封装好的函数接口直接得到一个过程的结果,可以更方便的使用,而且让函数结构看起来更加的简洁明了,它还具有图形界面设计的功能,通过建立一个带ui界面的项目就可以通过ui界面设计直接拖动图形对界面进行各项规划及设计。4.3.2QT客户端界面设计首先,采用带ui界面的mainwindow作为程序的主窗口,采用布局的方式,规划了各个功能模块的位置,如图4.2所示:图4.2界面布局图然后通过往布局中添加窗口的方式,让每个布局中显示合适的内容。最左边为选择功能窗口的区域,通过选择不同的功能按钮,访问对应的窗口。这几个按钮同时只能有一个被选中,所有需要勾选Autodefault,作用是在这个布局中同时只能有一个按钮处于按压状态,由于按下按钮后需要显示相应的界面,所有需要让上一个界面隐藏,由于不能将界面delete掉,所有选着添加了一个背景界面,让上一个界面处于没有被选着的状态,但是还存在,这样之前操作过的数据不会丢失。用一个全局变量保存当前选着的按钮,采用自拟定信号的方式,告诉主窗口显示哪个界面。如图4.3所示:图4.3切换界面模块图最后,中间一大块为功能窗口,为不同的功能进行分类,对于各个按钮采用信号于槽的方式进行操作,设置不同按钮的样式表,对于同一功能的不同按钮也要让这个按钮处于唯一被选着的状态,且同一个按钮处于按压状态时,不能再被操作,需要设置判断条件。由于消息的发送和接收都是由主窗口完成,所有也需要采用带参的信息进行操作,当界面上某个按钮被触发时,发送一个带消息的信号到主窗口,有主窗口与下位机进行通讯,接收消息也是相同的原理。其他就都是对部件进行微调,采用不同的布局相互嵌套使用,设置布局中各个部件所占比例,就可以调整布局的样式,窗口的大小要进行同一,基本上都是再ui界面上进行布局操作,所用到的图片都选着添加到了qt中。如图4.4所示:图4.4温、湿度控制的布局界面4.4基于TCP的信息通信智能家居需要的是各种指令能严格按照预先设计进行工作,所以需要采用一种稳定且可靠的通信方式来进行各项信息的传输和不同指令的识别,避免在某个时间节点发生信息的缺失或出现异常识别的情况。本系统采用了TCP传输控制协议来进行环境信息和控制指令的数据通信,TCP支持多数据流操作,同时具有输入输出缓冲区,当数据发生缺失或错误时,能够在输出缓冲区重新发送相关数据,同时还能对乱序报文重新排序,是一种面向连接的可靠数据传输协议。本项目中,服务器部分主要是C语言来实现,而Qt是基于C++的界面开发平台,所以要保证传输的信息可靠准确,首先要确定的就是控制指令和采集到的信息在客户端和服务器端之间的标识要相同,避免出现传递过去的信息无法被识别造成错误。使用TCP进行信息传输的原理如图4.5所示:图4.5基于TCP的socket通信流程图4.5基于UDP的视频信息采集UDP本身是一种不需要进行连接的网络传输协议,使用UDP作为客户端不需要向TCP的客户端那样进行connect()连接,服务器也不需要额外设置监听listen()和接收accept(),但是由于自身不带有发送缓冲区,进行传输的数据在发生丢失后也将无法再次重传,但是在有稳定且良好的网络条件下,UDP本身还是具有一定的可靠性,由于它的效率很高,适用于有大量的数据进行传输的环境。视频信号在传输过程中需要的是很高的实时性,才能保证画面是一个流程不卡顿的效果,但是使用TCP的话,本身的重传机制将会带来一定的影响,很可能造成画面出现延迟或者断点,视屏画面的凝固等严重后果,因为在传输过程中TCP客户端必须阻塞等待,当重新传输的数据完全正确才能接收到。基于以上原因,UDP具有很高的实时性,而

温馨提示

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

评论

0/150

提交评论