毕业设计(论文)-利用VC++制作空气环境测量仪.doc_第1页
毕业设计(论文)-利用VC++制作空气环境测量仪.doc_第2页
毕业设计(论文)-利用VC++制作空气环境测量仪.doc_第3页
毕业设计(论文)-利用VC++制作空气环境测量仪.doc_第4页
毕业设计(论文)-利用VC++制作空气环境测量仪.doc_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

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

文档简介

北京林业大学本科毕业论文(设计)利用VC+制作空气环境测量仪全套设计加扣3012250582 摘 要 空气环境测量仪,顾名思义,是测量空气环境中的基本物理量的仪器。测得空气中的物理量能够为工业制造领域提供基本数据,成为工业生产上的重要辅助工具。本课题研究的空气环境测量仪可以测量空气中的温度、湿度、压强以及空气折射率,主要方法是通过测量空气中的温湿压来实现空气折射率的测量。从查阅资料我们可以知道,传统的测量空气折射率方法有两类,一类是利用光学性质直接测量折射率。这类方法为保证精度,测量时间较长,无法实时测量出折射率,反应空气的实时性质;另一类是通过测量空气中的基本物理量,通过公式间接导出空气折射率。这类方法较纯光学测量有了较大的进步,主要运用的是单片机,但是单片机还是属于硬件类,人机交互性不足,无法实现有效的数据管理功能。本课题在空气折射率计算上属于测量方法中的后者。同时,为了实现良好的交互性,并进一步提高测量精度,本课题利用了软硬件结合的方式,采用了高精度传感器,在电路调试上加入精度调试,使得测量过程快捷,测量结果精确度提高,实现了实时测量。通过对市面上采集卡的比较,我最终选用的是武汉亚为电子科技有限公司生产的USB 8AD mini信号采集卡,基本物理量温度、湿度和压强选用传感器测量,其中,采用集成传感器测量湿度和压强,温度传感器采用PT1000;软件编程语言选用C+,采用Visual C+ 2006开发平台进行代码编写。 通过前期的分析与开发,我制作的空气环境测量仪的工作过程主要是以下几点:采集卡通过传感器采集数据、软件实现动态链接库(dll)文件的调用、数据分析处理、软件界面显示结果、保存数据。关键词:空气折射率,信号采集卡,传感器,VC+Designing the air environment measuring instrument with VC+AbstractWe can know from the name that the environment measuring instrument is designed to measure basic physical quantities such as temperature,humidity and pressure of the air.The environment measuring instrument is one of important assistant tools because of it can provide those basic datas for indutry and production areas.The air environment measuring instrument of this research can measure the temperature,humidity,pressure and air index of air,with the major mathod that we first figure out temperature,humidity and pressure of air and then derive air index.We can konw by heading to library or resourcing on he internet that there are two types of traditional measurement of air refractive index,one is direct measurement of refractive index by optical property,which costs long measurement time to make sure the accuracy of datas.This type can not measure the refractive index of air in real time as well as nature of air;The other type is we firstly measure the basic physical quantities of air,then derive air refractive index through the formula.This type has made a big progress compared with the pure optical measurement,which introduces SCM,But SCM still belong to hardware class,people can not have a good feeling when using the mathine as well as could not achieve the effective data management function.This subject is the latter in the measurement method of the air refractive index.At the same time,to achieve good interacivity and further improve the accuracy of measurement,I use the way of combining hardware and software, using high precision sensor,adding precision adjustment in circuit debugging to reduce measurement time and realize high accuracy of the results.Through comparing acquisition cards,I choose USB 8AD mini acquision card made by WuHan YaWei corporation,then choose sensors to measure basic datas such as temperature,humidity and pressure.I choose an integrated sensor to get the humidity and pressure of the environment and use PT1000 to measure temperature.In addition,I choose C+ to code in Visual C+ 2006 development platform.Via proper analysis and development,the air environment measuring instrument contains the following keys: first,using a signal acquisition card to obtain basic datas,second,calling the dynamic link library,third, analysising and managing datas,Forth,show the result on the program interface,fifth,save datas.Key words: refractive index of air,signal acquisition card,sensor,VC+目录1绪论11.1 课题研究目的与意义11.2 当今测量仪器发展趋势21.3 课题的研究内容32整体结构设计42.1设计框图42.2 设计整体思路43硬件设计介绍53.1采集卡53.2 温度传感器73.3 湿度传感器93.4 压强传感器103.5电路设计123.5.1 DXP电路设计平台123.5.2 电路图及原理124软件设计介绍154.1 Labview154.2 VC+项目工程164.2.1 C+开发介绍164.2.2 MFC图形界面开发164.2.3 DLL动态链接库174.3界面设计与实现184.3.1读取数据184.3.2 数据保存214.3.3退出225软硬件联调235.1 数据采集235.2 数据筛选235.3电压值校准与数据分析235.3.1 硬件校准235.3.2 软件校准255.3.2 数据分析276总结286.1结论286.2 可改进点28致谢30参考文献31附录32IV1绪论1.1 课题研究目的与意义 空气折射率是标准透明介质光学性质的重要参数,测量空气环境中折射率历史由来已久,知道空气折射率可以运用激光测量长度、进行信号处理等。本课题通过利用软件与硬件相结合的方式,来实现空气中温度、湿度、压强与空气折射率的自动测量,并通过调整采样精度来减少测量误差,在知晓以上数据后,也可以对测量工具进行拓展,实现对材料的温度测量,以实现对基础数据的直接运用。从查阅文献及相关资料可知,测量空气折射率有很多方法,最典型的是迈克尔逊干涉仪测量方法,此外,还有利用单片机测量、马赫-泽德干涉仪、光纤测量法等。这些方法可以分成直接测量和间接测量,从原理来看,也可以分成以下两类,一类是纯粹的光学方法,例如迈克尔逊干涉仪测量方法、马赫-泽德干涉仪测量和光纤测量法,它们主要利用光的折射、干涉,并制作相应的测量仪器来实现折射率的测量。这一类方法对仪器的制作精度要求较高。我们知道光是可见而摸不得到的,因此在测量的时候误差相对实体测量的话误差比较大,如果要保证精度,那么在仪器的选择上条件会很苛刻,仪器的维护成本也会比较高,此外,由于光不可触摸,在测量时,为保证精度,速度也会较慢,不能及时测量出当前数值;第二类是利用单片机测量,单片机具有良好的可改造性,此外,单片机测量空气折射率方法不是直接测得折射率,而是通过传感器先测量空气中的温度、湿度、压强及二氧化碳含量这些基本物理量,再利用公式计算得到折射率的,较纯光学方法测量,因为采用了传感器,避免了人为误差,因此单片机法的测量误差会小于前者,测量速度也快于前者,对于在空气环境不断变化的情况下,后者更能实现实时测量。 本课题在综合了这两类方法的基础上,对空气折射率测量方法进行了改进。前人的光学测量方法得出了空气折射率的公式,单片机测量法能够很好的实现实时测量,因此,本课题是沿用空气折射率公式,运用采集卡和传感器测量基本物理量:温度、湿度和压强来得出实时折射率,并通过面向对象的编程语言,设计测量界面,通过代码实现空气折射率的实时测量与测量数据保存功能,提升用户与仪器的交互性,使得在完成数据测量的同时提升器材的可用度,并摆脱实验室束缚,实现多种情况下空气折射率的实时测量。1.2 当今测量仪器发展趋势 从上世纪80年代起,计算机和网络开始兴起,计算机从最初的军用慢慢过渡到民用,物联网时代的到来就是一个很好的证明。随着物联网时代的到来,工控系统具有很大的发展前景,而工控的关键即是通过运用软件编程与硬件结合来实现全自动化测量和生产,即用电子仪器来代替手工测量生产。物联网的到来可以使生产速度加快,全自动的生产也可以避免安全事故,有利于统一化标准,同时避免人为误差。物联网是一个大方向,小儿化之到本课题上,即是通过软硬件结合来实现自动测量。其实,从空气折射率测量发展史上就可以看出,测量仪器已经从最开始的全手动测量逐渐演变到使用电子仪器来进行测量了,其他测量仪器例如测量液体的粘滞系数、温湿压的测量等也在向自动化靠拢。 从普通的测量仪器向电子测量仪器发展并向着小型化,自动化,智能化发展是当今测量仪器的发展趋势。这种趋势是由市场决定的。首先,工业生产的技术进步需要测量过程更加快速,测量的量也不单单是一个或两个,而是多个高精度值;其次,在预防社会自然灾害和评估上,传统的测量仪器已经不能完成实时,智能化计算。软硬件结合的现代化测量仪器则可以根据模块化的设计,灵活的增减测量对象,对需要测量的物理量在硬件设计上添加相应的传感器,然后通过代码实现对测量数据的调用,也可以利用PC的大存储空间,实时监测数据,并完成数据的保存分析,进行预警等。如今,测量仪器已经摆脱了纯硬件的尴尬,软件渐渐成为现代测量的重要部分。采用软件技术一方面增强了仪器的交互性,提升用户体验,也增强了仪器数据管理性能。以软件为中心,添加必要的测量模块,就可以完成对不同对象的测量,这种通用化的平台,模块化的结构也是未来测量仪器的发展趋势。以下是几种测量方法的对比:表1.1 测量方法对比Table.1.1 Contrast of measurement method 物理测量单片机测量软硬件结合测量耗时长短短误差较大较小较小交互性无差良好从以上表格可以得出,随着科技的进步,测量仪器会向着软硬件结合的方式发展,因为这种方式的优势,也会进一步提高测量结果的精度,为制造等领域的发展提供更准确有效的数据。当然,这种精度的提高也是有限的,虽说测量仪器已经越来越智能化、自动化,与计算机的结合也越来越紧密,但到目前为止来看,测量仪器还是相对传统的领域,再加上精度、灵敏度、分辨力、量程等目前都已达到了物理极限,当消除了人为误差后,要使得精度能够再有较大的提升,只能等待基础理论的发展了。1.3 课题的研究内容本课题针对实现空气环境测量仪的应有功能需求分析,采用采集卡、传感器、DXP电路设计、动态链接库调用、MFC编程相结合的手段,设计了具有采集空气中温度、湿度、压强和折射率功能的测量仪。本设计所做的工作主要有:1、 通过对空气测量仪所需实现的需求分析,设计电路2、 选择采集卡传感器等硬件3、 先软仿真,再焊接电路板并调试和仿真4、 根据需求运用软件设计程序界面原型,后期开发时可再做修改5、 数据分析和处理,实现将采集到的数据显示在界面上,并实现数据保存功能6、 软硬件联合测试,保证硬件与程序相连时都正常,检查数据的准确性和精度2整体结构设计2.1设计框图 传感器采集数据 采集卡收集数据,并将数据存入数组 打开测量仪软件界面,读取数据,加载动态链接库 选择是否将数据进行保存,测量完毕,退出图2.1 设计框图Fig.2.1 The overall design of the structure如图2.1所示,本设计利用了传感器将温度、湿度、压强参量转化成模拟信号,传入采集卡,采集卡中的DLL文件将数据进行分类,打开软件界面进行数据采集时,程序动态加载DLL,有程序进行通道分类和数据的电压值温湿压数据转化,最后显示,完成测量后可将数据保存并退出。2.2 设计整体思路总的来说,本设计的最终结果是要把温湿压参数转成电压值后再根据公式转换出来。第一步,采用传感器。选择传感器则要设计相应的电路,所以本设计选择DXP软件进行电路图设计;第二步,根据选用采集卡的说明书,将采集到的模拟信号转入采集卡的相应通道,在本设计中,笔者选用了前三路通道。记住自己所选用的通道,因为后续的数据读取和转换都是采用的通道中的数据;第三步,选择语言编写代码。由于本设计课题点明使用VC+,所以采用c+编码,编码的重点是加载动态链接库读出通道中的数据,然后根据库文件说明书中的数据转换公式,将模拟信号转换成温湿压的具体数值,并计算出空气折射率;第四步,进行数据校准,提高数据准确度,具体分为硬件校准和软件校准。最终完成具有数据处理功能的空气环境测量仪。3硬件设计介绍3.1采集卡通过对市场上采集卡的对比,本课题最终采用的是武汉亚为科技有限公司生产的USB 8AD mini采集卡。图3.1采集卡内外观Fig.3.1 Acquisition card appearance采集卡的工作温度为-20-40,管脚及说明见表2.1:表3.1 管脚说明Table.3.1 Pin description管脚名称信号类型说明1GND电压及信号接地25VPOWER电压输出3AI0I模拟信号输入端4AI1I模拟信号输入端5AI2I模拟信号输入端6AI3I模拟信号输入端7AI4I模拟信号输入端8AI5I模拟信号输入端9AI6I模拟信号输入端10AI7I模拟信号输入端11PIN0I/O数字信号12PIN1I/O数字信号13GND电源及信号接地注:I-输入;O-输出;I/O-输入/输出;POWER-电源输出该采集卡可以进行模拟信号的输入,数字信号的输入和输出,具体性能指标见表2.2:表3.2 性能指标Table.3.2 Performance index模拟信号输入数字信号输入/输出(预留)模拟输入通道:2路单端输入输入/输出通道:2路输入信号量程:0-10V输入/输出模式:全输入/全输出模拟输入阻抗:1M输入电平:兼容TTL或CMOS分辨率:12bit(4096)输出电平:TTL采样速率:100KHZ传输速率:1Kbps采用这款采集卡主要是因为它有以下优点:首先,该采集卡操作简便,不需要安装驱动,采集卡卡身有两个LED指示灯。连接到计算机上后,当采集卡上指示灯1常亮,指示灯2闪烁两下熄灭,即可表示通电成功,采集卡启动完成,可以开始数据采集工作;第二,采集卡通过连接USB进行5V的电源供电,不用再连接电源模块;第三,不需再进行波特率匹配,由于串口通信的双方必须保持波特率一直才能成功进行通信,这款采集卡出厂设置时默认的波特率是9600,与电脑串口的默认波特率值相同,因此在使用的时候就不需手动匹配波特率了;第四,采集端口多,采集卡具有4条采集线路,由上表可知,每条有2路单端模拟输入,因此采集卡共有8路模拟输入,可以同时直接连接温度、湿度、压力、气体和流速等多种传感器;第五,采集卡所附的文件包含了动态链接库,并在说明书上给出了调用函数的函数名称,便于后期进行二次开发,灵活性大;第六,采集卡给出了数据采集的范例,我们可以打开labview运行它所提供的vi文件,详细查看采集卡内部的数据采集及处理流程,并进行二次开发设计;考虑到以上的优点,所以最终选用了这款采集卡来为本次课题研究进行数据采集工作。3.2 温度传感器本课题研究选用的温度传感器是PT1000。PT1000是在0时阻值为1000欧姆的铂电阻传感器,通常用于高精度温度测量,电阻阻值随着温度的升高而线性增大,是正温度型传感器。按照IEC751国际标准,现在常用的PT1000是以温度系数TCR=0.003851为标准统一设计的铂电阻。图3.2 PT1000实物图Fig.2.2 Real figure of PT1000其温度电阻特性是:当-200t0时,当0t850时,Rt是在t时的电阻值,R0是在0时的电阻值。TCR=0.003851时的系数值为:,,选用PT1000是因为它是随温度变化呈线性变化的铂电阻,其次,它的精确度比PT100高,对于制作用于精确测量空气折射率的测量仪来说更为适合PT1000传感器温度测量范围很广,但由于本课题研究的主要是在空气中测量温度,因此,以下截取了PT1000分度表中15-40范围温度与阻值之间相应的数据:表3.3 PT1000分度表Table.3.3 PT1000 indexing table00.10.20.30.40.50.60.70.80.9151058.4951058.8841059.2731059.6621060.0511060.441060.8291061.2181061.6071061.996161062.3851062.7741063.1631063.5521063.9411064.331064.7191065.1081065.4961065.885171066.2741066.6631067.0521067.4411067.831068.2181068.6071068.9961069.3851069.774181070.1621070.5511070.941071.3281071.7171072.1061072.4951072.8831073.2721073.661191074.0491074.4381074.8261075.2151075.6041075.9921076.3811076.7691077.1581077.546201077.9351078.3241078.7121079.1011079.4891079.8771080.2661080.6541081.0431080.431211081.821082.2081145.5961208.9851272.3731335.7621399.151462.5381525.9261589.315221085.7031086.0911086.481086.8681087.2561087.6441088.0331088.4211088.8091089.197231089.5851089.9741090.3621090.751091.1381091.5261091.9141092.3021092.691093.078241093.4671093.8551094.2431094.6311095.0191095.4071095.7951096.1831096.5711096.959251097.3471097.7341098.1221098.511098.8981099.2861099.6741100.0621100.451100.838261101.2251101.6131102.0011102.3891102.7771103.1641103.5521103.941104.3281104.715271105.1031105.4911105.8791106.2661106.6541107.0421107.4291107.8171108.2041108.592281108.981109.3671109.7551110.1421110.531110.9171111.3051111.6931112.081112.468291112.8551113.2421113.631114.0171114.4051114.7921115.181115.5671115.9541116.342301116.7291117.1171117.5041117.8911118.2791118.6661119.0531119.4411119.8281120.215311120.6021120.991121.3771121.7641122.1511122.5381122.9261123.3131123.71124.087321124.4741124.8611125.2481125.6361126.0231126.411126.7971127.1841127.5711127.958331139.951140.3371140.7241141.111141.4971141.8841142.271142.6571143.0431143.43341132.2151132.6021132.9881133.3751133.7621134.1491134.5361134.9231135.3091135.696351136.0831136.471136.8571137.2431137.631138.0171138.4041138.791139.1771139.564361139.951140.3371140.7241141.111141.4971141.8841142.271142.6571143.0431143.43371143.8171144.2031144.591144.9761145.3631145.7491146.1361146.5221146.9091147.295381147.6811148.0681148.4541148.8411149.2271149.61411501150.3861150.7731151.159391151.5451151.9321152.3181152.7041153.0911153.4771153.8631154.2491154.6361155.022401155.4081155.7941156.181156.5671156.9531157.3391157.7251158.1111158.4971158.883注:上述表格中第一列为温度的一位小数3.3 湿度传感器本课题采用的湿度传感器型号为HIH4000,工作温度范围为-40-85,该传感器在一定湿度范围内与输出电压成线性关系,关系见下图:图3.3 输出电压与相对湿度关系Fig.3.3 Relationship between output voltage and relative humidity图3.4 HIH4000湿度传感器Fig.3.4 HIH4000 humidity sensor选用该湿度传感器是因为它的实用性强,可以用于基本的电路设计,在出厂之前,传感器的输出电压就已经校准过,用户不需再手动校准,确保了湿度传感器的精度。3.4 压强传感器本课题采用了MPXAZ6115A压力传感器,该传感器属于MPXxxx6115A系列。传感器内部集成了芯片,双极运算放大器电路和薄膜电阻网络来提高输出信号和温度补偿,是一款可以进行芯片上的信号调节,温度补偿和校准的高精度温度测量集成硅压力传感器。 图3.5 MPXAZ6115A压力传感器Fig.3.5 HIH4000 humidity sensor采用这款压力传感器用于本课题研究主要是因为它具有以下优点:首先,这种压力传感器的测量极值为400KPa,,虽然本课题研究的是空气中的压强,但是为了提高装置的可用性,方便进行其他环境的压强测量,选用极值大的更加合适;第二,传感器在0至85之间测量误差不超过0.15%;第三,温度补偿范围广,从-40125;第四,相应时间快,可以在短时间内快速的将压力值转换为电压值,为本课题需要测得实时的空气压强提供了保证;第五,传感器在出厂前已经进行过校准,在本课题中不需要再对输出的压强对应电压进行校准。下图是输出电压值与压强之间的关系。图3.6 输出电压与压强关系Fig.3.6 Relationship between output voltage and pressure由输出电压与压强关系图可知,在15115之间,输出电压随着压强的增大而增大,并且呈一次函数关系,而该区间正是课题研究所在的温度区间,所以,我们可以根据说明书中提供的公式做后面的数据处理工作。公式为:Vout = VS x (0.009 x P - 0.095) (Pressure Error x Temp. Factor x 0.009 x VS) VS = 5.0 0.25 Vdc3.5电路设计3.5.1 DXP电路设计平台Pro DXP是一个集电路原理图设计与仿真的板集设计系统,拥有丰富的原理图组件库和PCB封装库,是电路设计重要的工具。3.5.2 电路图及原理本课题在电路设计上用到了模拟电子技术中的二级放大电路、短路的虚短虚断原理。二级放大电路:两路输入,一个放大器,一路输出,公式:输出电压=输入点电压-负载电压虚短原理:在理想的情况下,两个输入端的电位相等。虚断原理:在理想情况下,将理想运放的输入电阻无限放大,导致流入集成运算放大器的端电流为零而进行计算的方法。3.5.2.1 温度传感器电路图3.7 实物图Fig.3.7 Real map图3.8 电路图Fig.3.8 Circuit diagram如图所示,JP1是PT1000温度传感器,所在电路是一个二级放大电路。首先,2.5V恒流源供电,管脚2,3根据放大器的两个输入“虚短”可知电压值相等,又根据“虚断”可知电流由2.5V电流源流经R1后往上“走”,C1不通直流,所以电流全部走JP1,即温度传感器,到达输出端1后,经过电阻R3。同理,二级放大的输入端6和5电势相等,又因为5接地,所以6端电势值为0,通过放大器反向放大原理可知,通过可变电阻R6后,输出端7为正值。3.5.2.2 湿度传感器电路图3.9 电路图Fig.3.9 Circuit diagram如图所示,该电路接入5V电源工作,电容是为了防止电源和信号干扰引入,从上图标识的Vh端引出输出电压,接入采集卡输入端。3.5.2.3 压强传感器电路图3.10 电路图Fig.3.10 Circuit diagram同湿度传感器,接5V电源和地后,按照管脚说明将输出端接采集卡的输入端。3.5.2.4 电压转换电路由于采集卡自带的电源为3.3V或者5V,而运算放大器需要-5V的电压,因此需要设计电路将5V电压转换为-5V,本课题采用TPS60400反向电荷泵,工作温度范围为-40-85。如下图所示,将采集卡的+5V电源接TPS60400的输入端2,输出端1输出-5V,然后我们就可以将输出端1接运算放大器的4端,免去了外接负电压的麻烦。图3.11 元件图Fig.3.11 Component diagram4软件设计介绍4.1 LabviewLabview是一种图形化的程序开发环境,常用于测试测量。由于传感器电路输出电压是作为采集卡的输入数据的,而采集卡出厂时已经封装好,因此厂商提供了labview程序让用户了解采集卡数据采集原理,然后可以加以改造。图4.1 数据采集流程Fig.4.1 Data acquisition process首先,采集卡将输入的温度、湿度、压强所属电压值存入数组;动态链接库中采集函数的参数是上图中的两个“板卡pid不可修改”、“2”、“0”和输入的数组,图中标记2处是调用库函数节点,通过配置调用库函数节点,来指定库、函数、参数、节点的返回值,经过2后labview可以获得采集卡中使用的通道中的数据,后面的与0x0FFF相与及数据计算是为了转换成采集卡要求的精度和标准电压输出,经过数据计算后到达标记3处,3处也是一个数组,用于存放经过处理程序所需要的数据;标记4处是抽取一维数组,令数组的元素分成若干组输出输出数组,比如在本课题中,温度是数组序号整除8的数组,湿度是数组序号除以8余1的数组,压强是数组序号除以8余2的数组,经过抽取输出后就可以在界面上一次输出了。4.2 VC+项目工程4.2.1 C+开发介绍VC+ 2006是微软在1998年推出的C+经典开发工具,是包含编辑器、编译器、调试器以及程序向导和类向导等开发工具的一款集成开发环境。C+语言是面向对象的开发语言,相较于C语言,C+使用了类层次结构的设计,灵活性更加大,这种类层次结构的设计和简洁而严谨的语言也让逻辑框架更加清晰;相较于其他高级语言,C+的处理运行速度最快,因此,由C+语言编写的程序执行速度快。4.2.2 MFC图形界面开发MFC(Microsoft Foundation Classes)是C+的图形界面化语言,按照我的理解,MFC对于C+相当于Java Script对于JAVA,但是MFC中不仅仅可以用C+语言,也可以用C语言。MFC的本质是微软的基础类库。MFC的内部全部使用C+,以C+的形式封装了windows API和Windows SDK中的结构和功能,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。其中包含的类包括windows句柄封装类和很多windows的内建控件和组件的封装类。MFC是面向对象开发,再加上封装了大部分Windows API函数,因此,代码的维护和修改效率较高。此外,MFC开发平台还辅助了应用向导(MFC AppWizard)和类向导(class wizard)等工具,进一步地提高了开发效率。比如,我们在创建类的时候用类向导,可以自动的生成我们基本需要的头函数,基本框架,省去了写框架的步骤,简洁高效。MFC的内部共有六大黑箱技术:MFC程序的初始化过程、运行时类型识别(RITT)、动态创建、永久保存、消息映射和消息传递。其中难点是消息映射机制。我们知道MFC的基础是win32程序,win32过程的消息处理机制是每个窗口都关联一个全局的消息回调函数,在消息回调函数中,通过对消息类型的判别来响应不同消息,MFC则不是用全局回调函数,而是创建与窗口关联的派生类,通过类向导选择与消息关联的成员函数来处理消息。利用MFC编程需要掌握一些基础类和控件,此外还需勤查MSDN。在本课题研究用到的类和控件主要有:CString类、CDialog类、CFileDialog类、CFile类、CEdit类、CList类、CComboBox类和CButton类。4.2.3 DLL动态链接库在本课题研究中,动态链接库文件是连接硬件与软件的桥梁。硬件上采集卡将采集的数据存至存储位置,再提供相应的动态链接库文件,文件中封装有调用采集到的数据的函数,然后通过软件来加载这个动态链接库以实现对库文件中函数的调用。动态链接库文件(Dll)是作为共享函数库的可执行文件,内含一个或多个已被编译、链接并使用它们的进程分开存储的函数。动态链接库相当于有一定功能的黑盒,只要调用它就可以实现相应的功能,所以使用方便,可移植性好,对于程序员来说,不必了解其内部具体是怎么编码实现功能的,这样有利于提升编码的效率。动态链接库的调用一般有两种形式:静态调用和动态调用。在本课题研究中使用的是动态调用动态链接库。使用动态调用又分为显式链接和隐式链接,本课题采用了显式连接,所以以下介绍动态调用中的显式链接。动态调用显式链接库文件是指该库文件在程序执行时并没有载入内存,当程序执行到用loadlibrary调用库文件时,loadlibrary函数将制定的库文件映射到调用进程的地址空间并返回相应的句柄,若返回的句柄不为空,那么表示库文件成功加载到进程中,之后用GetProcAddressh函数来获取动态链接库文件导出函数的地址以实现该库文件所有的功能,当调用结束后,要用freelibrary函数从进程的地址空间中取消映射。在本课题研究中,动态调用动态链接库文件可以节省内存和减少交换操作,提高程序执行速度。由于动态链接库是由采集卡生产厂家提供,相当于一个封装好的黑盒,所以用户在使用的时候既简单又困难。简单的是我们不需要知道库文件的函数具体是怎么实现的,我们只需要知道它的功能并调用它就可以了,难的是我们调用了库文件后要用它的功能进行二级开发,那就需要知道数据存储的位置,因此需要结合指针使用。typedef BOOL(*pReadDeviceHID2BUF)(unsigned int uVid,unsigned int uPid,unsigned int ucDataBuffer256,unsigned int ucDataLength,unsigned int X0,unsigned int X1); / 掩饰复合类型,在此为掩饰指针pReadDeviceHID2BUF ReadDataViaHID2BUF; /ReadDataViaHID2BUF也是bool类型的指针ReadDataViaHID2BUF=(pReadDeviceHID2BUF)GetProcAddress(hDLL,ReadDataViaHID2BUF);/获取DLL导出函数的地址4.3界面设计与实现4.3.1读取数据课题研究通过连接计算机来读取数据一方面是当今的测量仪器发展趋势使然,另一方面,在实际使用上,用户可以更加直观方便的读数,同时也加强了测量仪器的数据管理能力,因此本课题设计的这个读取数据的页面的目的就是为了可以方便使用者。本课题研究的空气环境测量仪主要目的是为了测量空气折射率,空气温度、湿度和压强功能,同时,本课题还设计了数据保存功能。由于要实现空气折射率的实时测量,而测量是基于空气中的温度、湿度及压强的,所以在界面上,我把这四个参数都放在了一起,使得在实际使用时数据一目了然。图4.2 程序界面Fig.4.2 Program interface本课题研究的测量仪有四路输入是测量温度的,分别是输入0,3,4,5。其中输入0是测量空气温度,输入3,4,5是测量材料温度。首先,温度传感器采集数据,采集到的数据进入到采集卡的输入端口0(3、4和5端口同理),由于PT1000采到的是电压值,电压值进入到采集卡的存储部分,后面也是一样经过相同的采样周期不断进行数据采样。启动程序后,点击“读取数据”按钮,程序调用动态链接库文件,运用指针函数指向处理数据函数,实现软硬件数据传递,此时函数将采集卡每个采样周期内的通道0中的电压数值载入内存,分配地址,函数形参中有256/512/1024/2048这几个数字,选择一个程序写死,这些数字代表的是存储的数组长度,数字越小,采集速度越快,数字越大,每次采集的越多。然后程序将读入的电压值用来计算平均数(本课题选用的数据是2048,属于低速采集,为保证数据精确度,所以采用取采样时间段内采样数据的平均数,如果在程序设计时采取256采集,则采取的每一个数都是有效值,可以直接使用)。采出数据经过公式转换成温度数值,并显示在相应的输出栏内。4.3.1.1温度测量温度测量选用通道0,经过抽取数组后带入公式进行计算。由于从采集到最后处理都是电压值,最后需通过公式转换将电压值转成温度(摄氏度),转换公式为:1.15*电压值-0.25。图4.3 气温公式Fig.4.3 Temperature formula4.3.1.2湿度测量湿度采集只有一路输入,一路输出,选用通道1,前期的电压获取过程与温度采集相同,最后的电压/湿度数据转换公式是(电压值-0.873)/0.031。湿度采集采用的是集成芯片上的传感器,无需再进行人工校准。图4.4 湿度公式Fig.4.4 Humidity formula4.3.1.3压强测量压强测量只有一路输入,一路输出,选用通道2。数据通温度、湿度电压值同时采入。最后的电压/压强数据转换公式是(电压值/5.05+0.095)/0.009。图4.5 压强公式Fig.4.5 Pressure formula4.3.1.4 空气折射率测量空气折射率的数据是依靠上面得出的温度、湿度、压强数值,根据公式:空气折射率=2.87774e-9*压强*(1+1e-10*压强*(60.1-0.972*温度)/(1+0.003661*温度)-2.58e-9*湿度*exp(0.059*温度)+1计算得出,并显示在页面上。在代码编写时由于空气折射率公式需要用到指数,所以需要加入头文件“math.h”4.3.2 数据保存本课题为了提高空气环境测量仪的交互性和可用性,设计了数据保存功能。数据保存功能可以将用户打开程序后采集的多组温湿压和折射率值保存至文本文档中,供以后的数据研究。当用户点击“保存”时,页面弹出我们在Windows系统中常见的文件另存为页面,默认的格式是文本文档格式,当然也可以保存成其他常用格式,例如doc、xls等格式。代码实现上数据另存为文件采用的方式不是单纯的表格导出,而是采取了传统的sprintf输出流,所以数据是以字符串形式写出的。实现函数如下:memset(tmpBuf, 0, sizeof(tmpBuf);sprintf(tmpBuf, 温度():%-15s湿度():%-15s压强(Pa):%-15s空气折射率(Pa):%-15s,data.szTemperature,data.szHumidity,data.szPressure,data.szReflect); /格式化输出形式,一行六列file.Write(tmpBuf, strlen(tmpBuf);wchar_t unicode=0XFEFF;file.Write(_T(rn),sizeof(wchar_t)

温馨提示

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

评论

0/150

提交评论