已阅读5页,还剩40页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学院 毕 业 设 计(论 文)题 目: 基于单片机的多功能环境检测系统设计作 者: 指导教师: 专 业: 电气自动化 时 间: 学院毕业论文基于单片机的多功能环境监测系统设计 串口通信与界面设计The design of multifunction environmental monitoring based on single-chip Serial communications and interface design 摘 要随着工业技术的发展,环境问题已经成为全世界关注的问题。近年来,水土流失、荒漠化、草原退化和物种减少;生态相当脆弱,自然灾害频繁;环境污染严重,直接危及社会、经济的发展。人们已经认识到,为了保护环境,就将对环境的演化趋势、特点及存在的问题作进一步的细致的了解。多功能环境监测是利用各种技术测定和分析生命系统各层次对自然或人为作用的反应或反馈效应的综合表征来判断和评价这些干扰对环境产生的影响、危害及其变化规律,为环境质量的评估、调控和环境管理提供科学依据。本课题从国内外环境监测系统的研究现状出发,结合实际情况设计一个基于单片机的多功能环境监测系统。本文主要负责串口通信及界面软件的设计。其中,上位机软件主要以Windows XP为操作平台,采用Delphi70编写。Delphi是一种可视化的、快速的应用程序,具有面向对象编程,支持团队开发,提供工程管理,对数据库的良好支持等特性,是一个集数据通信、存储、查询、处理于一体的综合性软件。本设计能够实现以下功能: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 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 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 domestic 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. 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 characteristics 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 and 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发展趋势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串口通信在本系统中的实现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 课题背景随着人们对环境问题及其规律认识的不断深化,环境问题不再局限于排放污染物引起的健康问题,而且包括自然环境的保护、生态平衡和可持续发展的资源问题。因此,环境监测正从一般意义上的环境污染因子监测开始向生态环境监测过渡和拓宽。除了常见的各类污染因子外,由于人为因素影响,灾害性天气增加,森林植被锐减,水土流失严重,土壤沙漠化加剧,洪水泛滥,沙尘暴、泥石流频发,酸沉降等,使我国本已十分脆弱的生态环境更加恶化。这促使人们重新审查环境问题的复杂性,用新的思路和方法了解和解决环境问题。人们开始认识到,为了保护生态环境,必须对环境生态的演化趋势、特点及存在的问题建立一套行之有效的动态监测与控制体系,这就是生态环境监测。生态环境监测是环境监测发展的必然趋势。本质上看,环境保护是以减少或避免生态系统的破坏为终极目标。对环境监测,目前单纯的理化指标和生物指标监测存在很大的局限性,而生态环境监测则可弥补传统环境监测的不足。因此前者强调“局部剖析”,只对大气、水、土壤等中的化学毒物或有害物理因子进行测定;而后者着眼于“整体综合”,对人类活动造成的生态破坏和影响进行测定。可以说,生态环境监测是生态保护的前提,是生态管理的基础,是生态法律法规的依据。目前,生态环境监测已在全球范围内展开,但在我国才刚起步,基础差,底子薄,相对落后,缺乏统一的标准,国家尚未制定技术规范。本文主要结合国内情况拟对生态环境监测作全面介绍,以期大家共同努力来推动生态环境监测工作在我国的开展。虽然我国经济一直以来快速发展,但是在经济发展的同时对环境的影响也日益扩大,尤其是负面的影响。反过来生态环境的破坏也逐步威胁着我们人类的生存和发展。为了更好的改善人类的生存环境、尽可能的避免环境进一步恶化,对环境情况特别是与人类关系密切的环境参数如温度和湿度的监测无疑具有非常重要的意义。人类的生存和社会的活动与温度、湿度,光线等环境因素的相关性越来越大,对环境参数进行有效的实时监测,已成为目前非常严峻的课题。环境监测是获取环境信息,认识环境质量和评价环境好坏的重要手段,也是进行环境监督和环境治理等管理工作的主要信息来源和途径。环境监测系统是集传感器技术、通信网络和计算机应用为一体的综合数据分析管理系统,随着自动控制技术、电子信息技术和大规模集成电路等技术近年来迅速的发展,许多西方发达国家已经拥有很多先进的环境监测设备与环境监测手段。如果直接从外国购买这些现成的设备和技术,对于我国来说成本投入是比较高的,而且这些设备和监测手段可能与我国复杂多变的气候条件和具体的情况不相匹配,所以当前不适合直接购买和应用这些设备和技术。目前,我国的环境监测系统与这些国家相比还有较大的差距,但随着我国科技实力的增强和经济实力的提高,也先后开发了一系列的环境监测系统。在这领域的进展和提高还是比较大的。但是总体来说这些设备的技术水平仍有待提高。因此开发研制出适合我国现状的低成本高性能的环境监测系统,是一项非常紧迫的任务,也对提高我国现代化企业的经济效益和加快我国的现代化水平具有非常重要意义。1.2 国内外环境监测现状及发展趋势1.2.1 发展现状近些年来我国的经济发展迅速,人们的生活水平得到了很大的提高,但是与此同时工业化的发展也给环境带来的巨大的改变。近些年来京津地区的沙尘暴和森林覆盖率的大量减少就是很好的证据。传统上采用比较落后的人工环境监测方法,但是这种方法的实时性差,受自然条件的限制比较大,而且对于突发的环境问题不能及时发现并且处理,不利于宏观把握环境的变化情况。由于经济等因素我国目前还有很多地方使用传统的环境监测方法。随着技术的发展和经济实力的提升,我国的环境监测水平也得到了一定的提高。在很多省份实现高速通信网络的同时,环境监测的参数和数据已经能联网的得到观测和控制。硬件设备已经得到很大的改善,传统的人工报表已经改成微机控制系统。还有部分省市已经采用自动的环境监测系统,能更加及时和准确的反馈数据。但是由于我国幅员辽阔,监测终端的需求量很大,并且环境监测系统的软硬件开发功能还不是很完善,数据的综合分析能力也有待提高。国内产品较之国外技术还显得比较薄弱。主要表现在:l、目前市场上同类产品存储空间有限。且基于单片机终端操作的,很少具有实时通信的功能,这对于远程进行数据的传输要求的单位的使用是不方便的。2、现有的产品在数据输出仅支持点对点通讯且速度慢、距离短、且仍受地域限制。且不能满足大数据量多通道的实时数据的传输的功能。3、产品的现场安装受使用环境所限,环境应用适用性差、测控手段单一。很难进行远距离的监控和报警。4、产品只用液晶、LED等方式简单显示,使操作无法进行现场复杂实用的数据分析、读取、按需数据图形打印。5、设备性能不高,难以适应要求较高的场合。如测量温度范围低,难以满足超高温,超低温的要求。目前国外的环境监测系统已经广泛应用在各个领域,并发展的比较完善。许多国家的环境参数监控点已经分布在各个地区,技术上也很先进,能够监测温度、湿度、光线和水位等多个环境参数。部分产片还使用了卫星等技术进行环境监测。欧洲的一些国家各国之间以网络为核心进行合作,已经能对欧洲环境的现状和发展趋势作出及时的有效判断的预测,并根据此采取必要的措施来保护环境。一些美国的公司利用空间技术,利用太空的卫星能把地面的情况特别是大气的监测数据做成图像完整的传回地面监测,科学家的数据准确可靠。令人可喜的是我国的环境监测技术正朝着现代化和高技术含量方向发展。目前在某些领域也把卫星技术、遥感技术和GPS等技术广泛应用于环境的监测。在网络方面利用无线传输、P宽带网络和GPRS、INTERNET等多种传输方式进行数据的传输与处理。可以在对环境指数的采集、分析、整理的基础上实现环境发展的预测。1.2.2 发展趋势近年来,神经网络、遗传算法、模糊理论等人工智能方法在国外温室环境控制技术中得到重视并逐步发展,其中神经网络方法应用较广。另外,采用多个环境因子综合考虑的多因子控制方式替代现行的单个环境因子分别考虑的单因子控制方式也是研究的一个重要方向。目前在温室环境控制系统中,分布式系统是主要发展方向,系统中不存在一个控制中心,主要控制功能由各分布的子处理器完成。各个温的控制功能一般由单片机(子处理器)完成,PC机作为主处理器,仅实现辅助功能,脱离主处理器,整个控制系统仍可工作。分布式控制方式具有价格低、控制灵活、可靠性高等优点,将在以后很长一个时期内广泛应用于温室环境控制系统中。随着网络技术的发展,可以通过Iniemet进行远程控制或诊断,在办公室通过网络对温室设备进行操作,达到减轻生产人员劳强度、提高设备利用效率,具有广阔的应用前景。1.3 本课题主要工作本设计可实时测量某一具体空间中任意一点的温度、湿度数据以及光线状况,能在小型终端设备的LCD上显示,还能通过串口通信在微机上实现实时数据的显示、分析和图形打印等功能。可以定时地将数据自动地打印出来供随时监管或存档。其中,上位机软件的主要功能如下:1、历史数据查询功能:对以往的历史数据可以进行查询和分析,并用图表的方式显示环境的发展趋势。2、动态记录显示功能:能够连续实时的采集和记录监测空间内温度、湿度、光线状况等参数的情况,以数字和表格方式进行实时显示和记录监测信息。3、数据存储功能:所有的数据采集和记录到计算机上,按要求记录温、湿度以及光线状况表格,可以定时自动保存、备份等。4、打印功能:按要求打印某个点温、温度、光线状况表格,自动定时打印和手动人工打印画面及参数报表。第二章 系统设计总体方案2.1 监测系统结构框图多参数环境监测系统由环境参数采集单元(包括温度、湿度、光照度传感器及信号调理电路)、单片机、液晶显示模块、PC机、传输设备以及电源组成。结构框图如图2-1所示。上位机喷灌系统天窗电机排风扇显示器1602 单片机A/D转换器温度传感器湿度传感器光线传感器继电器控制图2-1 系统结构图2.2 监测终端的设计监测终端组成框图如图2-2所示,该终端以单片机为核心,由各种传感器、AD转换器、液晶显示模块、串行口输入输出端口等构成。环境参数经信号采集电路和AD转换后送单片机,经处理后在液晶上实时显示,然后通过串口传输给上位机。传感器传感器信号采集A/D转换液晶显示微处理器计算机串口上位机 图2-2 监测终端组成框图2.3 通信方式的选择串口是计算机上通用设备通信的协议端口,现在大多数计算机包含串口。串口通信的标准经过使用和发展已经有很多中,但基本都是在RS232标准的基础上改进形成的。但是RS232标准只针对于点对点的单通道数据传送,在此基础上形成RS485标准,增加了多点和双向通信能力。这个标准传输信号具有很强的抗干扰能力,可以达到更大的传输距离和更高的传输效率。由于上位机只有一台,而需要通信的下位机有多台,因此不一定能够跟每个下位机同时及时的通信,所以为了更好的实现数据的传输,需要用排队理论来合理的设计和控制传输,使数据的传输更及时和有效,提高系统的通信能力。排队理论就是利用概率论和随机理论,研究随机系统内服务与需求之间的关系,以便合理地设计和控制排队系统。在所研究的系统中,某一下位机请求与上位机通信,当上位机空闲时,立即响应请求,当上位机忙时,不能立即响应该请求。呼叫持续等待是一个有限的时间,若某一等待响应的呼叫超过规定的等待时间还没有响应则该下位机挂断,等待几分钟后再发送请求。各下位机的地位一样时,相应的规则采用先到先服务的形式。服务时间为一次传送数据的通信时间。由于多路请求是随机的,并且相互之间完全独立,但对整个系统而言,各下位机传送的数据都能送入上位机中。目前串口是仪器仪表设备通用的通信协议端口,也用于获取远程采集设备的数据。串口通信的概念非常简单,串口按位发送和接收字节。尽管比按字节的并行通信慢,但是由于串口通信是异步的,可以在使用一根线发送数据的同时用另一根线接收数据,其他线用于握手。第三章 上位机开发环境与主要技术3.1 上位机开发平台Delphi是著名的Borland公司开发的可视化软件开发工具。Delphi系列软件的工作平台相当广泛,可以工作于Windows95、Windows98、WindowsNT、Windows2000以及Windows XP下,编程所用的语言为Object Pascal语言。Object Pascal语言具有高度清晰的结构,高效率的优化系统,是一种简单易学,但又不乏其作为优秀编程语言的特点。Delphi具有简单、高效、功能强大的特点。和VC相比,Delphi更简单、更易于掌握,而在功能上却丝毫不逊色;和VB相比,Delphi则功能更强大、更实用。由于Delphi同时兼备了VC功能强大和VB简单易学的特点,因此它成为了程序员至爱的编程工具。Delphi的主要特性如下:1)Delphi是32位应用程序,使用它可以开发出各种功能强大的应用程序;2)Delphi的编译器是目前世界上最快的32位本地代码编译器,使用这种编译器产生的运行文件(EXE)是独立的,不需要链接运行时的解释器DL;3)Delphi可充分发挥Windows95/98/2000/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等,下面对这几个主流的数据库各自特点简单介绍。Oracle数据库系统是对象关系型数据库,支持大型多用户数据系统和分布式数据库和分布处理,具有可移植性和兼容性,一般用在大型事务处理及客户服务器结构的应用系统,但价格昂贵,不适合一般开发应用。SQL Server是基于服务器端的中型的数据库,可以适合大容量数据的应用,在处理海量数据的效率,后台开发的灵活性,可扩展性等方面强大;是真正的客户机服务器体系结构,图形化用户界面,使系统管理和数据库管理更加直观、简单;丰富的编程接口工具,为用户进行程序设计提供了更大的选择余地:对网络技术的支持,使用户能够很容易地将数据库中的数据发布到网页上。Mysql是一个开放源码的小型关系型数据库管理系统,目前被广泛地应用在Intemet上的中小型网站中。由于其体积小、速度快、总体成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了Mysql作为网数据库。Mysql可以支持Windows、UNIX、Linux和SUN OS等多种操作系统平台。Access是微软公司推出的基于Windows的桌面关系数据库管理系统,是Office系列应用软件之一。它提供了表、查询、窗体、报表、页、宏和模块来建立数据库系统的对象;提供了多种向导、生成器和模板,把数据存储、查询、界面设计、报表生成等操作规范化等。几种数据库各有特点,其中Access是一个中、小型数据库管理系统,使用方便、功能强大、易操作并且很实用,它适合数据量不太大的应用,在处理数据库时效率也很高。所以本课题选用Access作为数据库平台,既可以满足数据操作方便迅速的特点,也可以降低软件的开发成本。3.3 串口通信的实现方法3.3.1 概述实际中串口通信程序的开发很少直接使用API函数,因为这会无谓的增加编程难度,也会给调试带来诸多不便。在面向对象方法下通常使用串口类(即串口函数库),这样编程效率即高,调试又方便。下面就从通信API介绍、串口类开发这两方面加以介绍。l、串口通信API函数基础通信API函数是整个串口通信程序的基础,串口类中的任何成员函数也只不过是对通信API函数的封装而己。通信API函数所涉及的操作包括串口的打开、关闭、初始化与读写等。(1)串口的打开与关闭 Win32系统把文件的概念进行了扩展,无论是文件、通信设备、命名管道、邮槽、磁盘,还是控制台,都是用API函数Create File()来打开或创建的。如果打开成功的话会返回一个串口的句柄,应用程序应对这个句柄判断其有效性。当不再使用该串口句柄时,应该调用CloseHandle0函数关闭之,以方便其它应用程序申请对串口的控制权。(2)串口的初始化在打开串口后,常常需要对串口进行一些初始化工作,这需要通过一个DCB结构来进行。DCB结构包含了诸如波特率、数据位数、奇偶校验和停止位数等信息。在查询或配置串行口的属性时,都要用DCB结构来作为缓冲区。调用函数可以获得串口的配置,该函数把当前配置填充到一个DCB结构中。一般在用CreateFile0打开串行口后,就调用GetCommState()函数来获取串行口的初始配置。要修改串行口的配置,应该先修改DCB结构,然后再调用SetCommState0函数用指定的DCB结构来设置串行口。除了在DCB中的设置外,程序一般还需要设置IO缓冲区的大小。Windows用阳缓冲区来暂存串行口输入和输出的数据,如果通信的速率较高,则应该设置较大的缓冲区调用SctupCommO函数可以设置串行口的输入和输出缓冲区的大小。在对串口进行读写的时候,需要考虑超时问题。超时有两种:间隔超时和总超时。间隔超时是指在接收时两个字符之间的最大时延,总超时是指读写操作总共花费的最大时间。写操作只支持总超时,而读操作两种超时均支持。在用异步方式读写串行口时,虽然在完成读写操作以前就可能返回,但超时仍然是起作用的。在这种情况下,超时规定的是操作的完成时间,而不是读写函数的返回时间。(3)串口的读写控制这部分内容关系到串行通信的核心内容,将分读写串口API函数、异步IO操作两部分介绍。读写串口API函数:win32中使用ReadFile0函数或者ReadFileEx0数从串口中读取数据。两者区别是:前者对同步操作和异步操作都支持,而后者仅支持异步操作。eadFile0函数第四个参数,在读操作之前应置为0。同样,写串口函数也有两个,一个是writeFile0,另一个是writeFileEx0前者同时支持同步操作和异步操作,而后者仅支持异步操作。写函数不论在声明形式上还是在使用方法上都与ReadFile0十分相似,具体可以查看MSDN帮助文档。异步IO操作:在用ReadFile0和writeFile0读写串行口时,既可以同步执行,也可以异步执行。在同步执行时,函数直到操作完成后才返回。这意味着在同步执行时线程会被阻塞,从而导致效率下降。在异步执行时,即使操作还未完成,调用的函数也会立即返回。费时的IO操作在后台进行,这样线程就可以干别的事情。例如,线程可以在不同的端口上同时执行IO操作,甚至可以在同一端口上同时进行读写操作。“异步一词的含义就在于此。ReadFile0和writeFile()函数是否为异步操作模式是由CreateFile()函数决定的。如果在调用CreateFileO创建句柄时指定了ILE FLAG OVERLAPPED标志,那么调用ReadFileO和writeFileO对该句柄进行的读写操作就是异步的,如果未指定异步标志,则读写操作是同步的。在设置了异步IO操作后,IO操作和函数返回有以下两种情况:第一种,函数返回时IO操作己完成:此时结果好像是同步执行的,但实际上这是异步操作的结果。第二种,函数返回时IO操作还没完成:此时一方面,函数返回值为0,并且GetLastErrorO函数返回ERROR IO PENDING;另一方面,系统把OVERLAPPED中的信号事件设为无信号状态。当IO操作完成后,系统将它设置为有信号状态。如果GetLastError0函数返IEIERROR IO PENDING,则说明异步操作还没完成,线程可以等待操作完成。有两种等待办法:一种办法是用像WaitForSingleObject0这样的等待函数来等待OVERLAPPED结构的hEvent成员,可以规定等待的时间,在等待函数返回后,调用GetOverlappedResult0。另一种办法是用GetOverlappedResult()函数等待,如果指定该函数的bWait参数为TRUE,那么该函数将等待OVERLAPPED结构的hEvent事件,并且只有当IO操作完成后方返回(实际上这又变成了同步方式)。同时GetOverlappedResultoi函数可以返回一个OVERLAPPED。结构来报告包括实际传输字节在内的重叠操作结果。2、串口类的开发串口类是对通信API函数进行最一般的封装,以便能够应用于不同的串口应用程序开发中。现在开发串口应用程序的方法很多,如微软的MSCcomm控件,但是MSComm本身存在一定的弊端,如只能发送ASCII码等。从用户角度讲上位机串口通信模块的使用流程一般分四个步骤,即“初始化并打开串口一监视串口读写串21-关闭串口。3.3.2 串口通信API函数的实现原理实际中串口通信程序的开发很少直接使用API函数,因为这会无谓的增加编程难度,也会给调试带来诸多不便。在面向对象方法下通常使用串口类(即串口函数库),这样编程效率即高,调试又方便。通信API函数是整个串口通信程序的基础,串口类中的任何成员函数也只不过是对通信API函数的封装而己。通信API函数所涉及的操作包括串口的打开、关闭、初始化与读写等。 (1)串口的打开与关闭Win32系统把文件的概念进行了扩展,无论是文件、通信设备、命名管道、邮槽、磁盘,还是控制台,都是用API函数CreateFile()来打开或创建的。如果打开成功的话会返回一个串口的句柄,应用程序应对这个句柄判断其有效性。当不再使用该串口句柄时,应该调用CloseHandle0函数关闭之,以方便其它应用程序申请对串口的控制权。 (2)串口的初始化在打开串口后,常常需要对串口进行一些初始化工作,这需要通过一个DCB结构来进行。DCB结构包含了诸如波特率、数据位数、奇偶校验和停止位数等信息。在查询或配置串行口的属性时,都要用DCB结构来作为缓冲区。调用函数可以获得串口的配置,该函数把当前配置填充到一个DCB结构中。一般在CreateFile0打开串行口后,就调用GetCommState()i函l数来获取串行口的初始配置修改串行口的配置,应该先修改DCB结构,然后再调用SetCommState0函数用指定的DCB结构来设置串行口3。除了在DCB中的设置外,程序一般还需要设置IO缓冲区的大小。Windows用阳缓冲区来暂存串行口输入和输出的数据,如果通信的速率较高,则应该设置较大的缓冲区调用SctupCommOi函数可以设置串行口的输入和输出缓冲区的大小。在对串口进行读写的时候,需要考虑超时问题。超时有两种:间隔超时和总超时。间隔超时是指在接收时两个字符之间的最大时延,总超时是指读写操作总共花费的最大时间。写操作只支持总超时,而读操作两种超时均支持。在用异步方式读写串行口时,虽然在完成读写操作以前就可能返回,但超时仍然是起作用的。在这种情况下,超时规定的是操作的完成时间,而不是读写函数的返回时间。 (3)串口的读写控制这部分内容关系到串行通信的核心内容,将分读写串口API函数、异步IO操作两部分介绍。读写串口API函数:win32中使用ReadFile0函数或者ReadFileEx0数从串口中读取数据。两者区别是:前者对同步操作和异步操作都支持,而后者仅支持异步操作。ReadFile0函数第四个参数,在读操作之前应置为0。同样,写串口函数也有两个,一个是writeFile0,另一个是writeFileEx0前者同时支持同步操作和异步操作,而后者仅支持异步操作。写函数不论在声明形式上还是在使用方法上都与ReadFile0十分相似,具体可以查看MSDN帮助文档。 异步IO操作:在用ReadFile0和writeFile0读写串行口时,既可以同步执行,也可以异步执行。在同步执行时,函数直到操作完成后才返回。这意味着在同步执行时线程会被阻塞,从而导致效率下降。在异步执行时,即使操作还未完成,调用的函数也会立即返回。费时的IO操作在后台进行,这样线程就可以干别的事情。例如,线程可以在不同的端口上同时执行IO操作,甚至可以在同一端口上同时进行读写操作。“异步一词的含义就在于此。ReadFile0和writeFile(i)函数是否为异步操作模式是由CreateFile函数决定的。如果在调用CreateFileO创建句柄时指定了FILE FLAG OVERLAPPED标志,那么调用ReadFileO和writeFileO对该句柄进行的读写操作就是异步的,如果未指定异步标志,则读写操作是同步的5。3.3.3 串口类的开发串口类是对通信API函数进行最一般的封装,以便能够应用于不同的串口应用程序开发中。现在开发串口应用程序的方法很多,如微软的MSCcomm控件,但是MSComm本身存在一定的弊端,如只能发送ASCII码等。从用户角度讲上位机串口通信模块的使用流程一般分四个步骤,即“初始化并打开串口-监视串口-读写串口-关闭串口”。封装串口类CMyCom的成员函数时也正是基于这种理解,各成员函数介绍如下:(1)初始化并打开串口函数函数声明形式:BOOL CMyCom:InitMyCom(int nPort,int nBaud,int nDataBits,int nStopBits)参数含义:nPort为端口号,支持串口l至串口4;nBaud为波特率,支持常用波特率如9600baud;nDataBits为数据位数,支持58位:nStopBits为停止位数,支持12位;返回值:当设置成功后,返回值为TRUE;失败时,返回值为FALSE;实现原理:本函数只支持操作一个串口。程序根据串口配置情况调用CreateFile0函数打开串口,随后启动串口监视线程等待应答数据。 图3-1-InitMyCom()函数流程图(2)写串口函数。函数声明形式:BOOL CMyCom:WriteMyCom(char*bur,DWORD dwBufLen)参数含义:buf为待发命令的缓冲区指针,dwBufLen待发字符。返回值:返回值为实际发送的字符数;实现原理:该函数调用WriteFileO发送命令并调用GetOverlappedResult0函数返回实际发送的字符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控件。选择下拉菜单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等,根据实际需要来定,在串口打开后也可更改波特率,实际波特率随之更改。ParityCheck:奇偶校验。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 object当输入缓存有数据时将触发该事件,在这里可以对从串口收到的数据进行处理。Buffer中是收到的数据,Buff-erLength是收到的数据长度。OnReceiveError:procedure(Sender: TObject; Event-ask:DWORD)当接受数据时出现错误将触发该事件。4.3 SPComm的使用以实现PC机与单片机8051之间的通信为例,首先要调通他们之间的握手信号。假定他们之间的通信协议是:PC到8051一帧数据6个字节,8051到PC一帧数据也为6个字节。当PC发出(F0,01,FF,FF,01,F0)后8051能收到一帧(F0,01,FF,FF,01,F0),表示数据通信握手成功,两者之间就可以按照协议相互传输数据。创建一个新的工程COMM.DPR,把窗体的标题定义为单片机串口通信:图4-2 单片机串口通信窗口实现PC机与单片机之间的数据发送及接收具体步骤:(1) 初始化并打开串口需要选择本次通信使用的串口,确定通信协议,即设置波特率、校验方式、数据位、停止位等属性,打开该串口。代码如下:初始化并打开串口:CommlBaudRate:=9600; 波特率9600bpsCommlParity:=None; 奇偶检验无CommlByteSize:=8: 数据位8CommlStopBits:=l; 停止位1CommlStartComm: 打开串口(2)建立握手信号实现PC机与单片机之间的通信,首先要调通它们之间的握手信号,握手信号可以随意选择某特定字符串,当Pc发出这样一帧数据后,通过接收事件能收到单片机返回的这一帧数据或特定的某字符串,则表示握手成功,系统通信正常。两者之间就可以按照协议相互传输数据。否则需重新建立握手信号。(3)发送数据在编写基于串口的计算机工业测控时,通常需要由PC机向下位机发送命令以控制下位机的行为,同时向下位机发送有关数据。利用SPCOMM串口控件向下位机发送数据代码如下:发送数据和控制子程序procedure senddata;vari:integer;commflg:Boolean;begincommflg:=true;for i:=l to 8 dobeginif not fcomm comml writecommdata(sendbutter,i)thenbeginCommflg=false;break;end;end;end;(4)接收数据在编写基于串口的计算机工业测控时,通常需要由下位机向PC机发送数据以使PC机了解系统的测试数据或下位机的运行状态,并进而控制下位机的行为11。利用SPCOMM串口控件接收下位机发送的数据信息的代码如下:事件驱动方式接收数据程序procedure TForm 1CommlReceiveData(Sender:Tobject;Buffer:Pointer;bufferLength:Word);varreceivedata:array ofbyte;beginsleep(100); 等待lOOms,保证接收到所有数据move(buffef,receivedata,bufferlength); 将接收缓存区中的数据转移到数组中.end;(5)关闭串口在系统开发中,应注意在不使用串口时应及时关闭串口,释放系统资源,否则可能会影响系统的其它应用。关闭串口的代码如下:procedure TFormlFormClose(Sender;TObj ect:var Action:TCIoseAction);begincommlStopComm;end;第五章 上位机软件设计5.1 系统设计概述本软件采用模块化设计方案,以系统主界面模块为主导,实现用户等级管理等主要功能,这样可以使整个软件结构层次化,且更易于维护和升级。图5-1 软件模块结构图5.2数据库平台的选择数据库平台选用Microsoft Access 2003,Access2003是office2003中文版的组件之一,是一个中、小型数据库管理系统,使用方便、功能强大,与其它数据库有良好的接口。Access2003具有完整的数据库应用开发工具,用户可以方便地设计、修改、浏览一个记录数据的基本表;可以在表数据中进行各种筛选和查询操作;可以设计和使用各种窗体以实现数据显示和操作;可以根据表数据设计打印各种报表;对表进行一系列特定的操作。Access2003内有强大的操作向导,为用户提供了丰富的数据库基本表模板。用户只需简单的操作就可建立数据库中所使用的各种基本表、窗体和报表。在Access2003中,可以设定、修改基本表之间的关联,从而实现在多个相关表之间的关系查询。Access2003中的宏可以实现操作的自动化,使操作更加简单、快捷。Access2003不仅可以处理自身的数据库文件,还可以处理其它一些数据库系统管理软件所建立的数据库文件,能识别dBase、FOxBase、FoxPrO、Paradox、Btrieve等数据库格式文件,并且支持开放式数据库互连性标准(ODBc)的SQL。倒与其它的关系型数据库管理系统相比,Access2003具有以下优点:(l)存储文件单一。Access2003的一个数据库文件中包含了该数据库中的全部数据表、查询、窗体、报表等所有数据,便于管理。(2)支持长文件名,并可以在文件名内加空格,使文件便于理解、查找。(3)具有强大的网络功能,可通过网络传送数据。(4)使用简便,用户无需了解编程语言,便可轻松地设计和开发数据库应用程序。(5)可以处理多种数据信息,如文本文件和其它数据库文
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论