基于单片机的多功能环境检测系统毕业设计.docx

上传人:夺命阿水 文档编号:845508 上传时间:2023-12-24 格式:DOCX 页数:31 大小:199.28KB
返回 下载 相关 举报
基于单片机的多功能环境检测系统毕业设计.docx_第1页
第1页 / 共31页
基于单片机的多功能环境检测系统毕业设计.docx_第2页
第2页 / 共31页
基于单片机的多功能环境检测系统毕业设计.docx_第3页
第3页 / 共31页
基于单片机的多功能环境检测系统毕业设计.docx_第4页
第4页 / 共31页
基于单片机的多功能环境检测系统毕业设计.docx_第5页
第5页 / 共31页
点击查看更多>>
资源描述

《基于单片机的多功能环境检测系统毕业设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的多功能环境检测系统毕业设计.docx(31页珍藏版)》请在课桌文档上搜索。

1、XX学院毕业设计论文题目:基于单片机的多功能环境检测系统设计作者:指导教师:专业:电气自动化时间:XX学院毕业论文基于单片机的多功能环境监测系统设计-串口通信与界面设计Thedesignofmultifunctionenvironmentalmonitoringbasedonsingle-chipSerialcommunicationsandinterfacedesign摘要随着工业技术的开展,环境问题已经成为全世界关注的问题。近年来,水土流失、荒漠化、草原退化和物种减少;生态相当脆弱,自然灾害频繁;环境污染严重,直接危及社会、经济的开展。人们已经认识到,为了保护环境,就将对环境的演化趋势、特

2、点及存在的问题作进一步的细致的了解。多功能环境监测是利用各种技术测定和分析生命系统各层次对自然或人为作用的反响或反响效应的综合表征来判断和评价这些干扰对环境产生的影响、危害及其变化规律,为环境质量的评估、调控和环境管理提供科学依据。本课题从国内外环境监测系统的研究现状出发,结合实际情况设计一个基于单片机的多功能环境监测系统。本文主要负责串口通信及界面软件的设计。其中,上位机软件主要以WindoWSXP为操作平台,采用DeIPhi7.0编写。DeIPhi是一种可视化的、快速的应用程序,具有面向对象编程,支持团队开发,提供工程管理,对数据库的良好支持等特性,是一个集数据通信、存储、查询、处理于一体

3、的综合性软件。本设计能够实现以下功能:PC机通过串行口与下位机通信,将下位机采集到的温、湿度及光线数据在PC机上实时显示;对历史数据进行查询、分析、统计,并能将相应的结果打印出来。关键词:温湿度;光线状况;上位机;串口通信AbstractWiththedevelopmentofindustrialtechnology,environmentalissueshavebecometheworldconcern.Inrecentyears,soilerosion,desertification,grasslanddegradationandlossofbiodiversity;ecologyvery

4、fragileandfrequentnaturaldisasters;environmentalpollution,directlythreateningthesocialandeconomicdevelopment.Environmentalmonitoringistheuseofmulti-functionmeasurementandanalysistechnologysystematalllevelsoflifetonaturalorman-maderoleofresponseorfeedbackeffectsofthecomprehensivecharacterizationtodet

5、ermineandevaluatetheimpactofinterferenceontheenvironment,endangertheirtrends,theenvironmentalqualityassessment,controlandprovidethescientificbasisforenvironmentalmanagement.Thistopicembarksfromthedomesticandforeignenvironmentalmonitoringsystem,sresearchpresentsituation,theunionactualsituationdesigns

6、onebasedonmonolithicintegratedcircuit,smulti-purposeenvironmentalmonitoringsystem.Thisarticleprimarycognizanceserialportcorrespondenceandcontactsurfacesoftwaresdesign.And,thesuperiormachinesoftwaremainlytakeWindowsXPastheserviceplatform,usestheDelphi7.0compilation.Delphiisonekindofvisualization,thef

7、astapplicationprocedure,hastheobject-orientedprogramming,supportstheteamtodevelop,providestheprojectmanagement,todatabasecharacteristicsandsoongoodsupport,isacollectiondatacommunication,thememory,theinquiry,processinginabody,scomprehensivesoftware.Thisdesigncanrealizethefollowingfunction:PCmachineth

8、roughserialportandlowerpositionmachinecorrespondence,lowerpositionmachinegatheringwarm,humidityandopticalfiberdataonthePCmachinerealtimedisplay;Carriesontheinquiry,theanalysis,thestatisticstothehistoricaldata,andcanprintthecorrespondingresult.Keywords:mperatureandhumidity;Lightingconditions;PC;Seria

9、lCommunication目录第一章绪论11.l课题背景1国内外环境监测现状及开展趋势2.1开展现状22开展趋势3本课题主要工作4第二章系统设计总体方案5监测系统结构框图5监测终端的设计5通信方式的选择6第三章上位机开发环境与主要技术83. 1上位机开发平台83.2数据库方案的实现83.3串口通信的实现方法9概述9串口通信APl函数的实现原理11串口类的开发13第四章使用SPComm控件实现串口通信14安装SPComm控件14SPComm的主要属性,方法和事件144.2.1属性144.2.2方法154. 2.3事件15SPComiri的使用16第五章上位机软件设计方案195. 1系统设计概述

10、196. 2数据库平台的选择197. 3串口通信在本系统中的实现205 .通信协议的设计206 .通信程序的开发245. 4上位机程序的开发设计245.系统登录模块255.系统主界面模块265.用户设置模块275.历史数据查询模块28结论31致谢32参考文献33附录34第一章绪论1.1 课题背景随着人们对环境问题及其规律认识的不断深化,环境问题不再局限于排放污染物引起的健康问题,而且包括自然环境的保护、生态平衡和可持续开展的资源问题。因此,环境监测正从一般意义上的环境污染因子监测开始向生态环境监测过渡和拓宽。除了常见的各类污染因子外,由于人为因素影响,灾害性天气增加,森林植被锐减,水土流失严重

11、,土壤沙漠化加剧,洪水泛滥,沙尘暴、泥石流频发,酸沉降等,使我国本已十分脆弱的生态环境更加恶化。这促使人们重新审查环境问题的复杂性,用新的思路和方法了解和解决环境问题。人们开始认识到,为了保护生态环境,必须对环境生态的演化趋势、特点及存在的问题建立一套行之有效的动态监测与控制体系,这就是生态环境监测。生态环境监测是环境监测开展的必然趋势。本质上看,环境保护是以减少或防止生态系统的破坏为终极目标。对环境监测,目前单纯的理化指标和生物指标监测存在很大的局限性,而生态环境监测那么可弥补传统环境监测的缺乏。因此前者强调局部剖析,只对大气、水、土壤等中的化学毒物或有害物理因子进行测定;而后者着眼于“整体

12、综合,对人类活动造成的生态破坏和影响进行测定。可以说,生态环境监测是生态保护的前提,是生态管理的根底,是生态法律法规的依据。目前,生态环境监测已在全球范围内展开,但在我国才刚起步,根底差,底子薄,相对落后,缺乏统一的标准,国家尚未制定技术标准。本文主要结合国内情况拟对生态环境监测作全面介绍,以期大家共同努力来推动生态环境监测工作在我国的开展。虽然我国经济一直以来快速开展,但是在经济开展的同时对环境的影响也日益扩大,尤其是负面的影响。反过来生态环境的破坏也逐步威胁着我们人类的生存和开展。为了更好的改善人类的生存环境、尽可能的防止环境进一步恶化,对环境情况特别是与人类关系密切的环境参数如温度和湿度

13、的监测无疑具有非常重要的意义。人类的生存和社会的活动与温度、湿度,光线等环境因素的相关性越来越大,对环境参数进行有效的实时监测,已成为目前非常严峻的课题。环境监测是获取环境信息,认识环境质量和评价环境好坏的重要手段,也是进行环境监督和环境治理等管理工作的主要信息来源和途径。环境监测系统是集传感器技术、通信网络和计算机应用为一体的综合数据分析管理系统,随着自动控制技术、电子信息技术和大规模集成电路等技术近年来迅速的开展,许多西方兴旺国家己经拥有很多先进的环境监测设备与环境监测手段。如果直接从外国购置这些现成的设备和技术,对于我国来说本钱投入是比拟高的,而且这些设备和监测手段可能与我国复杂多变的气

14、候条件和具体的情况不相匹配,所以当前不适合直接购置和应用这些设备和技术.目前,我国的环境监测系统与这些国家相比还有较大的差距,但随着我国科技实力的增强和经济实力的提高,也先后开发了一系列的环境监测系统。在这领域的进展和提高还是比拟大的。但是总体来说这些设备的技术水平仍有待提高。因此开发研制出适合我国现状的低本钱高性能的环境监测系统,是一项非常紧迫的任务,也对提高我国现代化企业的经济效益和加快我国的现代化水平具有非常重要意义。1.2 国内外环境监测现状及开展趋势1. 2.1开展现状近些年来我国的经济开展迅速,人们的生活水平得到了很大的提高,但是与此同时工业化的开展也给环境带来的巨大的改变。近些年

15、来京津地区的沙尘暴和森林覆盖率的大量减少就是很好的证据。传统上采用比拟落后的人工环境监测方法,但是这种方法的实时性差,受自然条件的限制比拟大,而且对于突发的环境问题不能及时发现并且处理,不利于宏观把握环境的变化情况。由于经济等因素我国目前还有很多地方使用传统的环境监测方法。随着技术的开展和经济实力的提升,我国的环境监测水平也得到了一定的提高。在很多省份实现高速通信网络的同时,环境监测的参数和数据己经能联网的得到观测和控制。硬件设备己经得到很大的改善,传统的人工报表已经改成微机控制系统。还有局部省市已经采用自动的环境监测系统,能更加及时和准确的反响数据。但是由于我国幅员辽阔,监测终端的需求量很大

16、,并且环境监测系统的软硬件开发功能还不是很完善,数据的综合分析能力也有待提高。国内产品较之国外技术还显得比拟薄弱。主要表现在:1、目前市场上同类产品存储空间有限。且基于单片机终端操作的,很少具有实时通信的功能,这对于远程进行数据的传输要求的单位的使用是不方便的。2、现有的产品在数据输出仅支持点对点通讯且速度慢、距离短、且仍受地域限制。且不能满足大数据量多通道的实时数据的传输的功能。3、产品的现场安装受使用环境所限,环境应用适用性差、测控手段单一。很难进行远距离的监控和报警。4、产品只用液晶、LED等方式简单显示,使操作无法进行现场复杂实用的数据分析、读取、按需数据图形打印。5、设备性能不高,难

17、以适应要求较高的场合。如测量温度范围低,难以满足超高温,超低温的要求。目前国外的环境监测系统已经广泛应用在各个领域,并开展的比拟完善。许多国家的环境参数监控点已经分布在各个地区,技术上也很先进,能够监测温度、湿度、光线和水位等多个环境参数。局部产片还使用了卫星等技术进行环境监测。欧洲的一些国家各国之间以网络为核心进行合作,已经能对欧洲环境的现状和开展趋势作出及时的有效判断的预测,并根据此采取必要的措施来保护环境。一些美国的公司利用空间技术,利用太空的卫星能把地面的情况特别是大气的监测数据做成图像完整的传回地面监测,科学家的数据准确可靠。令人可喜的是我国的环境监测技术正朝着现代化和高技术含量方向

18、开展。目前在某些领域也把卫星技术、遥感技术和GPS等技术广泛应用于环境的监测。在网络方面利用无线传输、P宽带网络和GPRS、INTERNET等多种传输方式进行数据的传输与处理。可以在对环境指数的采集、分析、整理的根底上实现环境开展的预测。2. 2.2开展趋势近年来,神经网络、遗传算法、模糊理论等人工智能方法在国外温室环境控制技术中得到重视并逐步开展,其中神经网络方法应用较广。另外,采用多个环境因子综合考虑的多因子控制方式替代现行的单个环境因子分别考虑的单因子控制方式也是研究的一个重要方向。目前在温室环境控制系统中,分布式系统是主要开展方向,系统中不存在一个控制中心,主要控制功能由各分布的子处理

19、器完成。各个温的控制功能一般由单片机(子处理器)完成,PC机作为主处理器,仅实现辅助功能,脱离主处理器,整个控制系统仍可工作。分布式控制方式具有价格低、控制灵活、可靠性高等优点,将在以后很长一个时期内广泛应用于温室环境控制系统中。随着网络技术的开展,可以通过Iniemet进行远程控制或诊断,在办公室通过网络对温室设备进行操作,到达减轻生产人员劳强度、提高设备利用效率,具有广阔的应用前景。3. 3本课题主要工作本设计可实时测量某一具体空间中任意一点的温度、湿度数据以及光线状况,能在小型终端设备的LCD上显示,还能通过串口通信在微机上实现实时数据的显示、分析和图形打印等功能。可以定时地将数据自动地

20、打印出来供随时监管或存档。其中,上位机软件的主要功能如下:1、历史数据查询功能:对以往的历史数据可以进行查询和分析,并用图表的方式显示环境的开展趋势。2、动态记录显示功能:能够连续实时的采集和记录监测空间内温度、湿度、光线状况等参数的情况,以数字和表格方式进行实时显示和记录监测信息。3、数据存储功能:所有的数据采集和记录到计算机上,按要求记录温、湿度以及光线状况表格,可以定时自动保存、备份等。4、打印功能:按要求打印某个点温、温度、光线状况表格,自动定时打印和手动人工打印画面及参数报表。第二章系统设计总体方案1. 1监测系统结构框图多参数环境监测系统由环境参数采集单元(包括温度、湿度、光照度传

21、感器及信号调理电路)、单片机、液晶显示模块、PC机、传输设备以及电源组成。结构框图如图2T所示。图2T系统结构图2. 2监测终端的设计监测终端组成框图如图2-2所示,该终端以单片机为核心,由各种传感器、A/D转换器、液晶显示模块、串行口输入/输出端口等构成。环境参数经信号采集电路和A/D转换后送单片机,经处理后在液晶上实时显示,然后通过串口传输给上位机。监测终端组成框图图2-22. 3通信方式的选择串口是计算机上通用设备通信的协议端口,现在大多数计算机包含串口。串口通信的标准经过使用和开展已经有很多中,但根本都是在RS232标准的根底上改良形成的。但是RS232标准只针对于点对点的单通道数据传

22、送,在此根底上形成RS485标准,增加了多点和双向通信能力。这个标准传输信号具有很强的抗干扰能力,可以到达更大的传输距离和更高的传输效率。由于上位机只有一台,而需要通信的下位机有多台,因此不一定能够跟每个下位机同时及时的通信,所以为了更好的实现数据的传输,需要用排队理论来合理的设计和控制传输,使数据的传输更及时和有效,提高系统的通信能力。排队理论就是利用概率论和随机理论,研究随机系统内效劳与需求之间的关系,以便合理地设计和控制排队系统。在所研究的系统中,某一下位机请求与上位机通信,当上位机空闲时,立即响应请求,当上位机忙时,不能立即响应该请求。呼叫持续等待是一个有限的时间,假设某一等待响应的呼

23、叫超过规定的等待时间还没有响应那么该下位机挂断,等待几分钟后再发送请求。各下位机的地位一样时,相应的规那么采用先到先效劳的形式。效劳时间为一次传送数据的通信时间。由于多路请求是随机的,并且相互之间完全独立,但对整个系统而言,各下位机传送的数据都能送入上位机中。目前串口是仪器仪表设备通用的通信协议端口,也用于获取远程采集设备的数据。串口通信的概念非常简单,串口按位发送和接收字节。尽管比按字节的并行通信慢,但是由于串口通信是异步的,可以在使用一根线发送数据的同时用另一根线接收数据,其他线用于握手。第三章上位机开发环境与主要技术3. 1上位机开发平台Delphi是著名的Borland公司开发的可视化

24、软件开发工具。Delphi系列软件的工作平台相当广泛,可以工作于WindoWS95、WindOWS98、WindowsNT,Windows2000以及WindoWSXP下,编程所用的语言为ObjeCtPaSCal语言。ObjectPaSCaI语言具有高度清晰的结构,高效率的优化系统,是一种简单易学,但又不乏其作为优秀编程语言的特点。DelPhi具有简单、高效、功能强大的特点。和VC相比,DeIPhi更简单、更易于掌握,而在功能上却丝毫不逊色;和VB相比,DeIPhi那么功能更强大、更实用。由于DelPhi同时兼备了VC功能强大和VB简单易学的特点,因此它成为了程序员至爱的编程工具。Delphi

25、的主要特性如下:1) DelPhi是32位应用程序,使用它可以开发出各种功能强大的应用程序;2) DelPhi的编译器是目前世界上最快的32位本地代码编译器,使用这种编译器产生的运行文件(EXE)是独立的,不需要链接运行时的解释器DL:3) Delphi可充分发挥WindoWS95/98/2000/NT和WindowsNT的强大功能;4) DelPhi提供了多种32位可视组件;5) DelPhi是一种面向对象的程序设计语言,因此可做到对可视窗体的继承;6) DelPhi采用三层数据库管理模式(数据层、对象层、应用程序层),把例如数据模型、业务规那么、窗体和对象等集中存储在对象存储库中;7)应用

26、程序可通过在Delphi中使用Borland公司提供的数据引擎(BDE)功能从而毫无障碍地使用多种数据库,例如OraCle、SybaSe等;8)使用DeIPhi提供的数据库浏览器。3. 2数据库方案的实现目前常用的数据库有OraCIe、SQL、Server、ACCeSS和MySql等,下面对这几个主流的数据库各自特点简单介绍。OraCle数据库系统是对象关系型数据库,支持大型多用户数据系统和分布式数据库和分布处理,具有可移植性和兼容性,一般用在大型事务处理及客户/效劳器结构的应用系统,但价格昂贵,不适合一般开发应用。SQLSerVer是基于效劳器端的中型的数据库,可以适合大容量数据的应用,在处

27、理海量数据的效率,后台开发的灵活性,可扩展性等方面强大;是真正的客户机/效劳器体系结构,图形化用户界面,使系统管理和数据库管理更加直观、简单;丰富的编程接口工具,为用户进行程序设计提供了更大的选择余地:对网络技术的支持,使用户能够很容易地将数据库中的数据发布到网页上。MySql是一个开放源码的小型关系型数据库管理系统,目前被广泛地应用在Intemet上的中小型网站中。由于其体积小、速度快、总体本钱低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有本钱而选择了MySqI作为网数据库。MySql可以支持Windc)Ws、UNIX,LinUX和SUNoS等多种操作系统平台。ACCeSS是

28、微软公司推出的基于Windows的桌面关系数据库管理系统,是OffiCe系列应用软件之一。它提供了表、查询、窗体、报表、页、宏和模块来建立数据库系统的对象;提供了多种向导、.生成器和模板,把数据存储、查询、界面设计、报表生成等操作标准化等。几种数据库各有特点,其中ACCeSS是一个中、小型数据库管理系统,使用方便、功能强大、易操作并且很实用,它适合数据量不太大的应用,在处理数据库时效率也很高。所以本课题选用ACCeSS作为数据库平台,既可以满足数据操作方便迅速的特点,也可以降低软件的开发本钱。3.3串口通信的实现方法4. 3.1概述实际中串口通信程序的开发很少直接使用APl函数,因为这会无谓的

29、增加编程难度,也会给调试带来诸多不便。在面向对象方法下通常使用串口类(即串口函数库),这样编程效率即高,调试又方便。下面就从通信APl介绍、串口类开发这两方面加以介绍。1、串口通信APl函数根底通信APl函数是整个串口通信程序的根底,串口类中的任何成员函数也只不过是对通信APl函数的封装而己。通信APl函数所涉及的操作包括串口的翻开、关闭、初始化与读写等。(1)串口的翻开与关闭Win32系统把文件的概念进行了扩展,无论是文件、通信设备、命名管道、邮槽、磁盘,还是控制台,都是用APl函数CreateFileO来翻开或创立的。如果翻开成功的话会返回一个串口的句柄,应用程序应对这个句柄判断其有效性。

30、当不再使用该串口句柄时,应该调用CIOSeHandIeo函数关闭之,以方便其它应用程序申请对串口的控制权。(2)串口的初始化在翻开串口后,常常需要对串口进行一些初始化工作,这需要通过一个DCB结构来进行。DCB结构包含了诸如波特率、数据位数、奇偶校验和停止位数等信息。在查询或配置串行口的属性时,都要用DCB结构来作为缓冲区。调用函数可以获得串口的配置,该函数把当前配置填充到一个DCB结构中。一般在用CreateFileo翻开串行口后,就调用GetCOmmStateo函数来获取串行口的初始配置。要修改串行口的配置,应该先修改DCB结构,然后再调用SetCommStateo函数用指定的DCB结构来

31、设置串行口。除了在DCB中的设置外,程序一般还需要设置I/O缓冲区的大小。WindoWS用阳缓冲区来暂存串行口输入和输出的数据,如果通信的速率较高,那么应该设置较大的缓冲区调用SCtUPCOmmO函数可以设置串行口的输入和输出缓冲区的大小。在对串口进行读写的时候,需要考虑超时问题。超时有两种:间隔超时和总超时。间隔超时是指在接收时两个字符之间的最大时延,总超时是指读写操作总共花费的最大时间。写操作只支持总超时,而读操作两种超时均支持。在用异步方式读写串行口时,虽然在完成读/写操作以前就可能返回,但超时仍然是起作用的。在这种情况下,超时规定的是操作的完成时间,而不是读/写函数的返回时间。(3)串

32、口的读写控制这局部内容关系到串行通信的核心内容,将分读/写串口APl函数、异步I/O操作两局部介绍。读/写串口APl函数:Win32中使用ReadFiIeO函数或者ReadFiIeEXO数从串口中读取数据。两者区别是:前者对同步操作和异步操作都支持,而后者仅支持异步操作。eadFileO函数第四个参数,在读操作之前应置为0。同样,写串口函数也有两个,一个是WriteFiIeO,另一个是WriteFileEXo前者同时支持同步操作和异步操作,而后者仅支持异步操作。写函数不管在声明形式上还是在使用方法上都与ReadFiIeO十分相似,具体可以查看MSDN帮助文档。异步I/O操作:在用ReadFil

33、eO和WriteFiIeo读写串行口时,既可以同步执行,也可以异步执行。在同步执行时,函数直到操作完成后才返回。这意味着在同步执行时线程会被阻塞,从而导致效率下降。在异步执行时,即使操作还未完成,调用的函数也会立即返回。费时的I/O操作在后台进行,这样线程就可以干别的事情。例如,线程可以在不同的端口上同时执行1/0操作,甚至可以在同一端口上同时进行读写操作。异步一词的含义就在于此。ReadFileo和WriteFile()函数是否为异步操作模式是由CreateFiIe()函数决定的。如果在调用CreateFileo创立句柄时指定了ILEFLAGOVERLAPPED标志,那么调用ReadFiIe

34、O和WriteFileO对该句柄进行的读写操作就是异步的,如果未指定异步标志,那么读写操作是同步的。在设置了异步I/O操作后,I/O操作和函数返回有以下两种情况:第一种,函数返回时I/O操作己完成:此时结果好似是同步执行的,但实际上这是异步操作的结果。第二种,函数返回时I/O操作还没完成:此时一方面,函数返回值为0,并且GetLaStEnor函数返回ERRoRIOPENDING;另一方面,系统把OVERLAPPED中的信号事件设为无信号状态。当1/0操作完成后,系统将它设置为有信号状态。如果GetLaStErrorO函数返IElERRORlOPENDlNG,那么说明异步操作还没完成,线程可以等

35、待操作完成。有两种等待方法:一种方法是用像WaitForSingIeobjeCtO这样的等待函数来等待OVERLAPPED结构的hEvent成员,可以规定等待的时间,在等待函数返回后,调用GetoVerlaPPedReSUlt0。另一种方法是用GetoVeHaPPedReSUItO函数等待,如果指定该函数的bWait参数为TRUE,那么该函数将等待OVERLAPPED结构的hEvent事件,并且只有当I/O操作完成前方返回(实际上这又变成了同步方式)。同时GetoVerlaPPedReSUItoi函数可以返回一个OVERLAPPED。结构来报告包括实际传输字节在内的重叠操作结果。2,串口类的开

36、发串口类是对通信APl函数进行最一般的封装,以便能够应用于不同的串口应用程序开发中。现在开发串口应用程序的方法很多,如微软的MSCComm控件,但是MSCOmm本身存在一定的弊端,如只能发送ASCIl码等。从用户角度讲上位机串口通信模块的使用流程一般分四个步骤,即初始化并翻开串口一监视串口读写串21-关闭串口。3. 3.2串口通信APl函数的实现原理实际中串口通信程序的开发很少直接使用APl函数,因为这会无谓的增加编程难度,也会给调试带来诸多不便。在面向对象方法下通常使用串口类(即串口函数库),这样编程效率即高,调试又方便。通信APl函数是整个串口通信程序的根底,串口类中的任何成员函数也只不过

37、是对通信APl函数的封装而己。通信APl函数所涉及的操作包括串口的翻开、关闭、初始化与读写等。(1)串口的翻开与关闭Win32系统把文件的概念进行了扩展,无论是文件、通信设备、命名管道、邮槽、磁盘,还是控制台,都是用APl函数CreateFile()来翻开或创立的。如果翻开成功的话会返回一个串口的句柄,应用程序应对这个句柄判断其有效性。当不再使用该串口句柄时,应该调用CIOSeHandleo函数关闭之,以方便其它应用程序申请对串口的控制权。(2)串口的初始化在翻开串口后,常常需要对串口进行一些初始化工作,这需要通过一个DCB结构来进行。DCB结构包含了诸如波特率、数据位数、奇偶校验和停止位数等

38、信息。在查询或配置串行口的属性时,都要用DCB结构来作为缓冲区。调用函数可以获得串口的配置,该函数把当前配置填充到一个DCB结构中。一般在CreateFileo翻开串行口后,就调用GetCommStateoi函1数来获取串行口的初始配置修改串行口的配置,应该先修改DCB结构,然后再调用SetCOmmStateO函数用指定的DCB结构来设置串行口也除了在DCB中的设置外,程序一般还需要设置I/O缓冲区的大小。WindoWS用阳缓冲区来暂存串行口输入和输出的数据,如果通信的速率较高,那么应该设置较大的缓冲区.调用SCtUPCommOi函数可以设置串行口的输入和输出缓冲区的大小。在对串口进行读写的时

39、候,需要考虑超时问题。超时有两种:间隔超时和总超时.间隔超时是指在接收时两个字符之间的最大时延,总超时是指读写操作总共花费的最大时间。写操作只支持总超时,而读操作两种超时均支持。在用异步方式读写串行口时,虽然在完成读/写操作以前就可能返回,但超时仍然是起作用的。在这种情况下,超时规定的是操作的完成时间,而不是读/写函数的返回时间.(3)串口的读写控制这局部内容关系到串行通信的核心内容,将分读/写串口APl函数、异步I/O操作两局部介绍。读/写串口APl函数:Win32中使用ReadFileO函数或者ReadFiIeEXo数从串口中读取数据。两者区别是:前者对同步操作和异步操作都支持,而后者仅支

40、持异步操作。ReadFileO函数第四个参数,在读操作之前应置为0。同样,写串口函数也有两个,一个是WriteFile0,另一个是WriteFiIeEXO前者同时支持同步操作和异步操作,而后者仅支持异步操作。写函数不管在声明形式上还是在使用方法上都与ReadFileo十分相似,具体可以查看MSDN帮助文档.异步I/O操作:在用ReadFiIeO和WriteFileO读写串行口时,既可以同步执行,也可以异步执行。在同步执行时,函数直到操作完成后才返回。这意味着在同步执行时线程会被阻塞,从而导致效率下降。在异步执行时,即使操作还未完成,调用的函数也会立即返回。费时的I/O操作在后台进行,这样线程就

41、可以干别的事情。例如,线程可以在不同的端口上同时执行I/O操作,甚至可以在同一端口上同时进行读写操作。“异步一词的含义就在于此。ReadFiIeO和WriteFile(i)函数是否为异步操作模式是由CreateFiIe函数决定的。如果在调用CreateFiIeO创立句柄时指定了FILEFLAGOVERLAPPED标志,那么调用ReadFilCO和WriteFileO对该句柄进行的读写操作就是异步的,如果未指定异步标志,那么读写操作是同步的旧。3. 3.3串口类的开发串口类是对通信APl函数进行最一般的封装,以便能够应用于不同的串口应用程序开发中。现在开发串口应用程序的方法很多,如微软的MSCC

42、Omm控件,但是MSComm本身存在一定的弊端,如只能发送ASCH码等。从用户角度讲上位机串口通信模块的使用流程一般分四个步骤,即“初始化并翻开串口一监视串口一读写串口一关闭串口。封装串口类CMyCom的成员函数时也正是基于这种理解,各成员函数介绍如下:(1)初始化并翻开串口函数函数声明形式:BOOLCMyCom:InitMyCom(intnPort,intnBaud,intnDataBits,intnStopBits)参数含义:nPort为端口号,支持串口1至串口4;nBaud为波特率,支持常用波特率如9600baud:nDataBits为数据位数,支持5-8位:nStopBits为停止位数

43、,支持1-2位;返回值:当设置成功后,返回值为TRUE;失败时,返回值为FALSE;实现原理:本函数只支持操作一个串口。程序根据串口配置情况调用CreateFiIeo函数翻开串口,随后启动串口监视线程等待应答数据。图3-1-InitMyCOm()函数流程图(2)写串口函数。函数声明形式:BOOLCMyCom:WriteMyCom(char*bur,DWORDdwBufLen)参数含义:buf为待发命令的缓冲区指针,dwBufLen待发字符。返回值:返回值为实际发送的字符数;实现原理:该函数调用WriteFiIeO发送命令并调用GetOVerIaPPedReSUltO函数返回实际发送的字符第四章

44、使用SPComm控件实现串口通信DeIPhi可以利用的众多串行通信控件中,SPComm控件可谓是最简单,功能比拟强大的一种。它支持DataBits(数据位)、Parity(奇偶校验)、StopBitS等设置,支持Read/Write,TimingControl(时序控制),ReadIntervalTimeout(读间断超时控制),WriteIntervalTimeoUt(写间断超时控制)等,同时还支持DTR/DSR,RTS/DTS等硬件流程控制及Xon/Xoff(握手协议)软件流程控制,是比拟完善的控件。从互联网能下载SPComm控件。选择下拉菜单COmPonent中的InstallCompo

45、nent选项,在Unitfilename处填写SPComm控件所在的路径,其他各项可用默认值,点击OK按钮。如图4-1安装后,在SyStem控件面板中将出现一个红色控件CoM。现在就可以像DeIPhi自带控件一样使用COM控件了WL图4-1安装SPCo三控件4. 2SPCo三的主要属性,方法和事件4. 2.1属性ComnName:填写COMl,COM2等串口的名字,在翻开串口前,必须填写好此值。BaUdRate:设定波特率9600,4800等,根据实际需要来定,在串口翻开后也可更改波特率,实际波特率随之更改。ParityCheCk:奇偶校验。ByteSiZe:字节长度5,6,7,8等,根据实际

46、情况设定。Parity:奇偶校验位。pBits:停止位。SendDataEmpty:这是一个布尔属性,为True时表示发送缓存为空,或者发送队列里没有信息;为FaISe时表示发送缓存不为空,或者发送队列里有信息。5. 2.2方法Startcomm方法用于翻开串口,当翻开失败时通常会报错。错误主要有7种:串口已经翻开;翻开串口错误;文件句柄不是通信句柄;不能够安装通信缓存;不能产生事件;不能产生读进程;不能产生写进程。StOPComm过程用于关闭串口,没有返回值。WriteCommData(pDataToWrite:PChar;dwSi-zeofDataToWrite:Word):boolean

47、用于发送一个字符串到写线程,发送成功返回TrUe,发送失败返回False,执行此函数将立即得到返回值,发送操作随后执行。函数有两个参数,其中PDataToWrite是要发送的字符串,dwSI-ZeofDataToWrite是发送的长度。4. 2.3事件OnReceiveData:procedure(Sender:TObject;Buffer:Pointer;BufferLength:Word)ofobject当输入缓存有数据时将触发该事件,在这里可以对从串口收到的数据进行处理。Buffer中是收到的数据,Buff-erLength是收到的数据长度。OnReceiveError:procedur

48、e(Sender:TObject;Event-ask:DWORD)当接受数据时出现错误将触发该事件。4. 3SPCo三的使用以实现PC机与单片机8051之间的通信为例,首先要调通他们之间的握手信号.假定他们之间的通信协议是:PC到8051一帧数据6个字节,8051到PC一帧数据也为6个字节。当PC发出(F0,01,FF,FF,01,FO)后8051能收到一帧(F0,01,FF1FF,01,F0),表示数据通信握手成功,两者之间就可以按照协议相互传输数据。创立一个新的工程COMM.DPR1把窗体的标题定义为单片机串口通信:图4-2单片机串口通信窗口实现PC机与单片机之间的数据发送及接收具体步骤:(1)初始化并翻开串口需要选择本次通信使用的串口,确定通信协议,即设置波特率、校验方式数据位、停止位等属性,翻开该串口。代码如下:/初始化并翻开串口:/ /波特率960ObPS/奇偶检验无/数据位8/ /停止位1/ /翻开串口Comml.BaudRate:=9600;Comml.Pari

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 在线阅读 > 生活休闲


备案号:宁ICP备20000045号-1

经营许可证:宁B2-20210002

宁公网安备 64010402000986号