1、学院 毕 业 设 计(论 文)题 目: 基于单片机多功能环境检测系统设计作 者: 指引教师: 专 业: 电气自动化 时 间: 学院毕业论文基于单片机多功能环境监测系统设计 串口通信与界面设计The design of multifunction environmental monitoring based on single-chip Serial communications and interface design 摘 要随着工业技术发展,环境问题已经成为全世界关注问题。近年来,水土流失、荒漠化、草原退化和物种减少;生态相称脆弱,自然灾害频繁;环境污染严重,直接危及社会、经济发展。人们已经
2、结识到,为了保护环境,就将对环境演化趋势、特点及存在问题作进一步细致理解。多功能环境监测是运用各种技术测定和分析生命系统各层次对自然或人为作用反映或反馈效应综合表征来判断和评价这些干扰对环境产生影响、危害及其变化规律,为环境质量评估、调控和环境管理提供科学根据。本课题从国内外环境监测系统研究现状出发,结合实际状况设计一种基于单片机多功能环境监测系统。本文重要负责串口通信及界面软件设计。其中,上位机软件重要以Windows XP为操作平台,采用Delphi70编写。Delphi是一种可视化、迅速应用程序,具备面向对象编程,支持团队开发,提供工程管理,对数据库良好支持等特性,是一种集数据通信、存储
3、、查询、解决于一体综合性软件。本设计可以实现如下功能:PC机通过串行口与下位机通信,将下位机采集到温、湿度及光线数据在PC机上实时显示;对历史数据进行查询、分析、记录,并能将相应成果打印出来。核心词:温湿度;光线状况;上位机;串口通信AbstractWith the development of industrial technology,environmental issues have become the worlds concern. In recent years,soil erosion,desertification,grassland degradation and loss
4、of biodiversity;ecology very fragile and frequent natural disasters;environmental pollution,directly threatening the social and economic development. Environmental monitoring is the use of multi-function measurement and analysis technology system at all levels of life to natural or man-made role of
5、response or feedback effects of the comprehensive characterization to determine and evaluate the impact of interference on the environment,endanger their trends,the environmental quality assessment,control and provide the scientific basis for environmental management.This topic embarks from the dome
6、stic and foreign environmental monitoring systems research present situation,the union actual situation designs one based on monolithic integrated circuits multi-purpose environmental monitoring system. This article primary cognizance serial port correspondence and contact surface softwares design.
7、And,the superior machine software mainly take Windows XP as the service platform,uses the Delphi7.0 compilation. Delphi is one kind of visualization,the fast application procedure,has the object-oriented programming,supports the team to develop,provides the project management,to database characteris
8、tics and so on good support,is a collection data communication,the memory,the inquiry,processing in a bodys comprehensive software.This design can realize the following function:PC machine through serial port and lower position machine correspondence,lower position machine gathering warm,humidity an
9、d optical fiber data on the PC machine real time display;Carries on the inquiry,the analysis,the statistics to the historical data,and can print the corresponding result.Key words:mperature and humidity;Lighting conditions;PC;Serial Communication目 录第一章 绪论11.1 课题背景11.2国内外环境监测现状及发展趋势21.2.1发呈现状21.2.2发展
10、趋势31.3本课题重要工作4第二章 系统设计总体方案52.1监测系统构造框图52.2监测终端设计52.3通信方式选取6第三章 上位机开发环境与重要技术83.1 上位机开发平台83.2 数据库方案实现83.3 串口通信实现办法93.3.1概述93.3.2串口通信API函数实现原理113.3.2串口类开发13第四章 使用SPComm控件实现串口通信144.1安装SPComm控件144.2 SPComm重要属性,办法和事件144.2.1 属性144.2.2 办法154.2.3 事件154.3 SPComm使用16第五章 上位机软件设计方案195.1系统设计概述195.2数据库平台选取195.3串口通
11、信在本系统中实现205.3.1通信合同设计205.3.2通信程序开发245.4上位机程序开发设计245.4.1系统登录模块255.4.2系统主界面模块265.4.3顾客设立模块275.4.4历史数据查询模块28结论31道谢32参照文献33附录34第一章 绪论1.1 课题背景随着人们对环境问题及其规律结识不断深化,环境问题不再局限于排放污染物引起健康问题,并且涉及自然环保、生态平衡和可持续发展资源问题。因而,环境监测正从普通意义上环境污染因子监测开始向生态环境监测过渡和拓宽。除了常用各类污染因子外,由于人为因素影响,灾害性天气增长,森林植被锐减,水土流失严重,土壤沙漠化加剧,洪水泛滥,沙尘暴、泥
12、石流频发,酸沉降等,使国内本已十分脆弱生态环境更加恶化。这促使人们重新审查环境问题复杂性,用新思路和办法理解和解决环境问题。人们开始结识到,为了保护生态环境,必要对环境生态演化趋势、特点及存在问题建立一套行之有效动态监测与控制体系,这就是生态环境监测。生态环境监测是环境监测发展必然趋势。本质上看,环保是以减少或避免生态系统破坏为终极目的。对环境监测,当前单纯理化指标和生物指标监测存在很大局限性,而生态环境监测则可弥补老式环境监测局限性。因而前者强调“局部剖析”,只对大气、水、土壤等中化学毒物或有害物理因子进行测定;而后者着眼于“整体综合”,对人类活动导致生态破坏和影响进行测定。可以说,生态环境
13、监测是生态保护前提,是生态管理基本,是生态法律法规根据。当前,生态环境监测已在全球范畴内展开,但在国内才刚起步,基本差,底子薄,相对落后,缺少统一原则,国家尚未制定技术规范。本文重要结合国内状况拟对生态环境监测作全面简介,以期人们共同努力来推动生态环境监测工作在国内开展。虽然国内经济始终以来迅速发展,但是在经济发展同步对环境影响也日益扩大,特别是负面影响。反过来生态环境破坏也逐渐威胁着咱们人类生存和发展。为了更好改进人类生存环境、尽量避免环境进一步恶化,对环境状况特别是与人类关系密切环境参数如温度和湿度监测无疑具备非常重要意义。人类生存和社会活动与温度、湿度,光线等环境因素有关性越来越大,对环
14、境参数进行有效实时监测,已成为当前非常严峻课题。环境监测是获取环境信息,结识环境质量和评价环境好坏重要手段,也是进行环境监督和环境治理等管理工作重要信息来源和途径。环境监测系统是集传感器技术、通信网络和计算机应用为一体综合数据分析管理系统,随着自动控制技术、电子信息技术和大规模集成电路等技术近年来迅速发展,许多西方发达国家已经拥有诸多先进环境监测设备与环境监测手段。如果直接从外国购买这些现成设备和技术,对于国内来说成本投入是比较高,并且这些设备和监测手段也许与国内复杂多变气候条件和详细状况不相匹配,因此当前不适合直接购买和应用这些设备和技术。当前,国内环境监测系统与这些国家相比尚有较大差距,但
15、随着国内科技实力增强和经济实力提高,也先后开发了一系列环境监测系统。在这领域进展和提高还是比较大。但是总体来说这些设备技术水平仍有待提高。因而开发研制出适合国内现状低成本高性能环境监测系统,是一项非常急迫任务,也对提高国内当代化公司经济效益和加快国内当代化水平具备非常重要意义。1.2 国内外环境监测现状及发展趋势1.2.1 发呈现状近些年来国内经济发展迅速,人们生活水平得到了很大提高,但是与此同步工业化发展也给环境带来巨大变化。近些年来京津地区沙尘暴和森林覆盖率大量减少就是较好证据。老式上采用比较落后人工环境监测办法,但是这种办法实时性差,受自然条件限制比较大,并且对于突发环境问题不能及时发现
16、并且解决,不利于宏观把握环境变化状况。由于经济等因素国内当前尚有诸多地方使用老式环境监测办法。随着技术发展和经济实力提高,国内环境监测水平也得到了一定提高。在诸多省份实现高速通信网络同步,环境监测参数和数据已经能联网得到观测和控制。硬件设备已经得到很大改进,老式人工报表已经改成微机控制系统。尚有某些省市已经采用自动环境监测系统,能更加及时和精确反馈数据。但是由于国内幅员辽阔,监测终端需求量很大,并且环境监测系统软硬件开发功能还不是很完善,数据综合分析能力也有待提高。国内产品较之国外技术还显得比较薄弱。重要体当前:l、当前市场上同类产品存储空间有限。且基于单片机终端操作,很少具备实时通信功能,这
17、对于远程进行数据传播规定单位使用是不以便。2、既有产品在数据输出仅支持点对点通讯且速度慢、距离短、且仍受地区限制。且不能满足大数据量多通道实时数据传播功能。3、产品现场安装受使用环境所限,环境应用合用性差、测控手段单一。很难进行远距离监控和报警。4、产品只用液晶、LED等方式简朴显示,使操作无法进行现场复杂实用数据分析、读取、按需数据图形打印。5、设备性能不高,难以适应规定较高场合。如测量温度范畴低,难以满足超高温,超低温规定。当前国外环境监测系统已经广泛应用在各个领域,并发展比较完善。许多国家环境参数监控点已经分布在各个地区,技术上也很先进,可以监测温度、湿度、光线和水位等各种环境参数。某些
18、产片还使用了卫星等技术进行环境监测。欧洲某些国家各国之间以网络为核心进行合伙,已经能对欧洲环境现状和发展趋势作出及时有效判断预测,并依照此采用必要办法来保护环境。某些美国公司运用空间技术,运用太空卫星能把地面状况特别是大气监测数据做成图像完整传回地面监测,科学家数据精确可靠。令人可喜是国内环境监测技术正朝着当代化和高技术含量方向发展。当前在某些领域也把卫星技术、遥感技术和GPS等技术广泛应用于环境监测。在网络方面运用无线传播、P宽带网络和GPRS、INTERNET等各种传播方式进行数据传播与解决。可以在对环境指数采集、分析、整顿基本上实现环境发展预测。1.2.2 发展趋势近年来,神经网络、遗传
19、算法、模糊理论等人工智能办法在国外温室环境控制技术中得到注重并逐渐发展,其中神经网络办法应用较广。此外,采用各种环境因子综合考虑多因子控制方式代替现行单个环境因子分别考虑单因子控制方式也是研究一种重要方向。当前在温室环境控制系统中,分布式系统是重要发展方向,系统中不存在一种控制中心,重要控制功能由各分布子解决器完毕。各个温控制功能普通由单片机(子解决器)完毕,PC机作为主解决器,仅实现辅助功能,脱离主解决器,整个控制系统仍可工作。分布式控制方式具备价格低、控制灵活、可靠性高等长处,将在后来很长一种时期内广泛应用于温室环境控制系统中。随着网络技术发展,可以通过Iniemet进行远程控制或诊断,在
20、办公室通过网络对温室设备进行操作,达到减轻生产人员劳强度、提高设备运用效率,具备辽阔应用前景。1.3 本课题重要工作本设计可实时测量某一详细空间中任意一点温度、湿度数据以及光线状况,能在小型终端设备LCD上显示,还能通过串口通信在微机上实现实时数据显示、分析和图形打印等功能。可以定期地将数据自动地打印出来供随时监管或存档。其中,上位机软件重要功能如下:1、历史数据查询功能:对以往历史数据可以进行查询和分析,并用图表方式显示环境发展趋势。2、动态记录显示功能:可以持续实时采集和记录监测空间内温度、湿度、光线状况等参数状况,以数字和表格方式进行实时显示和记录监测信息。3、数据存储功能:所有数据采集
21、和记录到计算机上,按规定记录温、湿度以及光线状况表格,可以定期自动保存、备份等。4、打印功能:按规定打印某个点温、温度、光线状况表格,自动定期打印和手动人工打印画面及参数报表。第二章 系统设计总体方案2.1 监测系统构造框图多参数环境监测系统由环境参数采集单元(涉及温度、湿度、光照度传感器及信号调理电路)、单片机、液晶显示模块、PC机、传播设备以及电源构成。构造框图如图2-1所示。上位机喷灌系统天窗电机排电扇显示屏1602 单片机A/D转换器温度传感器湿度传感器光线传感器继电器控制图2-1 系统构造图2.2 监测终端设计监测终端构成框图如图2-2所示,该终端以单片机为核心,由各种传感器、AD转
22、换器、液晶显示模块、串行口输入输出端口等构成。环境参数经信号采集电路和AD转换后送单片机,经解决后在液晶上实时显示,然后通过串口传播给上位机。传感器传感器信号采集A/D转换液晶显示微解决器计算机串口上位机 图2-2 监测终端构成框图2.3 通信方式选取串口是计算机上通用设备通信合同端口,当前大多数计算机包括串口。串口通信原则通过使用和发展已有诸多中,但基本都是在RS232原则基本上改进形成。但是RS232原则只针对于点对点单通道数据传送,在此基本上形成RS485原则,增长了多点和双向通信能力。这个原则传播信号具备很强抗干扰能力,可以达到更大传播距离和更高传播效率。由于上位机只有一台,而需要通信
23、下位机有多台,因而不一定可以跟每个下位机同步及时通信,所觉得了更好实现数据传播,需要用排队理论来合理设计和控制传播,使数据传播更及时和有效,提高系统通信能力。排队理论就是运用概率论和随机理论,研究随机系统内服务与需求之间关系,以便合理地设计和控制排队系统。在所研究系统中,某一下位机祈求与上位机通信,当上位机空闲时,及时响应祈求,当上位机忙时,不能及时响应当祈求。呼喊持续等待是一种有限时间,若某一等待响应呼喊超过规定等待时间还没有响应则该下位机挂断,等待几分钟后再发送祈求。各下位机地位同样时,相应规则采用先到先服务形式。服务时间为一次传送数据通信时间。由于多路祈求是随机,并且互相之间完全独立,但
24、对整个系统而言,各下位机传送数据都能送入上位机中。当前串口是仪器仪表设备通用通信合同端口,也用于获取远程采集设备数据。串口通信概念非常简朴,串口按位发送和接受字节。尽管比按字节并行通信慢,但是由于串口通信是异步,可以在使用一根线发送数据同步用另一根线接受数据,其她线用于握手。第三章 上位机开发环境与重要技术3.1 上位机开发平台Delphi是知名Borland公司开发可视化软件开发工具。Delphi系列软件工作平台相称广泛,可以工作于Windows95、Windows98、WindowsNT、Windows以及Windows XP下,编程所用语言为Object Pascal语言。Object
25、Pascal语言具备高度清晰构造,高效率优化系统,是一种简朴易学,但又不乏其作为先进编程语言特点。Delphi具备简朴、高效、功能强大特点。和VC相比,Delphi更简朴、更易于掌握,而在功能上却丝毫不逊色;和VB相比,Delphi则功能更强大、更实用。由于Delphi同步兼备了VC功能强大和VB简朴易学特点,因而它成为了程序员至爱编程工具。Delphi重要特性如下:1)Delphi是32位应用程序,使用它可以开发出各种功能强大应用程序;2)Delphi编译器是当前世界上最快32位本地代码编译器,使用这种编译器产生运营文献(EXE)是独立,不需要链接运营时解释器DL;3)Delphi可充分发挥
26、Windows95/98/NT和Windows NT强大功能;4)Delphi提供了各种32位可视组件;5)Delphi是一种面向对象程序设计语言,因而可做到对可视窗体继承;6)Delphi采用三层数据库管理模式(数据层、对象层、应用程序层),把例如数据模型、业务规则、窗体和对象等集中存储在对象存储库中;7)应用程序可通过在Delphi中使用Borland公司提供数据引擎(BDE)功能从而毫无障碍地使用各种数据库,例如Oracle、Sybase等;8)使用Delphi提供数据库浏览器。3.2 数据库方案实现当前惯用数据库有Oracle、SQL、Server、Access和Mysql等,下面对这
27、几种主流数据库各自特点简朴简介。Oracle数据库系统是对象关系型数据库,支持大型多顾客数据系统和分布式数据库和分布解决,具备可移植性和兼容性,普通用在大型事务解决及客户服务器构造应用系统,但价格昂贵,不适合普通开发应用。SQL Server是基于服务器端中型数据库,可以适合大容量数据应用,在解决海量数据效率,后台开发灵活性,可扩展性等方面强大;是真正客户机服务器体系构造,图形化顾客界面,使系统管理和数据库管理更加直观、简朴;丰富编程接口工具,为顾客进行程序设计提供了更大选取余地:对网络技术支持,使顾客可以很容易地将数据库中数据发布到网页上。Mysql是一种开放源码小型关系型数据库管理系统,当
28、前被广泛地应用在Intemet上中小型网站中。由于其体积小、速度快、总体成本低,特别是开放源码这一特点,许多中小型网站为了减少网站总体拥有成本而选取了Mysql作为网数据库。Mysql可以支持Windows、UNIX、Linux和SUN OS等各种操作系统平台。Access是微软公司推出基于Windows桌面关系数据库管理系统,是Office系列应用软件之一。它提供了表、查询、窗体、报表、页、宏和模块来建立数据库系统对象;提供了各种向导、生成器和模板,把数据存储、查询、界面设计、报表生成等操作规范化等。几种数据库各有特点,其中Access是一种中、小型数据库管理系统,使用以便、功能强大、易操作
29、并且很实用,它适合数据量不太大应用,在解决数据库时效率也很高。因此本课题选用Access作为数据库平台,既可以满足数据操作以便迅速特点,也可以减少软件开发成本。3.3 串口通信实现办法3.3.1 概述实际中串口通信程序开发很少直接使用API函数,由于这会无谓增长编程难度,也会给调试带来诸多不便。在面向对象办法下普通使用串口类(即串口函数库),这样编程效率即高,调试又以便。下面就从通信API简介、串口类开发这两方面加以简介。l、串口通信API函数基本通信API函数是整个串口通信程序基本,串口类中任何成员函数也只但是是对通信API函数封装而己。通信API函数所涉及操作涉及串口打开、关闭、初始化与读
30、写等。(1)串口打开与关闭 Win32系统把文献概念进行了扩展,无论是文献、通信设备、命名管道、邮槽、磁盘,还是控制台,都是用API函数Create File()来打开或创立。如果打开成功话会返回一种串口句柄,应用程序应对这个句柄判断其有效性。当不再使用该串口句柄时,应当调用CloseHandle0函数关闭之,以以便其他应用程序申请对串口控制权。(2)串口初始化在打开串口后,经常需要对串口进行某些初始化工作,这需要通过一种DCB构造来进行。DCB构造包括了诸如波特率、数据位数、奇偶校验和停止位数等信息。在查询或配备串行口属性时,都要用DCB构造来作为缓冲区。调用函数可以获得串口配备,该函数把当
31、前配备填充到一种DCB构造中。普通在用CreateFile0打开串行口后,就调用GetCommState()函数来获取串行口初始配备。要修改串行口配备,应当先修改DCB构造,然后再调用SetCommState0函数用指定DCB构造来设立串行口。除了在DCB中设立外,程序普通还需要设立IO缓冲区大小。Windows用阳缓冲区来暂存串行口输入和输出数据,如果通信速率较高,则应当设立较大缓冲区调用SctupCommO函数可以设立串行口输入和输出缓冲区大小。在对串口进行读写时候,需要考虑超时问题。超时有两种:间隔超时和总超时。间隔超时是指在接受时两个字符之间最大时延,总超时是指读写操作总共耗费最大时间
32、。写操作只支持总超时,而读操作两种超时均支持。在用异步方式读写串行口时,虽然在完毕读写操作此前就也许返回,但超时依然是起作用。在这种状况下,超时规定是操作完毕时间,而不是读写函数返回时间。(3)串口读写控制这某些内容关系到串行通信核心内容,将分读写串口API函数、异步IO操作两某些简介。读写串口API函数:win32中使用ReadFile0函数或者ReadFileEx0数从串口中读取数据。两者区别是:前者对同步操作和异步操作都支持,而后者仅支持异步操作。eadFile0函数第四个参数,在读操作之前应置为0。同样,写串口函数也有两个,一种是writeFile0,另一种是writeFileEx0前
33、者同步支持同步操作和异步操作,而后者仅支持异步操作。写函数无论在声明形式上还是在用法上都与ReadFile0十分相似,详细可以查看MSDN协助文档。异步IO操作:在用ReadFile0和writeFile0读写串行口时,既可以同步执行,也可以异步执行。在同步执行时,函数直到操作完毕后才返回。这意味着在同步执行时线程会被阻塞,从而导致效率下降。在异步执行时,虽然操作尚未完毕,调用函数也会及时返回。费时IO操作在后台进行,这样线程就可以干别事情。例如,线程可以在不同端口上同步执行IO操作,甚至可以在同一端口上同步进行读写操作。“异步一词含义就在于此。ReadFile0和writeFile()函数与
34、否为异步操作模式是由CreateFile()函数决定。如果在调用CreateFileO创立句柄时指定了ILE FLAG OVERLAPPED标志,那么调用ReadFileO和writeFileO对该句柄进行读写操作就是异步,如果未指定异步标志,则读写操作是同步。在设立了异步IO操作后,IO操作和函数返回有如下两种状况:第一种,函数返回时IO操作己完毕:此时成果好像是同步执行,但事实上这是异步操作成果。第二种,函数返回时IO操作还没完毕:此时一方面,函数返回值为0,并且GetLastErrorO函数返回ERROR IO PENDING;另一方面,系统把OVERLAPPED中信号事件设为无信号状态
35、。当IO操作完毕后,系统将它设立为有信号状态。如果GetLastError0函数返IEIERROR IO PENDING,则阐明异步操作还没完毕,线程可以等待操作完毕。有两种等待办法:一种办法是用像WaitForSingleObject0这样等待函数来等待OVERLAPPED构造hEvent成员,可以规定等待时间,在等待函数返回后,调用GetOverlappedResult0。另一种办法是用GetOverlappedResult()函数等待,如果指定该函数bWait参数为TRUE,那么该函数将等待OVERLAPPED构造hEvent事件,并且只有当IO操作完毕后方返回(事实上这又变成了同步方式
36、)。同步GetOverlappedResultoi函数可以返回一种OVERLAPPED。构造来报告涉及实际传播字节在内重叠操作成果。2、串口类开发串口类是对通信API函数进行最普通封装,以便可以应用于不同串口应用程序开发中。当前开发串口应用程序办法诸多,如微软MSCcomm控件,但是MSComm自身存在一定弊端,如只能发送ASCII码等。从顾客角度讲上位机串口通信模块使用流程普通分四个环节,即“初始化并打开串口一监视串口读写串21-关闭串口。3.3.2 串口通信API函数实现原理实际中串口通信程序开发很少直接使用API函数,由于这会无谓增长编程难度,也会给调试带来诸多不便。在面向对象办法下普通
37、使用串口类(即串口函数库),这样编程效率即高,调试又以便。通信API函数是整个串口通信程序基本,串口类中任何成员函数也只但是是对通信API函数封装而己。通信API函数所涉及操作涉及串口打开、关闭、初始化与读写等。 (1)串口打开与关闭Win32系统把文献概念进行了扩展,无论是文献、通信设备、命名管道、邮槽、磁盘,还是控制台,都是用API函数CreateFile()来打开或创立。如果打开成功话会返回一种串口句柄,应用程序应对这个句柄判断其有效性。当不再使用该串口句柄时,应当调用CloseHandle0函数关闭之,以以便其他应用程序申请对串口控制权。 (2)串口初始化在打开串口后,经常需要对串口进
38、行某些初始化工作,这需要通过一种DCB构造来进行。DCB构造包括了诸如波特率、数据位数、奇偶校验和停止位数等信息。在查询或配备串行口属性时,都要用DCB构造来作为缓冲区。调用函数可以获得串口配备,该函数把当前配备填充到一种DCB构造中。普通在CreateFile0打开串行口后,就调用GetCommState()i函l数来获取串行口初始配备修改串行口配备,应当先修改DCB构造,然后再调用SetCommState0函数用指定DCB构造来设立串行口3。除了在DCB中设立外,程序普通还需要设立IO缓冲区大小。Windows用阳缓冲区来暂存串行口输入和输出数据,如果通信速率较高,则应当设立较大缓冲区调用
39、SctupCommOi函数可以设立串行口输入和输出缓冲区大小。在对串口进行读写时候,需要考虑超时问题。超时有两种:间隔超时和总超时。间隔超时是指在接受时两个字符之间最大时延,总超时是指读写操作总共耗费最大时间。写操作只支持总超时,而读操作两种超时均支持。在用异步方式读写串行口时,虽然在完毕读写操作此前就也许返回,但超时依然是起作用。在这种状况下,超时规定是操作完毕时间,而不是读写函数返回时间。 (3)串口读写控制这某些内容关系到串行通信核心内容,将分读写串口API函数、异步IO操作两某些简介。读写串口API函数:win32中使用ReadFile0函数或者ReadFileEx0数从串口中读取数据
40、。两者区别是:前者对同步操作和异步操作都支持,而后者仅支持异步操作。ReadFile0函数第四个参数,在读操作之前应置为0。同样,写串口函数也有两个,一种是writeFile0,另一种是writeFileEx0前者同步支持同步操作和异步操作,而后者仅支持异步操作。写函数无论在声明形式上还是在用法上都与ReadFile0十分相似,详细可以查看MSDN协助文档。 异步IO操作:在用ReadFile0和writeFile0读写串行口时,既可以同步执行,也可以异步执行。在同步执行时,函数直到操作完毕后才返回。这意味着在同步执行时线程会被阻塞,从而导致效率下降。在异步执行时,虽然操作尚未完毕,调用函数也
41、会及时返回。费时IO操作在后台进行,这样线程就可以干别事情。例如,线程可以在不同端口上同步执行IO操作,甚至可以在同一端口上同步进行读写操作。“异步一词含义就在于此。ReadFile0和writeFile(i)函数与否为异步操作模式是由CreateFile函数决定。如果在调用CreateFileO创立句柄时指定了FILE FLAG OVERLAPPED标志,那么调用ReadFileO和writeFileO对该句柄进行读写操作就是异步,如果未指定异步标志,则读写操作是同步5。3.3.3 串口类开发串口类是对通信API函数进行最普通封装,以便可以应用于不同串口应用程序开发中。当前开发串口应用程序办
42、法诸多,如微软MSCcomm控件,但是MSComm自身存在一定弊端,如只能发送ASCII码等。从顾客角度讲上位机串口通信模块使用流程普通分四个环节,即“初始化并打开串口-监视串口-读写串口-关闭串口”。封装串口类CMyCom成员函数时也正是基于这种理解,各成员函数简介如下:(1)初始化并打开串口函数函数声明形式:BOOL CMyCom:InitMyCom(int nPort,int nBaud,int nDataBits,int nStopBits)参数含义:nPort为端标语,支持串口l至串口4;nBaud为波特率,支持惯用波特率如9600baud;nDataBits为数据位数,支持58位:
43、nStopBits为停止位数,支持12位;返回值:当设立成功后,返回值为TRUE;失败时,返回值为FALSE;实现原理:本函数只支持操作一种串口。程序依照串口配备状况调用CreateFile0函数打开串口,随后启动串口监视线程等待应答数据。 图3-1-InitMyCom()函数流程图(2)写串口函数。函数声明形式:BOOL CMyCom:WriteMyCom(char*bur,DWORD dwBufLen)参数含义:buf为待发命令缓冲区指针,dwBufLen待发字符。返回值:返回值为实际发送字符数;实现原理:该函数调用WriteFileO发送命令并调用GetOverlappedResult0
44、函数返回实际发送字符6。第四章 使用SPComm控件实现串口通信Delphi可以运用众多串行通信控件中,SPComm控件可谓是最简朴,功能比较强大一种。它支持Data Bits(数据位)、Parity(奇偶校验)、Stop Bits等设立,支持Read/Write,Timing Control(时序控制),Read Interval Timeout(读间断超时控制),WriteInterval Timeout(写间断超时控制)等,同步还支持DTR/DSR,RTS/DTS等硬件流程控制及Xon/Xoff(握手合同)软件流程控制,是比较完善控件。4.1安装SPComm控件从互联网能下载SPComm
45、控件。选取下拉菜单Component中Install Component选项,在Unit filename处填写SPComm控件所在途径,其她各项可用默认值,点击OK按钮。如图4-1安装后,在System控件面板中将浮现一种红色控件COM。当前就可以像Delphi自带控件同样使用COM控件了9。图4-1 安装SPComm控件4.2 SPComm重要属性,办法和事件4.2.1 属性CommName:填写COM1,COM2等串口名字,在打开串口前,必要填写好此值。BaudRate:设定波特率9 600,4 800等,依照实际需要来定,在串口打开后也可更改波特率,实际波特率随之更改。ParityCh
46、eck:奇偶校验。ByteSize:字节长度5,6,7,8等,依照实际状况设定。Parity:奇偶校验位。pBits:停止位。SendDataEmpty:这是一种布尔属性,为True时表达发送缓存为空,或者发送队列里没有信息;为False时表达发送缓存不为空,或者发送队列里有信息。4.2.2 办法Startcomm办法用于打开串口,当打开失败时普通会报错。错误重要有7种:串口已经打开;打开串口错误;文献句柄不是通信句柄;不可以安装通信缓存;不能产生事件;不能产生读进程;不能产生写进程。StopComm过程用于关闭串口,没有返回值。WriteCommData(pDataToWrite:PChar;dwSi-zeofDataToWrite:Word ):boolean用于发送一种字符串到写线程,发送成功返回True,发送失败返回False,执行此函数将及时得到返回值,发送操作随后执行。函数有两个参数,其中pDataToWrite是要发送字符串,dwSi-zeofDataToWrite是发送长度9。4.2.3 事件 OnReceiveData:procedure(Sender:TObject;Buffer:Pointer;BufferLength:Word) of obje