基于单片机的多功能环境检测系统毕业设计_第1页
基于单片机的多功能环境检测系统毕业设计_第2页
基于单片机的多功能环境检测系统毕业设计_第3页
基于单片机的多功能环境检测系统毕业设计_第4页
基于单片机的多功能环境检测系统毕业设计_第5页
已阅读5页,还剩71页未读 继续免费阅读

下载本文档

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

文档简介

65/76××学院毕业设计(论文)题目:基于单片机的多功能环境检测系统设计作者:指导教师:专业:电气自动化时间:××学院毕业论文基于单片机的多功能环境监测系统设计——串口通信与界面设计Thedesignofmultifunctionenvironmentalmonitoringbasedonsingle-chip——Serialcommunicationsandinterfacedesign摘要随着工业技术的进展,环境问题差不多成为全世界关注的问题。近年来,水土流失、荒漠化、草原退化和物种减少;生态相当脆弱,自然灾难频繁;环境污染严峻,直接危及社会、经济的进展。人们差不多认识到,为了爱护环境,就将对环境的演化趋势、特点及存在的问题作进一步的细致的了解。多功能环境监测是利用各种技术测定和分析生命系统各层次对自然或人为作用的反应或反馈效应的综合表征来推断和评价这些干扰对环境产生的阻碍、危害及其变化规律,为环境质量的评估、调控和环境治理提供科学依据。本课题从国内外环境监测系统的研究现状动身,结合实际情况设计一个基于单片机的多功能环境监测系统。本文要紧负责串口通信及界面软件的设计。其中,上位机软件要紧以WindowsXP为操作平台,采纳Delphi7.0编写。Delphi是一种可视化的、快速的应用程序,具有面向对象编程,支持团队开发,提供工程治理,对数据库的良好支持等特性,是一个集数据通信、存储、查询、处理于一体的综合性软件。本设计能够实现以下功能:PC机通过串行口与下位机通信,将下位机采集到的温、湿度及光线数据在PC机上实时显示;对历史数据进行查询、分析、统计,并能将相应的结果打印出来。关键词:温湿度;光线状况;上位机;串口通信AbstractWiththedevelopmentofindustrialtechnology,environmentalissueshavebecometheworld'sconcern.Inrecentyears,soilerosion,desertification,grasslanddegradationandlossofbiodiversity;ecologyveryfragileandfrequentnaturaldisasters;environmentalpollution,directlythreateningthesocialandeconomicdevelopment.Environmentalmonitoringistheuseofmulti-functionmeasurementandanalysistechnologysystematalllevelsoflifetonaturalorman-maderoleofresponseorfeedbackeffectsofthecomprehensivecharacterizationtodetermineandevaluatetheimpactofinterferenceontheenvironment,endangertheirtrends,theenvironmentalqualityassessment,controlandprovidethescientificbasisforenvironmentalmanagement.Thistopicembarksfromthedomesticandforeignenvironmentalmonitoringsystem'sresearchpresentsituation,theunionactualsituationdesignsonebasedonmonolithicintegratedcircuit'smulti-purposeenvironmentalmonitoringsystem.Thisarticleprimarycognizanceserialportcorrespondenceandcontactsurfacesoftware'sdesign.And,thesuperiormachinesoftwaremainlytakeWindowsXPastheserviceplatform,usestheDelphi7.0compilation.Delphiisonekindofvisualization,thefastapplicationprocedure,hastheobject-orientedprogramming,supportstheteamtodevelop,providestheprojectmanagement,todatabasecharacteristicsandsoongoodsupport,isacollectiondatacommunication,thememory,theinquiry,processinginabody'scomprehensivesoftware.Thisdesigncanrealizethefollowingfunction:PCmachinethroughserialportandlowerpositionmachinecorrespondence,lowerpositionmachinegatheringwarm,humidityandopticalfiberdataonthePCmachinerealtimedisplay;Carriesontheinquiry,theanalysis,thestatisticstothehistoricaldata,andcanprintthecorrespondingresult.Keywords:mperatureandhumidity;Lightingconditions;PC;SerialCommunication目录第一章绪论 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.2SPComm的要紧属性,方法和事件 144.2.1属性 144.2.2方法 154.2.3事件 154.3SPComm的使用 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所示,该终端以单片机为核心,由各种传感器、A/D转换器、液晶显示模块、串行口输入/输出端口等构成。环境参数经信号采集电路和A/D转换后送单片机,经处理后在液晶上实时显示,然后通过串口传输给上位机。传感器传感器传感器传感器信号采集A/D转换液晶显示微处理器计算机串口上位机2.3通信方式的选择串口是计算机上通用设备通信的协议端口,现在大多数计算机包含串口。串口通信的标准通过使用和进展差不多有专门多中,但差不多差不多上在RS232标准的基础上改进形成的。然而RS232标准只针关于点对点的单通道数据传送,在此基础上形成RS485标准,增加了多点和双向通信能力。那个标准传输信号具有专门强的抗干扰能力,能够达到更大的传输距离和更高的传输效率。由于上位机只有一台,而需要通信的下位机有多台,因此不一定能够跟每个下位机同时及时的通信,因此为了更好的实现数据的传输,需要用排队理论来合理的设计和操纵传输,使数据的传输更及时和有效,提高系统的通信能力。排队理论确实是利用概率论和随机理论,研究随机系统内服务与需求之间的关系,以便合理地设计和操纵排队系统。在所研究的系统中,某一下位机请求与上位机通信,当上位机空闲时,立即响应请求,当上位机忙时,不能立即响应该请求。呼叫持续等待是一个有限的时刻,若某一等待响应的呼叫超过规定的等待时刻还没有响应则该下位机挂断,等待几分钟后再发送请求。各下位机的地位一样时,相应的规则采纳先到先服务的形式。服务时刻为一次传送数据的通信时刻。由于多路请求是随机的,同时相互之间完全独立,但对整个系统而言,各下位机传送的数据都能送入上位机中。目前串口是仪器仪表设备通用的通信协议端口,也用于猎取远程采集设备的数据。串口通信的概念特不简单,串口按位发送和接收字节。尽管比按字节的并行通信慢,然而由于串口通信是异步的,能够在使用一根线发送数据的同时用另一根线接收数据,其他线用于握手。第三章上位机开发环境与要紧技术3.1上位机开发平台Delphi是闻名的Borland公司开发的可视化软件开发工具。Delphi系列软件的工作平台相当广泛,能够工作于Windows95、Windows98、WindowsNT、Windows2000以及WindowsXP下,编程所用的语言为ObjectPascal语言。ObjectPascal语言具有高度清晰的结构,高效率的优化系统,是一种简单易学,但又不乏其作为优秀编程语言的特点。Delphi具有简单、高效、功能强大的特点。和VC相比,Delphi更简单、更易于掌握,而在功能上却丝毫不逊色;和VB相比,Delphi则功能更强大、更有用。由于Delphi同时兼备了VC功能强大和VB简单易学的特点,因此它成为了程序员至爱的编程工具。Delphi的要紧特性如下:1)Delphi是32位应用程序,使用它能够开发出各种功能强大的应用程序;2)Delphi的编译器是目前世界上最快的32位本地代码编译器,使用这种编译器产生的运行文件(EXE)是独立的,不需要链接运行时的解释器DL;3)Delphi可充分发挥Windows95/98/2000/NT和WindowsNT的强大功能;4)Delphi提供了多种32位可视组件;5)Delphi是一种面向对象的程序设计语言,因此可做到对可视窗体的继承;6)Delphi采纳三层数据库治理模式(数据层、对象层、应用程序层),把例如数据模型、业务规则、窗体和对象等集中存储在对象存储库中;7)应用程序可通过在Delphi中使用Borland公司提供的数据引擎(BDE)功能从而毫无障碍地使用多种数据库,例如Oracle、Sybase等;8)使用Delphi提供的数据库扫瞄器。3.2数据库方案的实现目前常用的数据库有Oracle、SQL、Server、Access和Mysql等,下面对这几个主流的数据库各自特点简单介绍。Oracle数据库系统是对象关系型数据库,支持大型多用户数据系统和分布式数据库和分布处理,具有可移植性和兼容性,一般用在大型事务处理及客户/服务器结构的应用系统,但价格昂贵,不适合一般开发应用。SQLServer是基于服务器端的中型的数据库,能够适合大容量数据的应用,在处理海量数据的效率,后台开发的灵活性,可扩展性等方面强大;是真正的客户机/服务器体系结构,图形化用户界面,使系统治理和数据库治理更加直观、简单;丰富的编程接口工具,为用户进行程序设计提供了更大的选择余地:对网络技术的支持,使用户能够专门容易地将数据库中的数据公布到网页上。Mysql是一个开放源码的小型关系型数据库治理系统,目前被广泛地应用在Intemet上的中小型网站中。由于其体积小、速度快、总体成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了Mysql作为网数据库。Mysql能够支持Windows、UNIX、Linux和SUNOS等多种操作系统平台。Access是微软公司推出的基于Windows的桌面关系数据库治理系统,是Office系列应用软件之一。它提供了表、查询、窗体、报表、页、宏和模块来建立数据库系统的对象;提供了多种向导、.生成器和模板,把数据存储、查询、界面设计、报表生成等操作规范化等。几种数据库各有特点,其中Access是一个中、小型数据库治理系统,使用方便、功能强大、易操作同时专门有用,它适合数据量不太大的应用,在处理数据库时效率也专门高。因此本课题选用Access作为数据库平台,既能够满足数据操作方便迅速的特点,也能够降低软件的开发成本。3.3串口通信的实现方法3.3.1概述实际中串口通信程序的开发专门少直接使用API函数,因为这会无谓的增加编程难度,也会给调试带来诸多不便。在面向对象方法下通常使用串口类(即串口函数库),如此编程效率即高,调试又方便。下面就从通信API介绍、串口类开发这两方面加以介绍。l、串口通信API函数基础通信API函数是整个串口通信程序的基础,串口类中的任何成员函数也只只是是对通信API函数的封装而己。通信API函数所涉及的操作包括串口的打开、关闭、初始化与读写等。(1)串口的打开与关闭Win32系统把文件的概念进行了扩展,不管是文件、通信设备、命名管道、邮槽、磁盘,依旧操纵台,差不多上用API函数CreateFile()来打开或创建的。假如打开成功的话会返回一个串口的句柄,应用程序应对那个句柄推断其有效性。当不再使用该串口句柄时,应该调用CloseHandle0函数关闭之,以方便其它应用程序申请对串口的操纵权。(2)串口的初始化在打开串口后,常常需要对串口进行一些初始化工作,这需要通过一个DCB结构来进行。DCB结构包含了诸如波特率、数据位数、奇偶校验和停止位数等信息。在查询或配置串行口的属性时,都要用DCB结构来作为缓冲区。调用函数能够获得串口的配置,该函数把当前配置填充到一个DCB结构中。一般在用CreateFile0打开串行口后,就调用GetCommState()函数来猎取串行口的初始配置。要修改串行口的配置,应该先修改DCB结构,然后再调用SetCommState0函数用指定的DCB结构来设置串行口。除了在DCB中的设置外,程序一般还需要设置I/O缓冲区的大小。Windows用阳缓冲区来暂存串行口输入和输出的数据,假如通信的速率较高,则应该设置较大的缓冲区.调用SctupCommO函数能够设置串行口的输入和输出缓冲区的大小。在对串口进行读写的时候,需要考虑超时问题。超时有两种:间隔超时和总超时。间隔超时是指在接收时两个字符之间的最大时延,总超时是指读写操作总共花费的最大时刻。写操作只支持总超时,而读操作两种超时均支持。在用异步方式读写串行口时,尽管在完成读/写操作往常就可能返回,但超时仍然是起作用的。在这种情况下,超时规定的是操作的完成时刻,而不是读/写函数的返回时刻。(3)串口的读写操纵这部分内容关系到串行通信的核心内容,将分读/写串口API函数、异步I/O操作两部分介绍。读/写串口API函数:win32中使用ReadFile0函数或者ReadFileEx0数从串口中读取数据。两者区不是:前者对同步操作和异步操作都支持,而后者仅支持异步操作。eadFile0函数第四个参数,在读操作之前应置为0。同样,写串口函数也有两个,一个是writeFile0,另一个是writeFileEx0前者同时支持同步操作和异步操作,而后者仅支持异步操作。写函数不论在声明形式上依旧在使用方法上都与ReadFile0十分相似,具体能够查看MSDN关心文档。异步I/O操作:在用ReadFile0和writeFile0读写串行口时,既能够同步执行,也能够异步执行。在同步执行时,函数直到操作完成后才返回。这意味着在同步执行时线程会被堵塞,从而导致效率下降。在异步执行时,即使操作还未完成,调用的函数也会立即返回。费时的I/O操作在后台进行,如此线程就能够干不的情况。例如,线程能够在不同的端口上同时执行I/O操作,甚至能够在同一端口上同时进行读写操作。“异步"一词的含义就在于此。ReadFile0和writeFile()函数是否为异步操作模式是由CreateFile()函数决定的。假如在调用CreateFileO创建句柄时指定了ILEFLAGOVERLAPPED标志,那么调用ReadFileO和writeFileO对该句柄进行的读写操作确实是异步的,假如未指定异步标志,则读写操作是同步的。在设置了异步I/O操作后,I/O操作和函数返回有以下两种情况:第一种,函数返回时I/O操作己完成:现在结果看起来是同步执行的,但实际上这是异步操作的结果。第二种,函数返回时I/O操作还没完成:现在一方面,函数返回值为0,同时GetLastErrorO函数返回ERRORIOPENDING;另一方面,系统把OVERLAPPED中的信号事件设为无信号状态。当I/O操作完成后,系统将它设置为有信号状态。假如GetLastError0函数返IEIERRORIOPENDING,则讲明异步操作还没完成,线程能够等待操作完成。有两种等待方法:一种方法是用像WaitForSingleObject0如此的等待函数来等待OVERLAPPED结构的hEvent成员,能够规定等待的时刻,在等待函数返回后,调用GetOverlappedResult0。另一种方法是用GetOverlappedResult()函数等待,假如指定该函数的bWait参数为TRUE,那么该函数将等待OVERLAPPED结构的hEvent事件,同时只有当I/O操作完成后方返回(实际上这又变成了同步方式)。同时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中的设置外,程序一般还需要设置I/O缓冲区的大小。Windows用阳缓冲区来暂存串行口输入和输出的数据,假如通信的速率较高,则应该设置较大的缓冲区.调用SctupCommOi函数能够设置串行口的输入和输出缓冲区的大小。在对串口进行读写的时候,需要考虑超时问题。超时有两种:间隔超时和总超时。间隔超时是指在接收时两个字符之间的最大时延,总超时是指读写操作总共花费的最大时刻。写操作只支持总超时,而读操作两种超时均支持。在用异步方式读写串行口时,尽管在完成读/写操作往常就可能返回,但超时仍然是起作用的。在这种情况下,超时规定的是操作的完成时刻,而不是读/写函数的返回时刻。(3)串口的读写操纵这部分内容关系到串行通信的核心内容,将分读/写串口API函数、异步I/O操作两部分介绍。读/写串口API函数:win32中使用ReadFile0函数或者ReadFileEx0数从串口中读取数据。两者区不是:前者对同步操作和异步操作都支持,而后者仅支持异步操作。ReadFile0函数第四个参数,在读操作之前应置为0。同样,写串口函数也有两个,一个是writeFile0,另一个是writeFileEx0前者同时支持同步操作和异步操作,而后者仅支持异步操作。写函数不论在声明形式上依旧在使用方法上都与ReadFile0十分相似,具体能够查看MSDN关心文档。异步I/O操作:在用ReadFile0和writeFile0读写串行口时,既能够同步执行,也能够异步执行。在同步执行时,函数直到操作完成后才返回。这意味着在同步执行时线程会被堵塞,从而导致效率下降。在异步执行时,即使操作还未完成,调用的函数也会立即返回。费时的I/O操作在后台进行,如此线程就能够干不的情况。例如,线程能够在不同的端口上同时执行I/O操作,甚至能够在同一端口上同时进行读写操作。“异步"一词的含义就在于此。ReadFile0和writeFile(i)函数是否为异步操作模式是由CreateFile函数决定的。假如在调用CreateFileO创建句柄时指定了FILEFLAGOVERLAPPED标志,那么调用ReadFileO和writeFileO对该句柄进行的读写操作确实是异步的,假如未指定异步标志,则读写操作是同步的[5]。

3.3.3串口类的开发串口类是对通信API函数进行最一般的封装,以便能够应用于不同的串口应用程序开发中。现在开发串口应用程序的方法专门多,如微软的MSCcomm控件,然而MSComm本身存在一定的弊端,如只能发送ASCII码等。从用户角度讲上位机串口通信模块的使用流程一般分四个步骤,即“初始化并打开串口--监视串口--读写串口--关闭串口”。封装串口类CMyCom的成员函数时也正是基于这种理解,各成员函数介绍如下:(1)初始化并打开串口函数函数声明形式:BOOLCMyCom:InitMyCom(intnPort,intnBaud,intnDataBits,intnStopBits)参数含义:nPort为端口号,支持串口l至串口4;nBaud为波特率,支持常用波特率如9600baud;nDataBits为数据位数,支持5—8位:nStopBits为停止位数,支持1—2位;返回值:当设置成功后,返回值为TRUE;失败时,返回值为FALSE;实现原理:本函数只支持操作一个串口。程序依照串口配置情况调用CreateFile0函数打开串口,随后启动串口监视线程等待应答数据。图3-1-InitMyCom()函数流程图(2)写串口函数。函数声明形式:BOOLCMyCom:WriteMyCom(char*bur,DWORDdwBufLen)参数含义:buf为待发命令的缓冲区指针,dwBufLen待发字符。返回值:返回值为实际发送的字符数;实现原理:该函数调用WriteFileO发送命令并调用GetOverlappedResult0函数返回实际发送的字符[6]。第四章使用SPComm控件实现串口通信Delphi能够利用的众多串行通信控件中,SPComm控件可谓是最简单,功能比较强大的一种。它支持DataBits(数据位)、Parity(奇偶校验)、StopBits等设置,支持Read/Write,TimingControl(时序操纵),ReadIntervalTimeout(读间断超时操纵),WriteIntervalTimeout(写间断超时操纵)等,同时还支持DTR/DSR,RTS/DTS等硬件流程操纵及Xon/Xoff(握手协议)软件流程操纵,是比较完善的控件。4.1安装SPComm控件从互联网能下载SPComm控件。选择下拉菜单Component中的InstallComponent选项,在Unitfilename处填写SPComm控件所在的路径,其他各项可用默认值,点击OK按钮。如图4-1安装后,在System控件面板中将出现一个红色控件COM。现在就能够像Delphi自带控件一样使用COM控件了[9]。图4-1安装SPComm控件4.2SPComm的要紧属性,方法和事件4.2.1属性CommName:填写COM1,COM2…等串口的名字,在打开串口前,必须填写好此值。BaudRate:设定波特率9600,4800等,依照实际需要来定,在串口打开后也可更改波特率,实际波特率随之更改。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)ofobject当输入缓存有数据时将触发该事件,在那个地点能够对从串口收到的数据进行处理。Buffer中是收到的数据,Buff-erLength是收到的数据长度。OnReceiveError:procedure(Sender:TObject;Event-ask:DWORD)当同意数据时出现错误将触发该事件。4.3SPComm的使用以实现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机与单片机之间的数据发送及接收具体步骤:初始化并打开串口需要选择本次通信使用的串口,确定通信协议,即设置波特率、校验方式、数据位、停止位等属性,打开该串口。代码如下://初始化并打开串口:Comml.BaudRate:=9600;//波特率9600bpsComml.Parity:=None;//奇偶检验无Comml.ByteSize:=8://数据位8Comml.StopBits:=l;//停止位1Comml.StartComm://打开串口(2)建立握手信号实现PC机与单片机之间的通信,首先要调通它们之间的握手信号,握手信号能够随意选择某特定字符串,当Pc发出如此一帧数据后,通过接收事件能收到单片机返回的这一帧数据或特定的某字符串,则表示握手成功,系统通信正常。两者之间就能够按照协议相互传输数据。否则需重新建立握手信号。(3)发送数据在编写基于串口的计算机工业测控时,通常需要由PC机向下位机发送命令以操纵下位机的行为,同时向下位机发送有关数据。利用SPCOMM串口控件向下位机发送数据代码如下://发送数据和操纵子程序proceduresenddata;vari:integer;commflg:Boolean;begincommflg:=true;fori:=lto8dobeginifnotfcommcommlwritecommdata(sendbutter,i)thenbeginCommflg=false;break;end;end;end;(4)接收数据在编写基于串口的计算机工业测控时,通常需要由下位机向PC机发送数据以使PC机了解系统的测试数据或下位机的运行状态,并进而操纵下位机的行为[11]。利用SPCOMM串口控件接收下位机发送的数据信息的代码如下://事件驱动方式接收数据程序procedureTForm1.CommlReceiveData(Sender:Tobject;Buffer:Pointer;bufferLength:Word);varreceivedata:arrayofbyte;beginsleep(100);//等待lOOms,保证接收到所有数据move(buffef,receivedata,bufferlength);//将接收缓存区中的数据转移到数组中end;(5)关闭串口在系统开发中,应注意在不使用串口时应及时关闭串口,释放系统资源,否则可能会阻碍系统的其它应用。关闭串口的代码如下:procedureTForml.FormClose(Sender;TObject:varAction:TCIoseAction);begincomml.StopComm;end;第五章上位机软件设计5.1系统设计概述本软件采纳模块化设计方案,以系统主界面模块为主导,实现用户等级治理等要紧功能,如此能够使整个软件结构层次化,且更易于维护和升级。图5-1软件模块结构图5.2数据库平台的选择数据库平台选用MicrosoftAccess2003,Access2003是office2003中文版的组件之一,是一个中、小型数据库治理系统,使用方便、功能强大,与其它数据库有良好的接口。Access2003具有完整的数据库应用开发工具,用户能够方便地设计、修改、扫瞄一个记录数据的差不多表;能够在表数据中进行各种筛选和查询操作;能够设计和使用各种窗体以实现数据显示和操作;能够依照表数据设计打印各种报表;对表进行一系列特定的操作。Access2003内有强大的操作向导,为用户提供了丰富的数据库差不多表模板。用户只需简单的操作就可建立数据库中所使用的各种差不多表、窗体和报表。在Access2003中,能够设定、修改差不多表之间的关联,从而实现在多个相关表之间的关系查询。Access2003中的宏能够实现操作的自动化,使操作更加简单、快捷。Access2003不仅能够处理自身的数据库文件,还能够处理其它一些数据库系统治理软件所建立的数据库文件,能识不dBase、FOxBase、FoxPrO、Paradox、Btrieve等数据库格式文件,同时支持开放式数据库互连性标准(ODBc)的SQL。倒与其它的关系型数据库治理系统相比,Access2003具有以下优点:(l)存储文件单一。Access2003的一个数据库文件中包含了该数据库中的全部数据表、查询、窗体、报表等所有数据,便于治理。(2)支持长文件名,并能够在文件名内加空格,使文件便于理解、查找。(3)具有强大的网络功能,可通过网络传送数据。(4)使用简便,用户无需了解编程语言,便可轻松地设计和开发数据库应用程序。(5)能够处理多种数据信息,如文本文件和其它数据库文件。5.3串口通信在本系统中的实现串口通信模块是本远程监测软件的重要组成部分之一,是上位机与下位机进行正常通信的重要依据。能否及时准确的同意温湿度,光线监测数据在专门大程度上取决于通信协议和通信流程的设计,本软件采纳自定义的通信协议,有效地幸免了数据碰撞的现象,提高了通信的质量与速度,减轻了通信量的负荷,降低了程序的复杂度。5.3.1通信协议的设计l、通信模型的设计在确定通信流程与通信格式之前,应该首先明确通信方式,即明确上、下位机之间将采纳什么组网形式及什么通信规约的问题。依照本课题研究的对象和要紧目的,选择采纳总线型网络结构、主从通信模式将更能满足上、下位机即时通信的需求,实现最终目的。应该考虑使用负载能力更的RS485协议。RS485协议是为弥补RS232的不足而提出的,它改进了RS232通信距离短、速率低的缺点,具有更强的抗干扰与负载能力,同意在一条平衡总线上连接最多256个收发器,支持半、全双工通信。RS485只对物理接口的电气特性做规定,因此需要用户建立自己的高层通信协议。在通信过程中,通信设备双方是互相独立的。这也确实是讲,通信中数据的传输存在着不可确定性,即一方通信设备向另一方发完数据后,并不明白另一方是否正确收到。能否专门好的克服这种客观存在的不可确定性,完全取决于通信协议中通信流程的设计。具体协议表如下:步骤上位机方向单片机1待机状态待机状态2发送“EE”未收到数据不动作3两秒钟内未接收“DD”显示通信失败,返回步骤1假如收到数据回复“DD”表示收到4开始接收数据发送当前温湿度,光线状况数据5回复“CC”表示收到每秒重复步骤2—5周期一次返回步骤1待机状态2、通信流程的设计通常我们推断上位机所发出的命令信息是否被下位机正确接收到的依据是下位机的应答。下位机应答的可能性有四种情况:第一种是所求数据的应答(当成功执行时);第二种是表示命令执行失败的应答;第三种是表示未能成功接收上位机所发命令的应答;第四种是在规定时刻内未接收到任何应答。当上位机遇到除第一种情况以外的其它三种情况时,常规做法会重发命令帧,但在本监测软件中就不同意重发,因为引起后三种情况的缘故有专门多,如下位机没有正确接收到上位机的命令帧:下位机执行命令时出错:下位机尽管执行完命令,但上位机接收的应答帧有误:下位机死机等等,假如对这些情况逐一处理就会令上位机程序疲于重发同一命令而无暇顾及轮询,从而阻碍监测效率。假如不用轮询而改用下位机自动报告的方式则又可能出现数据碰撞的情况。因此在本监测软件的通信流程为:上位机首先呼叫下位机,下位机若接收到呼叫则向上位机发出应答信号。上位机接收到下位机的应答信号后向下位机发送命令信息,下位机接收到此命令后就开始依照那个信息的命令代码执行相应的操作,即发送数据或接收数据。若下位机没有收到上位机的呼叫信号就可不能向上位机发出应答信号,那么上位机将接着呼叫下位机,直到下位机有应答为止。(1)上位机发送命令/接收应答流程当上位机发送一个命令帧之后,立即转到线程串口监视线程,等待下位机的应答帧。上位机接收到正确应答后会接着发送下一帧命令,而可不能向下位机发送任何表示正确接收的命令。当在超时时刻内没有接收到下位机的应答帧时,上位机的行为会出现接着向下位机发送命令帧。图5-3上位机发送命令,接收回应流程图(2)下位机接收命令/发送应答流程在通信过程中,下位机一直处于接收状态,随时预备接收上位机发来的命令帧。当下位机接收到一个呼叫命令帧后,向上位机发送应答信号。然后上位机向下位机发送命令帧,下位机接收执行命令帧。图5-4下位机发送命令∕接收回应流程图3、通信格式的设计通信协议中的数据格式大多是基于帧的,立即所要发送数据/命令的头尾加入修饰性的字符,形成一个帧发送出去;接收时将所接收到的帧去掉所加入的头尾即可取出数据1命令。实践中大伙儿通常采纳的数据/命令帧的格式有两种,如表5-1、表5-2所示。表5-1数据∕命令帧格式1表5-2数据∕命令帧格式25.3.2通信程序的开发SPComm控件通过串口传输和接收数据,为应用程序提供串行通信功能。该控件串行通信功能的实现实际上是调用了WindOWS的API函数,再由Comm.dry解释并传送给设备驱动程序。跟所有其它的ActiveX控件一样,SPComm.OCX定了一系列的属性和接口。在Delphi中,用户用设置属性值和编写方法就能够进行操作。SPComm控件提供了两种串行口消息处理的方法:一种是查询方式,另外一种是事件驱动方式。关于较简单的通信任务,可通过查询串行12的CommEvent属性来了解最近发生的事件或错误并进行相应的处理。对较复杂的通信任务,就应用事件驱动接口,它只响应OnComm事件对己发生的事件或错误进行处理,与CommEvent属性紧密相关。在Delphi中实现事件驱动方法时,要控件的变量,以后针对此对象操作即可。事件驱动通信是处理串行端12交互作用的一种特不有效的方法。在许多情况下,在事件发生时需要得到通知,例如,在串口接收缓冲区中有字符,或者CD或RTS线上一个字符到达或一个事件发生时。在这些情况下,能够利用SPComm控件的OnComm事件捕获并处理这些事件。OnComm事件还能够检查和处理通信错误。在编程过程中,就能够在OnComm事件处理函数中加入自己的处理代码。这种方法的优点是程序响应及时,可靠性高。每个的设计实现SPComm控件对应着一个串行端口,假如应用程序需要访问多个串行端口,必须使用多个SPComm控件。在PC机串行端口通信时,使用了十几条线进行信号传输。利用SPComm控件开发串口通信软件,需要了解以下线的名称及其作用,这些线的高低电平状态分不对应SPComm控件相应属性的True和False值。5.4上位机程序的开发设计本系统流程图如图5-5所示:图5-5系统流程图5.4.1系统登录模块软件运行之后,首先确实是进入用户登录窗体,本界面实现的功能是用户输入用户名和密码,依照不同的用户登录选择不同的操作主界面功能,并进入系统进行相应操作。图5-6用户登录模块截图下面对重要的控件的属性加以讲明:表5-3TTable控件属性属性值NameTable1DatabaseNameShujuTableNameDengluActiveTure表5-4TQuery控件属性控件属性设置值NameQuery1DatabaseNameSjkActiveFalse5.4.2系统主界面模块该界面是本软件中最重要的部分。温室环境的监测,环境参数的设置输出以及温室内各个设备的运行状况都要在那个地点实现。其运行界面如图5-7所示。图5-7系统主界面截图5.4.3用户设置模块用户设定窗体要紧是便于治理员和用户随时修改登录密码和增减用户名并相应修改治理权限的功能。但在修改之前需要输入原先的密码,然后才能进行修改。新的密码需要输入两次,假如两次输入的新密码不一样,则系统会弹出对话框提示密码没有修改成功。用户能够重新输入新密码。用户设置窗体只有以治理员登录的用户才有权利修改,否则弹出该窗体的按钮是灰色的不能实现如上操作。图5-8用户设定模块截图5.4.4历史数据查询模块历史数据查询页设计功能有:按日期时刻顺序对历史数据的查询、打印,对所查询到的记录产生报表并以文本格式输出。其运行界面如图5-9所示,报表界面如图5-10所示。具体实现代码如下:ProcedureTForm4.setmaxminO;Currentmaxdata:=fieldlist.fields[i].asfloat;Currentmindata:=fieldlist.fields[i].asfloat;Whilenot(eof)dobeginIffieldlist.Fields[i].asfloat<currentmindatathenbeginCurrentmindata:=fieldlist.fields[i].asfloat;Currentmindate:=fieldlist.fields[O].asdatetimeIffieldlist.fields[i].asfloat>currentmaxdatathenbeginCurrentmaxdata:=fieldlist.fields[i].asfloat;Currentmaxdate:=fieldlist.fields[0].asdatetime;图9历史数据查询界面图10温室环境监测系统报表结论本文通过对国内外温室环境操纵现状分析,指出了温室环境监测智能化是进展的必定趋势。依照温室内作物生长的需要,对温室环境因子进行实时监测操纵,要紧完成了温、湿度及光线状况环境监测系统的上位机软件的设计,本设计可实时测量某一个体空间中任意一点的温度、湿度数据以及光线状况,能在小型终端设备的LCD上显示,还能通过串口通信在微机上实现实时数据的显示、分析和图形打印等功能。但由于时刻和个人能力有限,该设计难免有许多不完善之处,敬请更正。致谢不管是做毕业设计依旧写论文对我来讲差不多上第一次,我对串口通信的了解只是一些差不多知识,而缺乏真正的实践经验。能顺利的完成这次毕业设计并写出这篇论文,我要十分感谢我的指导老师程老师。程老师在我遇到挫折与困难时总是能给我足够的信心与动力和一些建设性的指导意见,使我终于完成了那个对我来讲蔚为艰巨的任务。程老师严谨认确实治学态度、渊博的知识、深厚的专业功底、敏锐的洞察力、求真务实的科研精神,及谦虚热情的待人风格使我受益匪浅。从这次的毕业设计中我学会了如何样去独立的考虑和完成一项任务,以及如何样去面对和了解我所未知的东西,从何下手,如何样解决。首先,要分析那个任务的目的跟要求;然后去收集跟它有关的资料,进行整理和消化,全面和深入的了解这些资料并整理出大概的思路,系统的整理出任务的流程图和提纲;最后再按照流程图和提纲去完成那个任务。如此就能独立并专门好的完成一项任务了。我想,这次的经历必将给我今后的工作带来专门大的关心和难得的经验。由于时刻仓促,本设计难免有考虑不完善之处,敬请指正。感谢!参考文献[1]黄兴海.智能网络犁环境温湿度监测系统系统集成方案.电子质量-2001年第3期.[2]林振强.基于网络技术的实验室温、湿度监测系统.化学分析计量.2006.04[3]郭庆.基于RS485总线的环境监控系统设计与实现.国外电子测量技术.2006.07[4]刘爱荣.多通道温.湿度循环检测仪.河南科学.2006—02[5]钞票君.Delphi5串12通信编程.机械工业出版社.2006,P121-132[6]RayLiscbner.Delphi技术手册.中国电力出版社.P66-88[7]李海兵,杨晓亮.Access2003数据库治理从入门到精通.中国青年出版社[8]蒋培,肖江等.1氐消耗无线温湿度监测系统设计.木材加工机械.2007年4期.[9]王树晓湿度计算机监测系统开发与应用.北京纺织.2003—02[10]张毅刚,新编MCS-51单片机应用设计,哈尔滨工业大学出版社,2006,P145-155[11]张培仁,基于C语言编程MSC-51单片机原理与应用,清华大学出版社,2002,P134-156[12]沈红卫,单片机应用系统设计实例与分析,北京航空航天大学出版社,2003[13]李长林,VisualC++串口通信技术与典型实例,清华大学出版社,2006,P132-166[14]周亚玲,苏治中.delphi开发有用编程200例.中国铁道出版社,2006,P15-36[15]曹岩.delphi程序设计有用教程.化学工业出版社,2008,P25-88附录要紧程序:(1).初始化按钮代码:ProcedureTFoml.FormCreate(Sender:TObject);BeginMSComm.CommPort:=1://COM1为选择端口MSComm.Setting:=’9600,n,8,1’;//波特率9600,数据8位,无奇偶校验,停止1位MSComm.InBufferCount:=0;//清空接收缓冲区MSComm.InputLen:=O;//读取整个缓冲区内容MSComm.InBufferSize:=4096;//接收缓冲区4096个字节MSComm.RThreshold:=1000;//每次接收到1000个字节即产生OnComm事件MSComm.OutBufferCount:=O://清空发送缓冲区MSComm.OutBufferSize:=512;//发送缓冲区512个字节MSComm.SThreshold:=l;//每次发送缓冲区字节数少于1个即产生OnComm事件IfnotMSComm.PortOpenthen//打开串口MSComm.PortOpen:=True;End;(2)发送数据按钮代码:proceduresenddata;vali:integer;eommflg:Boolean;begincommflg:=true;fori:=lto8dobeginifnotfcommcommlwritecommdata(sendbutter,i)thenbeginCommflg=false;break;end;end;end;(3)接收数据按钮代码:procedureTForm1.Comm1ReceiveData(Sender:TObject;Buffer:Pointer;BufferLength:Word);varI,j:integer;commRevstr:shortstring;beginviewstri

温馨提示

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

评论

0/150

提交评论