![基于Zigbee组网的智能家居系统设计与实验_第1页](http://file4.renrendoc.com/view/6e520e3a72058eb246ef0efbf9f5f180/6e520e3a72058eb246ef0efbf9f5f1801.gif)
![基于Zigbee组网的智能家居系统设计与实验_第2页](http://file4.renrendoc.com/view/6e520e3a72058eb246ef0efbf9f5f180/6e520e3a72058eb246ef0efbf9f5f1802.gif)
![基于Zigbee组网的智能家居系统设计与实验_第3页](http://file4.renrendoc.com/view/6e520e3a72058eb246ef0efbf9f5f180/6e520e3a72058eb246ef0efbf9f5f1803.gif)
![基于Zigbee组网的智能家居系统设计与实验_第4页](http://file4.renrendoc.com/view/6e520e3a72058eb246ef0efbf9f5f180/6e520e3a72058eb246ef0efbf9f5f1804.gif)
![基于Zigbee组网的智能家居系统设计与实验_第5页](http://file4.renrendoc.com/view/6e520e3a72058eb246ef0efbf9f5f180/6e520e3a72058eb246ef0efbf9f5f1805.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGE摘要Abstract安徽大学学位论文原创性声明学位论文版权使用授权书绪论1.1课题研究背景及科学意义随着计算机技术、信息技术、控制技术的发展以及人们物质生活水平的提高,社会信息化速度的加快促使人们的工作、生活和通讯、信息的关系日益紧密,信息化社会在改变人们生活方式与工作习惯的同时,也对传统的住宅提出了挑战,社会、技术以及经济的进步更使人们的观念随之巨变。人们对家居的要求早已不只是物理空间,更为关注的是一个高度安全性、方便、舒适的居家环境,先进的通讯设施,完备的信息终端设备、家用设备的自动化和智能化、资源使用及支付方式的网络化、家庭工作模式(SOHO)的需求等等,导致家庭智能化势在必然。所谓的家居智能化就是通过家居智能管理系统的设施来实现家庭安全、舒适、信息交互与通信的能力。智能家居网络可以分为家庭数据网络和家庭控制网络两种。家庭数据网络提供高速率的数据传输服务,如电脑和电视、VCD、音响连接及Internet连接等。而家庭控制网络提供简单低速的控制和互连,也具备网络和通信能力,用于灯光照明控制、家居环境监测、家居安防、家庭应急功能等。控制网络中一般有大量的节点设备,这些受控设备的节点控制模块使用电池供电,成本和功耗是组建家庭控制网络中最为重要的两个要素,因此家庭控制网络要突出低功耗、低成本、低复杂度、长电池寿命的特点。传统的家居智能控制系统一般以有线方式来组建,如LonWorks、CEBus、X-10、CANBus等。由于有线网络固有的缺点,布线麻烦,可扩展性差等,将无线网络技术应用于家庭网络已成为势不可挡的趋势。这不仅仅因为无线网络可以提供更大的灵活性、流动性,省去花在综合布线上的费用和精力,而且更因为它符合家庭网络的通讯特点。无线传感将人们工作与生活的广阔空间浓缩于双手可以掌控得距离。Bluetooth、zigbee、UWB、WLAN等一系列无线网络技术的进一步发展,必将大大促进家庭网络智能化的进程。这些使得无线智能家居系统成为可能。本文研究设计的无线智能家居控制网络系统采用ZigBee技术,它是一种近距离、低复杂度、低功耗、低数据速率、低成本的双向无线通信技术,符合基于ZigBee技术的家居智能控制系统设计IEEE802.15.4协议,是IEEE工作组专门为家庭短距离通讯制定的新标准[9]本课题通过设计基于Zigbee组网的家居智能控制系统从而实现家庭的智能管理控制,将对我国数字化社区建设起到一定的推动作用。1.2国内外家居智能控制系统的研究现状及发展趋势自从世界上第一幢智能建筑1984年在美国出现后,智能建筑的系统集成经历了从子系统功能集成到控制系统与控制网络的集成,再到当前的信息系统与网络集成的发展阶段。从媒体内容一级上进行综合与集成,可将他们无缝地统一在应用的框架平台下,按应用需求来进行连接,配置和整合,以达到系统的总体目标。一些经济比较发达的国家先后提出了各种智能家居的方案。智能家居在美国、德国、新加坡、日本等国都有广泛应用。1998年5月新加坡举办的“98亚洲家庭电器与电子消费品国际展览会”上,通过在场内模拟“未来之家”,推出了新加坡模式的家庭智能化系统。它的系统功能包括三表抄送功能、安防报警功能、可视对讲功能、监控中心功能、家电控制功能、有线电视接入、电话接入、住户信息留言功能、家庭智能控制面板、智能布线箱、宽带网接入和统软件配置等。这种“未来之家”家庭智能化系统,市场真正启动尚需时日。科技的发展使人们坚定不移地追求更高品质的生活,智能家居作为高品质信息生活的代表得到越来越多的瞩目。国内对于智能家居系统的研究起步相对较晚,但也形成了很多不同的标准,以下是目前国内有代表性的几种智能家居系统。(1)科龙集团研制的“智能网络家居系统”:由科龙集团研制的“智能网络家居系统”,它由家庭网关、抄表控制器、安防控制器、家电控制器、灯控制器及家庭总线组成。通过远程互联网,可异地控制家庭设备;可以通过电视机遥控器就地关灯;空调、冰箱在不同的季节,其控制方法也会随时而变等自适应的特点。(2)海信的“智能家居控制系统”:它除了实现一般电脑所能实现的各种功能以外,还能够独立担当家庭的“信息家电控制中心”的角色。用户可以通过几乎是一步到位的简单编排控制把诸如电视机、空调、VCD、功放等多种家用电器的控制功能分门别类地储存起来,以便在需要的时候随时调用。(3)清华同方的e-Home数字家园:它是清华同方基于家庭自动化和建筑自动化技术,配合相关的网络、计算机、软件技术,为中国家庭及社区提供全方高校教师硕士学位论文位的数字化服务产品。e-Home数字家园包括三个层次,家庭自动化、小区智能化、社区信息化,目的是使人们的生活工作网络化。(4)“卓越3000”的家用电器智能控制:方正“卓越3000”能将包括电视机、录像机、VCD、摄像机、家用空调等在内的全部家用电器通过控制电路联结在一起,进行集中智能管理,大大提高了家用电器的工作效率和使用效益,成为了用户家庭中的“家电主管”。从消费者的角度来看,家居智能的需求就是以实用为核心,力求实用、易用、人性化,因此家居智能控制系统的有发展方向为:无线化、网络化、不依靠PC的独立存在。对普通用户来说,最为使用方便的就是握着一个无线遥控器在手中指挥,这正是无线移动技术在家居智能领域大受青睐的原因。而正如计算机摆脱大型机进入PC才开始大发展,脱离了PC独立状态的智能家居才能有更大发展空间:不会由于电脑的突然瘫痪而一筹莫展,一切都更加灵活,更加随意。领先的无线移动和不依靠PC的独立形态,将使家变成真正的自由数码空间。未来的家庭将充满用各种无线技术连接起来的数字设备,从而使得家庭内有必要的每一个家用电器和设备都能上网,使用无线技术以形成自己独立的网络,再通过远程的已经连接到Internet上的计算机来控制和监测家庭中的各种设备,真正实现家电信息化、网络化。1.3研究内容家居控制系统中的无线通信技术,常用的短距离无线通信技术和Zigbee技术,根据家居智能控制系统的功能要求,给出了基于ZigBee组网的无线家庭控制系统的硬件实现方案和软件实现方案。在硬件设计中给出具体的设计电路图和PCB制图,软件给出了具体设计流程和设计程序。1.4论文结构(1)绪论,介绍了课题研究背景及科学意义,国内外家居智能控制系统的研究现状及发展趋势和主要的研究内容(2)介绍了家居智能控制系统的技术基础,家庭网络组网技术,ZigBee技术(3)介绍了基于zigbee技术家居智能控制系统的总体设计及透传模块的说明(4)介绍了基于zigbee技术家居智能控制系统的软硬件设计(5)结束语总结了本论文所做的工作以及不足之处和有待改进的方面(6)附录附上了一些芯片的引脚和设计的电路图以及程序家居智能控制系统的技术基础2.1家庭网络组网技术的研究家庭内部网络的组网方式多种多样,各种组网方式的特点各不相同,大胆大体上可以分为两大类,即有线方式和无线方式。2.1.1有线方式有线方式是相对来说更为成熟的方式,按传输介质的不同可以分为很多种,目前主要的传输介质有电话线、双绞线、电缆、电力线等等,按照不同的安装方式又可以分为利用已有布线和重新布线两种方式。利用已有布线在根据不同安装方式分类的有线组网技术中,利用已有布线的方式是最简单最方便的一种,其中利用家中现有的电力线是采用最为多的,大多数家用电器和设备都是采用交流电源供电,因此利用现有的电源线和插座就能将各种设备连入网络。但是电力线易受闪电、电火花等的干扰,从而限制了传输信号的带宽和数据的传输速率。目前国际上采用电力线作为传输介质的组网方案有X-10,CEBus等。利用电话线作为家庭组网传输介质也是一种可选方案,电话是线代家庭的必备设施,利用电话线组网施工和安装比较方便。利用频分多路技术在一条电话线上划分出多个信道,同时满足宽带业务、电话业务、家庭内部数据传输的需要,互不干扰。电话线组网方式价格低廉、抗干扰能力较强,但是一般住宅预留的电话线家口未必可以满足大规模智能家庭网络的需要。HomePNA技术是目前较为流行的使用电话线建设智能家庭网络的协议规范。重新布线利用以太网进行家庭网络布线也是一种很有吸引力的技术方案。其优势在于以太网技术发展至今已十分成熟,设备容易购买,同时成本较低,可靠度较高。可以说以太网技术是目前组建局域网的主要技术。器缺点在于,组建以太网必须重新安装双绞线和网络设备,这必将影响到居室整体的协调与美观,而且不宜与日常的维护。因此,以太网技术并非组建家庭网络的最佳选择方案。IEEE1394总新标准是家庭内部重新布线构建家庭网络的另一方案。它主要采用双绞线或者光纤作为传输介质,在一条总线上支持63个设备。新的IEEE1394.b标准的传输速率最高可达惊人的Gbps的数量级,并且具有可调数据传输速率。因此,它主要用来构建家庭高速A/V子网,用于传输大容量的家庭音频、视频信号。器缺点是相对其他技术成本较高,不易推广。2.1.2无线方式目前,存在有很多短距离无线通信技术,在此将这些相关技术进行简单的介绍分析比较,目的在于更好的了解它们各自的技术性能和应用领域[19]。1.蓝牙技术(BluetoothTechnology)蓝牙技术是使用2.4GHz的ISM公用频道的一种短距离、低成本的无线接入技术,主要应用于近距离的语言和数据传输业务。蓝牙设备的工作频段选用全世界范围内都可自由使用的2.4GHzISM频段。用户无需申请可使用,频道采用23个或79个频道间隔为1MHz时分双工方式。采用跳频速率为1600跳/秒,使得蓝牙系统具有足够高的抗干扰能力,设备简单性能优越。根据其发射功率的不同,蓝牙设备之间的有效通讯距离大约为10~100m。蓝牙设备组网灵活,提供点对点和点对多点的无线连接基于TDMA原理组网,蓝牙技术安全除采用跳频扩展技术和低发射功率等常规安全技术还采用三级安全模式进行管理控制[3]。2.Wi-Fi(IEEE802.11WirelessFidelity)Wi-Fi使用IEEE802.11b或802.11a无线电技术提供安全、可靠、快速的无线连通性。Wi-Fi网络可以使用来互连电脑链接电脑上互连网。Wi-Fi网络在无执照的2.4和5千兆Hz的无线电频带经营,数据速率可达11Mbps(802.11b)~54Mbps(802.11a),或包含以上两条频带的产品(双重频带)。Wi-Fi覆盖范围很广,可达100m,但其电波易受干扰速度较快。提供个人及公司内部人员使用局域网,用户不再使用Cable上网。由于使用电波作为传送媒介,资料包被截取的可能性高,这也成为用户所担心问题。现在Wi-Fi产品利用WED(WiredEquivalentPrivacy)技术作资料加密之用。3.超宽带(UWB:Ultra-WideBand)无线技术UWB是一个新兴的高速短距离通信技术,根据2002年2月14日美国FFC(FederalCommunicationCommission,联邦通信委员会)从信号带宽的角度给出了UWB信号的确切定义:UWB信号是指“-10dB功率点处的相对带宽大于高校教师硕士学位论文725%或射频的绝对带宽大于1.5GHz”的信号。该技术覆盖的频谱范围为3.1~10.6GHz,频谱范围很宽,但是发射功率非常低,低于-41dbm。在短距离(13m以下)有很大优势,最高传输速度可达1Gb/S。而传统的窄带技术在长距离、低速传输具有优势。UWB技术目前可以支持114Mb/S的传输速度,距离13m完全可以满足短距离家庭娱乐应用需求,直接传输宽带视频数码流。4.ZigBee(IEEE802.15.4)ZigBee是一种新兴的短距离、低功率低速率无线接入技术。工作在2.4GHzISM频段,速率为10M~250Kb/S,传输距离为10~75m,技术和蓝牙接近。但大多时候处于睡眠模式,适合于不需实时传输或连续更新的场合。ZigBee是IEEE802.15.4的扩展集。目前ZigBee联盟包含有70多成员。物理层标准采用三个频段:北美2.4G和915MHz、欧洲868MHz。ZigBee采用基本的主从结构配合静态的星型网络,因此更适合于使用频率低、传输速率低的设备。激活时延短、仅15ms、低功耗等特点,将成为未来自动监控、遥控领域的新技术[4][5][6]。5.IrDA(Infrared)红外技术1993年,由20多个大厂商发起成立了红外数据协会(IrDA:InfraredDataAssociation)统一了红外通信标准,该标准就是红外(IrDA)技术,最初传输速率为4Mbps,目前其传输速率已经达到了16Mbps,采用4PPM调制解调。红外通讯一般采用红外波段内的近红外线、波长0.75µm和25µm之间。由于波长短,对障碍物的衍射能差,通信距离通常最大不超过10m,并且通信角度不能超过30。,所以更适合应用在需要短距离无线点对点场合。目前其应用已相当成熟,其规范协议主要有:物理层规范、连接建立协议和连接管理协议等。6.数字增强无绳电话技术数字增强无绳电话(DECT)技术为欧洲下一代无绳电话标准,DECT采用1.8GHz频带以及微微小区蜂窝结构,话音编码采用32kbps的ADPCM,无线接口技术基于TDMA/FDMA/MC(MultipleCarrier)技术,一个终端可在所有载频和任意组合时隙单元中进行无线寻址,传输的信息通常为话音信息,但随着技术的发展和社会的需要,其技术也在不断地发展和改进,在不影响话音信息传输质量的基础上,增加了数字传输业务,数据可在同一信道上传送,因此,数字增强无绳电话标准可支持羽化、高速数据和视频传输,它主要用于住宅、商业区、居民基于ZigBee技术的家居智能控制系统设计8区、公众区域的本地环路内慢速移动设备之间的通信。7.家庭无线电射频技术家庭无线电射频(HomeRF)无线联网标准是由Proxim、西门子、摩托罗拉、康柏电脑等技术巨头于1998年发起组建的HomeRF工作组负责研发的,其研发初衷旨在为家庭无线联网提供一种组网方便、易用、成本低廉的通用性标准,它汲取了IEEE802.11与DECT等无线标准优势,能够有效降低话音和数据传输成本,可提供1~2Mbps的数据传输带宽,新的HomeRF2.x标准的最高数据传输带宽则可达10Mbps,该技术工作频率为2.4GHz,其主要应用于家庭无线组网,可链接127个设备。该技术标准一推出,就在市场上引起了广泛关注,并取得了极大成功。8.射频识别技术无线射频识别(RFID:RadioFrequencyIdentification)或称射频识别技术,是一种非接触式的自动识别技术,是二十世纪90年代兴起的一项非接触式自动识别技术。它是利用射频方式进行非接触双向通信,以达到自动识别目标对象并获取相关数据,具有精度高、适应环境能力强、抗干扰强、操作快捷等许多优点。射频卡实现了免接触操作,应用便利,无机械磨损,寿命长,无需可见光源,穿透性好,抗污染能力和耐久性强,而且,可以在恶劣环境下工作,对环境要求低,读取距离远,无需与目标接触就可以得到数据,支持写入数据,无需重新制作新的标签,可重复使用,并且使用了防冲撞技术,能够识别高速运动物体并可同时识别多个射频卡。2.2ZigBee技术2.2.1ZigBee技术的特点及应用优势ZigBee技术是一种具有统一技术标准的短距离无线通信技术,其PHY层和MAC层协议为IEEE802.15.4协议标准,网络层由ZigBee技术联盟制定,应用层的开发应用根据用户自己的应用需求,对其进行开发利用,因此该技术能够为用户提供机动、灵活的组网方式。其技术特点如下[9]:(1)低速率:数据传输速率只有20~250kb/s,分别提供250kb/s(2.4GHz)、40kb/s(915MHz)和20kb/s(868MHz)的原始数据吞吐率,满足低高校教师硕士学位论文9速率传输数据的应用需求。(2)低功耗:在低耗电待机模式下,两节普通5号电池可使用6~24个月,免去了频繁更换电池的麻烦。(3)低成本:因为Zigbee数据传输速率低、协议简单,所以大大降低成本。且ZigBee协议免收专利费、成本低,由于数据传输速率低、协议简单,所以大大地降低了产品成本。积极投入ZigBee产品开发的Motorola以及Philips等公司.2003年就已经正式推出较蓝牙技术更为便宜的应用产品芯片。(4)时延短:通信时延和从休眠状态激活的时延都非常短,典型的搜索设备的时延为30ms,休眠激活的时延是15ms,活动设备信道接入的时延为15ms。因此ZigBee技术适用于对时延要求苛刻的无线控制等应用。(5)可靠:采取了碰撞避免策略,同时为需要固定带宽的通信业务预留了专用时隙,避开了发送数据的竞争和冲突。MAC层采用了完全确认的数据传输模式,每个发送的数据包都必须等待接收方的确认信息。(6)安全:ZigBee提供了基于循环冗余校验(CRC)的数据包完整性检查功能,支持鉴权和认证,采用AES-128的加密算法,各个应用可以灵活确定其安全属性。(7)网络容量大:每个ZigBee网络最多可支持255台设备,也就是说每个ZigBee设备可以与另外254台设备再进行连接,即网络上最大可连接64770台设备。(8)有效范围小:有效覆盖范围10~75m之间,具体依据实际发射功率的大小和各种不同的应用模式而定,基本上能够覆盖普通的家庭或办公室环境。工作频段灵活:网络上可使用的频段分别为2.4GHZ、868MHZ(欧洲)及915MHZ(美国),均为非控带无线频段。现有的无线局域网技术大部分使用免费频段,但传输速度和发射功率各不相同。各种用电器对网络的要求也不同,如多媒体设备要求较高的数据传输速度和较好的服务质量,而家电设备要求低速但安全可靠的传输控制指令,所以各种无线技术的设计诉求不尽相同。鉴于ZigBee的技术特性,它非常适合于家电和小型电子设备的无线控制指令传输。ZigBee联盟认为,ZigBee可以用于PC外设(鼠标、键盘和游戏操控杆)、消费类电子设备、家庭智能控制(照明、煤气表基于ZigBee技术的家居智能控制系统设计10及报警等)、电子玩具、医护(监视器和传感器)、工控(监视器、传感器和自动控制设备)等领域。2.2.2ZigBee协议无线传感器网络节点要进行相互的数据交流就要有相应的无线网络协议(包括MAC层、路由、网络层、应用层等),传统的无线协议很难适应无线传感器的低花费、低能量、高容错性等的要求,这种情况下,ZigBee协议应运而生。Zigbee的基础是IEEE802.15.但IEEE仅处理低级MAC层和物理层协议,因此Zigbee联盟扩展了IEEE,对其网络层协议和API进行了标准化。Zigbee是一种新兴的短距离、低速率的无线网络技术。主要用于近距离无线连接。它有自己的协议标准,在数千个微小的传感器之间相互协调实现通信。这些传感器只需要很少的能量,以接力的方式通过无线电波将数据从一个传感器传到另一个传感器,所以它们的通信效率非常高。Zigbee是一个由可多到65000个无线数传模块组成的一个无线数传网络平台,十分类似现有的移动通信的CDMA网或GSM网,每一个Zigbee网络数传模块类似移动网络的一个基站,在整个网络范围内,它们之间可以进行相互通信;每个网络节点间的距离可以从标准的75米,到扩展后的几百米,甚至几公里;另外整个Zigbee网络还可以与现有的其它的各种网络连接。通常,符合如下条件之一的应用,就可以考虑采用Zigbee技术做无线传输:需要数据采集或监控的网点多;要求传输的数据量不大,而要求设备成本低;要求数据传输可靠性高,安全性高;设备体积很小,不便放置较大的充电电池或者电源模块;电池供电;地形复杂,监测点多,需要较大的网络覆盖;现有移动网络的覆盖盲区;使用现存移动网络进行低数据量传输的遥测遥控系统;使用GPS效果差,或成本太高的局部区域移动目标的定位应用。值得注意的是,在已经发布的ZIGBEEV1.0中并没有规定具体的路由协议,具体协议由协议栈实现。ZigBee堆栈是在IEEE802.15.4标准基础上建立的,定义了协议的MAC和PHY层。ZigBee设备应该包括IEEE802.15.4(该标准定义了RF射频以及与相邻设备之间的通信)的PHY和MAC层,以及ZigBee堆栈层:网络层(NWK)、应用层和安全服务提供层。图1给出了这些组件的概况。ZigBee堆栈层每个ZigBee设备都与一个特定模板有关,可能是公共模板或私有模板。这些模板定义了设备的应用环境、设备类型以及用于设备间通信的簇。公共模板可以确保不同供应商的设备在相同应用领域中的互操作性。设备是由模板定义的,并以应用对象(ApplicationObjects)的形式实现(见图)。每个应用对象通过一个端点连接到ZigBee堆栈的余下部分,它们都是器件中可寻址的组件。从应用角度看,通信的本质就是端点到端点的连接(例如,一个带开关组件的设备与带一个或多个灯组件的远端设备进行通信,目的是将这些灯点亮)。端点之间的通信是通过称之为簇的数据结构实现的。这些簇是应用对象之间共享信息所需的全部属性的容器,在特殊应用中使用的簇在模板中有定义。图2就是设备及其接口的一个例子:每个接口都能接收(用于输入)或发送(用于输出)簇格式的数据。一共有二个特殊的端点,即端点0和端点255。端点0用于整个ZigBee设备的配置和管理。应用程序可以通过端点0与ZigBee堆栈的其它层通信,从而实现对这些层的初始化和配置。附属在端点0的对象被称为ZigBee设备对象(ZD0)。端点255用于向所有端点的广播。端点241到254是保留端点。所有端点都使用应用支持子层(APS)提供的服务。APS通过网络层和安全服务提供层与端点相接,并为数据传送、安全和绑定提供服务,因此能够适配不同但兼容的设备,比如带灯的开关。APS使用网络层(NWK)提供的服务。NWK负责设备到设备的通信,并负责网络中设备初始化所包含的活动、消息路由和网络发现。应用层可以通过ZigBee设备对象(ZD0)对网络层参数进行配置和访问。802.15.4MAC层IEEE802.15.4标准为低速率无线个人域网(LR-WPAN)定义了OSI模型开始的两层。PHY层定义了无线射频应该具备的特征,它支持二种不同的射频信号,分别位于2450MHz波段和868/915MHz波段。2450MHz波段射频可以提供250kbps的数据速率和16个不同的信道。868/915MHz波段中,868MHz支持1个数据速率为20kbps的信道,915MHz支持10个数据速率为40kbps的信道。MAC层负责相邻设备间的单跳数据通信。它负责建立与网络的同步,支持关联和去关联以及MAC层安全:它能提供二个设备之间的可靠链接。基于zigbee技术家居智能控制系统的总体设计及芯片说明3.1总体方案的设计本方案采取QAZV1ZigBee无线透传模块组网,实现各家用电器间的通信。其中智能家居服务器由PC机、QAZV1ZigBee无线透传模块、USB适配板、串口调试助手等组成。各家用电器由QAZV1ZigBee无线透传模块和家用电器组成。图3-1:系统的结构框图3.2ZigBee透传模块的选择在本课题中选用了QAZV1型zigbee无线透传模块,它是基于TI公司CC2530F256芯片,内部运行Zigbee2007/PRO协议栈,具有zigbee协议的全部特性。针对复杂的zigbee协议,本模块将协议栈嵌入模块内部,只留出串口,用户无需了解zigbee协议栈,只需要读写串口,即可实现数据的无线传输,简单易用,非常适合嵌入用户系统。3.3ZigBee透传模块的说明3.3.1模块主要特性1、自动组网:上电后,模块自动组网,协调器自动给路由分配地址,无需人工干预,模块若掉电,网络可自动修复。2、数据透传:使用串口,可实现数据在任意两个模块之间的传输。数据透明传输:协调器从串口收到数据后,自动发给网络中所有节点;节点从串口收到数据后,会自动发给协调器;指令方式传输:用户可在任意两个节点之间通过指定地址的方式传送到对方。3、模块引脚间距为标准的n*2.54mm,方便用户在面包板上使用:4、模块工作电压3.3V,很方便与外部MCU的串口连接,模块与外部MCU共地后,只需将两者的TX、RX交叉连接即可。3.3.2模块参数1、电气参数工作电压:DC3.3V温度范围:-40℃--+85℃串口速率:38400bps(默认),可设置为9600bps,19200bps,38400bps,57600bps,115200bps无线频率:2.4GHz无线协议:Zigbee2007/PRO传输距离:空旷环境400米发射电流:34mA(最大)接收电流:25mA(最大)接收灵敏度:-96dBm主控芯片:CC2530F2562、外形尺寸3.3.3模块电气连接使用时,模块电源VDD、地GND与外部3.3V电源连接;P0-2(串口接收)、P0-3(串口发送)与外部串口模块连接;复位脚、P0-1(测试键)接外部按键(默认高电平,按下时低电平)。3.3.4模块的自动组网与网络地址获取Zigbee网络通常有三种节点构成:协调器(Coordinator):创建一个Zigbee网络,为最初加入网络的节点分配网络地址(16位),每个Zigbee网络需要唯一的一个协调器;路由器(Router):可以接收、转发数据,起到路由和中继的作用;终端节点(EndDevice):通常为电池供电的低功耗设备,用于采集传感器参数,周期性的发送数据。QABV1透传模块主要实现无线数据传输,每个节点都能随时收发数据,所以节点类型配置为协调器和路由器两种,互相之间的连接网络如下图,黑色的为协调器,红色的为路由器,每个节点都可以收发数据,无需用户干预。Zigbee网络形成的两个要素:• 各节点使用相同无线频率(出厂已默认)。• 各节点使用相同的个域网号(PANID,出厂默认为0x6688),相邻空间组成不同网络,需要不同的PANID号。第一次使用QABV1模块时,先给协调器上电,然后给路由器上电,路由自动寻找Zibgee网络并加入,可以使用TI的SensorMonitor软件来观察网络形态(资料提供软件):3.3.5使用步骤:1、将协调器通过串口连接到PC,打开SensorMonitor软件,选取协调器连接的串口号,点击RUN运行如下,此时可以看到协调器变成红色,表示协调器与PC连接成功(模块波特率需默认的38400):2、将路由器上电,复位脚接高电平,将模块的测试脚(P0_1)与地短接一下,路由器就会自动周期性的发送一个虚拟数据到协调器,协调器收到这个数据后,将其通过串口发送到PC,并在SensorMonitor界面上显示出来,图中,我可以看到网络为每个路由自动分配的地址,这里分别为0x0001,0x143E,他们作为在网络中的标示,可用于指令数据传输中的目标地址。3、陆续将其他路由器上电,并接地一次P0_1测试脚,可以看到全部的网络结构。协调器可直接绑定6个路由,超出的路由通过网络内部的其他路由加入网络,每个路由可允许6个其他路由加入:4、网络形成后,建议将路由器重启,以免直接使用时,路由仍在周期性发送虚拟报告,占用网络资源。建立起来的Zigbee网络会有如下特性:每个协调器允许6个路由加入,每个路由又允许6个路由加入,网络自动分配地址,共五层(协调器为0层),最多支持9330个路由节点。协调器用来创建网络,第一次使用时,需要最先上电。网络形成后,协调器断电,路由之间也可以通信。网络形成后,协调器断电,新的节点也可以申请加入。网络形成后,内部路由的地址(短地址)不变。模块的MAC地址(64位IEEE地址)全球唯一,可作为模块标示。3.3.6模块的数据传输方式数据传输方式分为两种:数据透明传输:传送的第一个字节不是0xFE、0xFD、0xFC,模块自动进入透明传输方式,协调器收到的数据会自动传给所有路由,路由从串口收到的数据会自动发给协调器。数据包最大256字节,但建议不要太长,特别是协调器发送到路由为广播发送,传输速率较慢,建议控制在32字符以内,以免发生丢包。点对点数据传输:网络内部任意节点之间,可通过点对点指令来设置传输,指令格式:0xFD+数据长度(用户自定义)+目标地址+数据,以下面以源节点(地址0x0001)发送数据010203040506到目标地址(0x143E)为例,源节点发送以下数据:FD013E14010203040506其中,FD:数据传输指令01:数据区长度,由用户自定义,不一定等于数据区实际长度,用户可以作为其它标识用途3E14:目标地址,低位在前,高位在后,合起来是0x143E010203040506:数据接收端收到的数据也为FD013E14010203040506点对点传输具有如下特性:可以在网络内任意节点之间传输路由加入网络后,短地址不会发生改变;数据区最多32字节,否则数据传输出错,多出的字节被传给协调器;目标地址=FFFF,为广播发送,会发送到网络内所有节点(含协调器);目标地址=0000,则发送给协调器。3.3.7模块的参数设置模块的PANID、网络地址(短地址)、波特率、物理地址(MAC地址),均可借助串口助手,通过串口指令进行读取或者改写,具体指令见下表:序号指令功能返回备注1FC009901XXXX设定模块的PANID为指定值XXXX(出厂默认为6688)PANID不可以设置为FFFE将PANID设定为FFFF:如果是协调器,将自动产生一个新的PANID,如果是路由器,自动寻找新的网络加入将PANID设定为其他值,如果是协调器,将利用设定的PANID重新建立网络,如果是路由器,将寻找设定的PANID网络并申请加入无模块自动重启后生效2FC009903读取模块的PANID返回模块实际的PANID值若为路由器,其未加入网络时,返回FFFE无须重启3FC009904读取模块的短地址(网络地址)返回模块的网络地址如果模块还没有加入网络,返回值为FFFE协调器的地址永远是0000无须重启4FC009906XX设置模块的串口波特率XX=01:设定为9600XX=02:设定为19200XX=03:设定为38400XX=04:设定为57600XX=05:设定为115200
无模块自动重启后生效5FC009907测试串口波特率(是否和PC机一直)如果串口波特率正确,返回:0102030405如果串口波特率错误,无返回无须重启6FC009908读取模块的物理地址(MAC地址)模块8个字节的MAC地址:如:00124B00013FC361无须重启可利用串口助手对上述指令进行设定,如下图所示,设置好端口和波特率参数,接收和发送均设置为十六进制,以读取模块网络地址为例,在发送框中输入FC009904,在接收框中返回61CC,即为模块的网络地址。基于zigbee技术家居智能控制系统的软硬件设计4.1系统的硬件电路设计4.1.1智能家居服务器的设计4.2系统的软件设计总结与展望参考文献:[1]蒋挺,赵成林.Zigbee紫蜂技术及其应用(IEEE802.15.4)[M].北京:北京邮电大学出版社,2006.[2]王庆云.基于802.15.4协议的Zigbee协议栈实现[硕士学位论文].济南:山东大学,2001.[3]张宏锋.一个基于Zigbee技术的无线传感器网络平台[硕士学位论文].武汉理工大学;20060401.[4]马晋兴,乔永卫,刘智荣.基于Zigbee技术的无线家庭控制[J].TECHNOLOGYPLATFORM.2004.11.[5]韩旭东,张春业,李鹏.传感器无线互联标准及实现[J].电子技术应用.2004-11[6]喻楚云.Zigbee在家庭远程遥控管理系统中的应用[J].单片机及嵌入式系统应用,2006,3:60-61.[7]吴慧敏,成谦.基于802.15.4/Zigbee无线传感器网络节点的物理层设计[J].电子产品世界,2006,8:124-106.[8]禹帆.无线通信网络概论[M].北京:清华大学出版社,2002.[9]蒋建辉.Zigbee网络的设计与实现[硕士论文].苏州大学;20060401.[10]陈淑娟,无线智能家居控制网络设计及协议研究[硕士论文].大连海事大学;20050301.[11]冯琳.无线传感器网络及Zigbee技术的应用研究[硕士论文].合肥工业大学;20060501[12]IEEE802.15.4,Part15.4:WirelessMediumAccessControl(MAC)andPhysical基于ZigBee技术的家居智能控制系统设计附录致谢:在论文的完成过程中,谭守标老师给予了许多指导和帮助,在此表示衷心的感谢。此外,也要感谢身边经常给予帮助的老师和同学。最后,再次感谢谭守标老师所给予的学术上和生活上的指导和启迪,感谢母校在这四年当中对我们的悉心培养,更要感谢为了我的成长进步而奔波劳累的父母。衷心祝愿我的父母和母校所有的老师、同学都能幸福快乐、天天开心。附录资料:不需要的可以自行删除C语言中如何获取时间?精度如何?1使用time_ttime(time_t*timer)精确到秒2使用clock_tclock()得到的是CPU时间精确到1/CLOCKS_PER_SEC秒3计算时间差使用doubledifftime(time_ttimer1,time_ttimer0)4使用DWORDGetTickCount()精确到毫秒5如果使用MFC的CTime类,可以用CTime::GetCurrentTime()精确到秒6要获取高精度时间,可以使用BOOLQueryPerformanceFrequency(LARGE_INTEGER*lpFrequency)获取系统的计数器的频率BOOLQueryPerformanceCounter(LARGE_INTEGER*lpPerformanceCount)获取计数器的值然后用两次计数器的差除以Frequency就得到时间。7MultimediaTimerFunctionsThefollowingfunctionsareusedwithmultimediatimers.timeBeginPeriod/timeEndPeriod/timeGetDevCaps/timeGetSystemTime//*********************************************************************//用标准C实现获取当前系统时间的函数一.time()函数time(&rawtime)函数获取当前时间距1970年1月1日的秒数,以秒计数单位,存于rawtime中。#include"time.h"voidmain(){time_trawtime;structtm*timeinfo;time(&rawtime);timeinfo=localtime(&rawtime);printf("\007Thecurrentdate/timeis:%s",asctime(timeinfo));exit(0);}=================#include--必须的时间函数头文件time_t--时间类型(time.h定义是typedeflongtime_t;追根溯源,time_t是long)structtm--时间结构,time.h定义如下:inttm_sec;inttm_min;inttm_hour;inttm_mday;inttm_mon;inttm_year;inttm_wday;inttm_yday;inttm_isdst;time(&rawtime);--获取时间,以秒计,从1970年1月一日起算,存于rawtimelocaltime(&rawtime);--转为当地时间,tm时间结构asctime()--转为标准ASCII时间格式:星期月日时:分:秒年二.clock()函数,用clock()函数,得到系统启动以后的毫秒级时间,然后除以CLOCKS_PER_SEC,就可以换成“秒”,标准c函数。clock_tclock(void);#includeclock_tt=clock();longsec=t/CLOCKS_PER_SEC;他是记录时钟周期的,实现看来不会很精确,需要试验验证;三.gettime(&t);据说tc2.0的time结构含有毫秒信息#include#includeintmain(void){structtimet;gettime(&t);printf("Thecurrenttimeis:-:d:d.d\n",t.ti_hour,t.ti_min,t.ti_sec,t.ti_hund);return0;}time是一个结构体,,其中成员函数ti_hund是毫秒。。。四.GetTickCount(),这个是windows里面常用来计算程序运行时间的函数;DWORDdwStart=GetTickCount();//这里运行你的程序代码DWORDdwEnd=GetTickCount();则(dwEnd-dwStart)就是你的程序运行时间,以毫秒为单位这个函数只精确到55ms,1个tick就是55ms。五.timeGetTime()t,imeGetTime()基本等于GetTickCount(),但是精度更高DWORDdwStart=timeGetTime();//这里运行你的程序代码DWORDdwEnd=timeGetTime();则(dwEnd-dwStart)就是你的程序运行时间,以毫秒为单位虽然返回的值单位应该是ms,但传说精度只有10ms。=========================================//*****************************************************************Unix##unix时间相关,也是标准库的//*********************************************************************1.timegm函数只是将structtm结构转成time_t结构,不使用时区信息;time_ttimegm(structtm*tm);2.mktime使用时区信息time_tmktime(structtm*tm);timelocal函数是GNU扩展的与posix函数mktime相当time_ttimelocal(structtm*tm);3.gmtime函数只是将time_t结构转成structtm结构,不使用时区信息;structtm*gmtime(consttime_t*clock);4.localtime使用时区信息structtm*localtime(consttime_t*clock);1.time获取时间,stime设置时间time_tt;t=time(&t);2.stime其参数应该是GMT时间,根据本地时区设置为本地时间;intstime(time_t*tp)3.UTC=true表示采用夏时制;4.文件的修改时间等信息全部采用GMT时间存放,不同的系统在得到修改时间后通过localtime转换成本地时间;5.设置时区推荐使用setup来设置;6.设置时区也可以先更变/etc/sysconfig/clock中的设置再将ln-fs/usr/share/zoneinfo/xxxx/xxx/etc/localtime才能重效time_t只能表示68年的范围,即mktime只能返回1970-2038这一段范围的time_t看看你的系统是否有time_t64,它能表示更大的时间范围//***************************************************************windows##Window里面的一些不一样的//*********************************************************************一.CTime()类VC编程一般使用CTime类获得当前日期和时间CTimet=GetCurrentTime();SYSTEMTIME结构包含毫秒信息typedefstruct_SYSTEMTIME{WORDwYear;WORDwMonth;WORDwDayOfWeek;WORDwDay;WORDwHour;WORDwMinute;WORDwSecond;WORDwMilliseconds;}SYSTEMTIME,*PSYSTEMTIME;SYSTEMTIMEt1;GetSystemTime(&t1)CTimecurTime(t1);WORDms=t1.wMilliseconds;SYSTEMTIMEsysTm;::GetLocalTime(&sysTm);在time.h中的_strtime()//只能在windows中用chart[11];_strtime(t);puts(t);//*****************************获得当前日期和时间CTimetm=CTime::GetCurrentTime();CStringstr=tm.Format("%Y-%m-%d");在VC中,我们可以借助CTime时间类,获取系统当前日期,具体使用方法如下:CTimet=CTime::GetCurrentTime();//获取系统日期,存储在t里面intd=t.GetDay();//获得当前日期inty=t.GetYear();//获取当前年份intm=t.GetMonth();//获取当前月份inth=t.GetHour();//获取当前为几时intmm=t.GetMinute();//获取当前分钟ints=t.GetSecond();//获取当前秒intw=t.GetDayOfWeek();//获取星期几,注意1为星期天,7为星期六二.CTimeSpan类如果想计算两段时间的差值,可以使用CTimeSpan类,具体使用方法如下:CTimet1(1999,3,19,22,15,0);CTimet=CTime::GetCurrentTime();CTimeSpanspan=t-t1;//计算当前系统时间与时间t1的间隔intiDay=span.GetDays();//获取这段时间间隔共有多少天intiHour=span.GetTotalHours();//获取总共有多少小时intiMin=span.GetTotalMinutes();//获取总共有多少分钟intiSec=span.GetTotalSeconds();//获取总共有多少秒三._timeb()函数_timeb定义在SYS\TIMEB.H,有四个fieldsdstflagmillitmtimetimezonevoid_ftime(struct_timeb*timeptr);struct_timebtimebuffer;_ftime(&timebuffer);取当前时间:文档讲可以到ms,有人测试,好象只能到16ms!四.设置计时器定义TIMERID#defineTIMERID_JISUANFANGSHI2在适当的地方设置时钟,需要开始其作用的地方;SetTimer(TIMERID_JISUANFANGSHI,200,NULL);在不需要定时器的时候的时候销毁掉时钟KillTimer(TIMERID_JISUANFANGSHI);对应VC程序的消息映射voidCJisuan::OnTimer(UINTnIDEvent){switch(nIDEvent)}##如何设定当前系统时间windowsSYSTEMTIMEm_myLocalTime,*lpSystemTime;m_myLocalTime.wYear=2003;m_myLocalTime.wM;m_myLocalTime.wDay=1;m_myLocalTime.wHour=0;m_myLocalTime.wMinute=0;m_myLocalTime.wSec;m_myLocalTime.wMillisec;lpSystemTime=&m_myLocalTime;if(SetLocalTime(lpSystemTime))//此处换成SetSystemTime()也不行MessageBox("OK!");elseMessageBox("Error!");SYSTEMTIMEm_myLocalTime,*lpSystemTime;m_myLocalTime.wYear=2003;m_myLocalTime.wM;m_myLocalTime.wDay=1;lpSystemTime=&m_myLocalTime;if(SetDate(lpSystemTime))//此处换成SetSystemTime()也不行MessageBox("OK!");elseMessageBox("Error!");本文来自CSDN博客,转载请标明出处:/khuang2008/archive/2008/12/09/3483274.aspx一种制作微秒级精度定时器的方法当使用定时器时,在很多情况下只用到毫秒级的时间间隔,所以只需用到下面的两种常用方式就满足要求了。一是用SetTimer函数建立一个定时器后,在程序中通过处理由定时器发送到线程消息队列中的WM_TIMER消息,而得到定时的效果(退出程序时别忘了调用和SetTimer配对使用的KillTimer函数)。二是利用GetTickCount函数可以返回自计算机启动后的时间,通过两次调用GetTickCount函数,然后控制它们的差值来取得定时效果,此方式跟第一种方式一样,精度也是毫秒级的。用这两种方式取得的定时效果虽然在许多场合已经满足实际的要求,但由于它们的精度只有毫秒级的,而且在要求定时时间间隔小时,实际定时误差大。下面介绍一种能取得高精度定时的方法。在一些计算机硬件系统中,包含有高精度运行计数器(high-resolutionperformancecounter),利用它可以获得高精度定时间隔,其精度与CPU的时钟频率有关。采用这种方法的步骤如下:1、首先调用QueryPerformanceFrequency函数取得高精度运行计数器的频率f。单位是每秒多少次(n/s),此数一般很大。2、在需要定时的代码的两端分别调用QueryPerformanceCounter以取得高精度运行计数器的数值n1,n2。两次数值的差值通过f换算成时间间隔,t=(n2-n1)/f。下面举一个例子来演示这种方法的使用及它的精确度。在VC6.0下用MFC建立一个对话框工程,取名为HightTimer.在对话框面板中控件的布局如下图:其中包含两个静态文本框,两个编辑框和两个按纽。上面和下面位置的编辑框的ID分别为IDC_E_TEST和IDC_E_ACTUAL,通过MFCClassWizard添加的成员变量也分别对应为DWORDm_dwTest和DWORDm_dwAct.“退出”按纽的ID为IDOK,“开始测试”按纽ID为IDC_B_TEST,用MFCClassWizard添加此按纽的单击消息处理函数如下:voidCHightTimerDlg::OnBTest(){//TODO:AddyourcontrolnotificationhandlercodehereUpdateData(TRUE);//取输入的测试时间值到与编辑框相关联的成员变量m_dwTest中LARGE_INTEGERfrequence;if(!QueryPerformanceFrequency(&frequence))//取高精度运行计数器的频率,若硬件不支持则返回FALSEMessageBox("Yourcomputerhardwaredoesn'tsupportthehigh-resolutionperformancecounter","NotSupport",MB_ICONEXCLAMATION|MB_OK);LARGE_INTEGERtest,ret;test.QuadPart=frequence.QuadPart*m_dwTest/1000000;//通过频率换算微秒数到对应的数量(与CPU时钟有关),1秒=1000000微秒ret=MySleep(test);//调用此函数开始延时,返回实际花销的数量m_dwAct=(DWORD)(1000000*ret.QuadPart/frequence.QuadPart);//换算到微秒数UpdateData(FALSE);//显示到对话框面板}其中上面调用的MySleep函数如下:LARGE_INTEGERCHightTimerDlg::MySleep(LARGE_INTEGERInterval)///////////////////////////////////////////////////////////////////////////////////////////////////////////////功能:执行实际的延时功能
//参数:Interval参数为需要执行的延时与时间有关的数量
//返回值:返回此函数执行后实际所用的时间有关的数量
///////////////////////////////////////////////////////////////////////////////////////////////////////////{LARGE_INTEGERprivious,current,Elapse;QueryPerformanceCounter(&privious);current=privious;while(current.QuadPart-privious.QuadPart<Interval.QuadPart)QueryPerformanceCounter(¤t);Elapse.QuadPart=current.QuadPart-privious.QuadPart;returnElapse;}注:别忘了在头文件中为此函数添加函数声明。至此,可以编译和执行此工程了,结果如上图所示。在本人所用的机上(奔腾366,64M内存)测试,当测试时间超过3微秒时,准确度已经非常高了,此时机器执行本身延时函数代码的时间对需要延时的时间影响很小了。上面的函数由于演示测试的需要,没有在函数级封装,下面给出的函数基本上可以以全局函数的形式照搬到别的程序中。BOOLMySleep(DWORDdwInterval)///////////////////////////////////////////////////////////////////////////////////////////////////////////////功能:执行微秒级的延时功能
//参数:Interval参数为需要的延时数(单位:微秒)
//返回值:若计算机硬件不支持此功能,返回FALSE,若函数执行成功,返回TRUE
///////////////////////////////////////////////////////////////////////////////////////////////////////////{BOOLbNormal=TRUE;LARGE_INTEGERfrequence,privious,current,interval;if(!QueryPerformanceFrequency(&frequence)){::MessageBox(NULL,"Yourcomputerhardwaredoesn'tsupportthehigh-resolutionperformancecounter","NotSupport",MB_ICONEXCLAMATION|MB_OK);//或其它的提示信息returnFALSE;}interval.QuadPart=frequence.QuadPart*dwInterval/1000000;bNormal=bNormal&&QueryPerformanceCounter(&privious);current=privious;while(current.QuadPart-privious.QuadPart<interval.QuadPart)bNormal=bNormal&&QueryPerformanceCounter(¤t);returnbNormal;}需要指出的是,由于在此函数中的代码很多,机器在执行这些代码所花费的时间也很长,所以在需要几个微秒的延时时,会影响精度。实际上,读者在熟悉这种方法后,只要使用QueryPerformanceFrequency和QueryPerformanceCounter这两个函数就能按实际需要写出自己的延时代码了。使用CPU时间戳进行高精度计时对关注性能的程序开发人员而言,一个好的计时部件既是益友,也是良师。计时器既可以作为程序组件帮助程序员精确的控制程序进程,又是一件有力的调试武器,在有经验的程序员手里可以尽快的确定程序的性能瓶颈,或者对不同的算法作出有说服力的性能比较。在Windows平台下,常用的计时器有两种,一种是timeGetTime多媒体计时器,它可以提供毫秒级的计时。但这个精度对很多应用场合而言还是太粗糙了。另一种是QueryPerformanceCount计数器,随系统的不同可以提供微秒级的计数。对于实时图形处理、多媒体数据流处理、或者实时系统构造的程序员,善用QueryPerformanceCount/QueryPerformanceFrequency是一项基本功。本文要介绍的,是另一种直接利用PentiumCPU内部时间戳进行计时的高精度计时手段。以下讨论主要得益于《Windows图形编程》一书,第15页-17页,有兴趣的读者可以直接参考该书。关于RDTSC指令的详细讨论,可以参考Intel产品手册。本文仅仅作抛砖之用。在IntelPentium以上级别的CPU中,有一个称为“时间戳(TimeStamp)”的部件,它以64位无符号整型数的格式,记录了自CPU上电以来所经过的时钟周期数。由于目前的CPU主频都非常高,因此这个部件可以达到纳秒级的计时精度。这个精确性是上述两种方法所无法比拟的。在Pentium以上的CPU中,提供了一条机器指令RDTSC(ReadTimeStampCounter)来读取这个时间戳的数字,并将其保存在EDX:EAX寄存器对中。由于EDX:EAX寄存器对恰好是Win32平台下C++语言保存函数返回值的寄存器,所以我们可以把这条指令看成是一个普通的函数调用。像这样:inlineunsigned__int64GetCycleCount(){__asmRDTSC}但是不行,因为RDTSC不被C++的内嵌汇编器直接支持,所以我们要用_emit伪指令直接嵌入该指令的机器码形式0X0F、0X31,如下:inlineunsigned__int64GetCycleCount()
{
__asm_emit0x0F
__asm_emit0x31
}
以后在需要计数器的场合,可以像使用普通的Win32API一样,调用两次GetCycleCount函数,比较两个返回值的差,像这样:
unsignedlongt;
t=(unsignedlong)GetCycleCount();
//DoSomethingtime-intensive...
t-=(unsignedlong)GetCycleCount();
《Windows图形编程》第15页编写了一个类,把这个计数器封装起来。有兴趣的读者可以去参考那个类的代码。作者为了更精确的定时,做了一点小小的改进,把执行RDTSC指令的时间,通过连续两次调用GetCycleCount函数计算出来并保存了起来,以后每次计时结束后,都从实际得到的计数中减掉这
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- S-3-Keto-sphinganine-d18-0-hydrochloride-生命科学试剂-MCE-1677
- CP-LC-0729-生命科学试剂-MCE-3226
- Actinobolin-plus-Actinobolin-生命科学试剂-MCE-7644
- 3-4-Methylenedioxy-pyrovalerone-metabolite-2-hydrochloride-生命科学试剂-MCE-1172
- 2025年度国际贸易违约风险预防与处理合同
- 2025年度范文正式版合同文员岗位职责规范与职业素养培养协议
- 二零二五年度2025年竞业禁止及保密协议模板
- 2025年度风力发电场租赁定金协议模板
- 2025年度篮球联赛裁判员免责声明及赛事执行合同
- 二零二五年度自媒体合伙人合同版:自媒体平台内容创作与推广合同
- 2024-2025学年成都高新区七上数学期末考试试卷【含答案】
- 企业员工食堂管理制度框架
- 电力沟施工组织设计-电缆沟
- 《法律援助》课件
- 2024年山东铁投集团招聘笔试参考题库含答案解析
- XX区XXX灌区水资源论证报告书
- 新教材教科版五年级下册科学全册课时练(课后作业设计)(含答案)
- 电厂钢结构施工方案(53页)
- 7.5正态分布课件(共26张PPT)
- 水体国产载体固化微生物
- 七年级语文课外阅读理解练习
评论
0/150
提交评论