




已阅读5页,还剩33页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2011 届毕业设计(论文)题 目:基于单片机的一氧化碳检测仪的设计(上位机软件部分)学 院:浦江学院专 业:通信工程班 级:浦通信0703姓 名:张萌指导教师:陈志贤起讫时间:2011-3-12011-6-14二一一 年 六 月基于单片机的一氧化碳检测仪的设计(上位机软件部分)摘 要一氧化碳检测仪是一款用于检测室内以及工作场所中一氧化碳浓度并且具有超限报警功能的仪器,对人们的生活和工作安全有很好的保障作用。因此,一氧化碳检测仪具有较高的研究价值和使用价值。本文主要介绍了上位机软件的设计内容:串口通信、数据打点显示以及数据的存储功能。通过RS232串口接收单片机发送过来的一氧化碳浓度数据,在PC机上以直观图形的方式显示数据并且将其存储起来以方便随时可以调用查看。本次设计成功的完成了上位机软件部分的制作,能够准确的接收单片机传输的数据并且很好的显示以及储存查看。关键词:一氧化碳检测仪 数据处理 串口通信The Design of carbon monoxide detector based on microcontroller (PC software parts)AbstractCarbon monoxide detector is used to detect a paragraph of indoor and workplace carbon monoxide concentrations and has the off-gauge alarm function instrument, for peoples life and work safety is very good security role. So, Carbon monoxide detector has high research value and use value.This paper mainly introduces the PC software design content: Data processing、Data display through dot and Data storage function. Through RS232 serial receives the data of monoxide concentrations sent over microcontroller, On PC with intuitive graphic display data and store it up with convenient can always call to check.This design successful completion of the PC software part of the production, the data of SCM transmission can be accurate received and very good show and storage and examine.Key Words: Carbon monoxide detector; Data processing; Serial communication目 录摘 要IAbstractII第一章 绪论11.1一氧化碳的危害11.2一氧化碳检测仪的研究现状11.2.1基于单片机的分类的一氧化碳检测仪11.2.2基于传感器分类的一氧化碳检测仪11.3 多机串行通信研究现状21.4 论文章节介绍3第二章 上位机软件的设计42.1 上位机软件整体设计框架42.2 串口通信模块的设计42.2.1 RS-232串口42.2.2 VC6.0介绍62.2.3串行通讯的方法62.2.4 MSComm控件的介绍72.2.5串口设计流程82.2.6 整数和小数位的处理112.3 数据直观图显示模块122.3.1基本的画线函数122.3.2 CO数据图形化显示132.4 数据的存储以及查看模块142.4.1类CFile142.4.2 CFile操作详解162.4.3 数据的保存方式172.4.4 查看之前存储的数据182.5 程序显示界面模块192.5.1 对话框概述192.5.2 类CDialog介绍202.5.3 对话框控件212.5.4 对话框控件程序设计212.6 串口采集数据实时显示窗口24第三章 系统调试和运行253.1 测试工具介绍253.2 系统调试和运行253.2.1 测试方法253.2.2 系统联调253.2.3 系统运行25第四章 总结和展望264.1 本次毕业设计总结264.2 下一步工作展望26参考文献28致谢30第一章 绪论1.1 一氧化碳的危害一氧化碳是石油化工行业以及日常生活中常见的危害因素,分布范围广,接触人员多,毒性危害高。尤其是随着煤气化工业的发展,人员遭受一氧化碳危害影响的可能性增大。一氧化碳是无色、无味的气体,易扩散,微溶于水。易燃、易爆,与空气混合有爆炸的危险 1。一氧化碳使血液携氧能力下降,阻碍氧的释放和传递,导致低氧血症和组织缺氧。由于中枢神经系统对缺氧最敏感,故最易受到侵害。石化及煤矿等工作场所空气中时间加权平均容许溶度(PC-TWA)不超过25ppm,短时间接触容许浓度(PC-STEL)不超过35ppm。立即威胁生命或健康的浓度(IDLH)为1000ppm。1.2 一氧化碳检测仪的研究现状目前市场上的一氧化碳检测仪多种多样,由于所用单片机的种类和传感器的种类不同可以分为多类。1.2.1 基于单片机的分类的一氧化碳检测仪(1)基于MSP430的一氧化碳检测仪MSP430单片机拥有强大的处理能力,在降低芯片的电源电压及灵活而可控的运行时钟方面都有其独到之处,具有低功耗的特点。根据传感器的不同,可以选择不同的传感器。这种检测仪的单片机内置温度传感器、12位高精度A/D转换器、1616位硬件乘法器,并有6个8位I/O端口可以使用。仪器的大部分功能均可以在MSP430单片机中实现,大大简化了系统的接口设计,也减少了仪器原件的数量和功耗2。(2)基于STC89C52的一氧化碳检测仪STC89C52是一种带8K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8的微处理器,与MCS-51指令集和输出管脚相兼容。STC89系列单片机高速(最高时钟频率90MHz),低功耗,带有4KB的内存和程序保护系统,便于程序的修改和保密3。1.2.2 基于传感器分类的一氧化碳检测仪(1)电化学传感器采用了多孔性电极进行一氧化碳浓度的检测,有效地防止了溶解液的泄漏。该传感器具有反应时间短、探测范围宽以及使用寿命长的特点,完全满足工业现场及家庭生活的需要。(2)红外气体传感器采用电调制非分光红外传感器LHI814,能够快速准确的检测一氧化碳的浓度。采用间歇式供电方式,单片机在读取传感器输出的稳定数据后,立即关闭其电源,待下次读取数据时再将电源打开。(3)热催化传感器其具有抗高湿、粉尘等恶劣环境的能力及体积小、价格低的优点,在煤矿瓦斯的检测中发挥了巨大的作用。但由于该传感器的敏感原件和补偿原件本身是热敏原件,其电阻会随着环境条件和工作条件的改变而变化,多种可热性气体都能催化氧化燃烧,导致检测精度下降。(4)半导体传感器以半导体敏感原件为核心的半导体传感器,具有灵敏度高、响应速度快、结构简单、体积小、重量轻、成本低、便于集成化和智能化的优点,但是由于特性的分散性、温度的不稳定性和易受干扰的特点,在某些情况下又限制了半导体传感器的应用。半导体传感器是一种将检测到的气体成分和浓度转换为电信号的传感器,根据这些电信号的强弱就可以获得与待测气体在环境中有关的信息,从而可以检测、监控、报警,还可以通过接口电路与计算机或单片机组成自动检测、控制和报警系统。41.3 多机串行通信研究现状随着多微机系统的应用和微机网络的发展,通信功能越来越显得重要。这里所说的通信既包括计算机与外部设备之间,也包括计算机和计算机之间的信息交换。由于串行通信是把组成信息的各个码位在同一根传输线上,从低位到高位,逐位地、顺序地进行传送的通信方式,所用的传输线少,一个方向上只须一条传输线,并且可以借助现成的电话网进行信息传送,因此,特别适合于远距离传送。对于那些与计算机相距不远的人-机交互设备和串行外部设备如终端、打印机、逻辑分析仪、磁盘等,采用串行方式进行近距离交换数据也很普遍。在实时控制和管理方面,采用多台微处理机组成分级分布控制系统中,各CPU之间的通信一般都是串行方式。所以串行接口是微机应用系统常用的接口。1.4 论文章节介绍本文主要介绍基于单片机的一氧化碳检测仪的上位机软件部分。全文分四个章节,第一章绪论部分主要介绍一氧化碳检测仪的背景知识及研究现状以及多机串行通信的研究现状。第二章主要介绍上位机软件的设计。第三章是调试结果的展示。最后一章是对本次设计的一个总结和展望。第二章 上位机软件的设计2.1 上位机软件整体设计框架程序整体设计框架如图2-1所示。图2-1 上位机软件设计框架计算机接通过RS-232串口接收到单片机发送过来的一氧化碳的浓度数据,将接收到的一氧化碳浓度数据以打点画图的形式在PC机上显示,并且将数据存储到文本文档中,在程序界面上,可以按秒移动和按页移动查看以前接收到的一氧化碳浓度数据。整体设计分为四个模块:串口通信模块数据直观图显示模块、数据的存储和查看模块以及程序显示窗口模块。下面将对各个模块的设计过程进行详细说明。2.2 串口通信模块的设计2.2.1 RS-232串口RS-232串口是目前PC机与通信工业中应用最广泛的一种串行接口。RS-232被定义为一种低速率串行通讯中增加通讯距离的单端标准。RS-232采取不平衡传输方式,即所谓单端通讯。RS-232标准(协议)的全称是EIA-RS232C标准,其中EIA(Electronic Industry Association)代表没过电子工业协会,RS(Recommended standard)代表推荐标准,232是标识号,C代表RS-232的最新一次修改(1969),在这之前,有RS-232-B、RS-232-A。它规定连接电缆和器械、电气特性、信号功能及传输过程。常用的物理标准还有EIA&0;RS-232-C、EIA&0;RS-422-A、EIA&0;RS-423-A、EIA&0;RS-485。计算机输入输出接口,是最为常见的串行接口,RS-232常规标准接口有25条线,4条数据线、11条控制线、3条定时线、7条备用和未定义线,常用的只有9根,常用于与25-pinD-sub端口一同使用,其最大传输速率为20kbps,线缆最长为15米。RS-232-C端口被用于将计算机信号输入控制投影机。典型的RS-232信号在正负电平之间摆动,在发送数据时,发送端驱动器输出正电平在+5+15V,负电平在-5-15V电平。当无数据传输时,线上为TTL,从开始传送数据到结束,线上电平从TTL电平到RS-232电平再返回TTL电平。接收器典型的工作电平在+3+12V与-3-12V。由于发送电平与接收电平的差仅为2V至3V左右,所以其共模抑制能力差,再加上双绞线上的分布电容,其传送距离最大约为15米,最高速率为20kb/s。RS-232是为点对点(即只用一对收、发设备)通讯而设计的,其驱动器负载为37k。所以RS-232适合本地设备之间的通信。5其管脚图及管脚定义分别如图2-1和表2-1所示。图2-1 RS-232管脚接口表2-1 RS-232管脚定义9芯信号方向来自缩写描述1调制解调器CD载波检测2调制解调器RXD接收数据3PCTXD数据输出线4PCDTR告知数据终端处于待命状态5GNDSG链接机器的接地线6调制解调器DSR告知本机在待命状态7PCRTS要求发送数据8调制解调器CTS回应对方发送的RTS的发行许可,告知对方可以发送。9调制解调器RI响铃指示器2.2.2 VC6.0介绍VC+6.0是Microsoft公司推出的一个基于Windows系统平台、可视化的集成开发环境,它的源程序按C+语言的要求编写,并加入微软提供的强大的MFC(Microsoft Foundation Class)类库。MFC中封装了大部分Windows API函数和Windows控件,它包含的功能涉及到整个Windows操作系统。MFC不仅给用户提供了Windows图形环境下应用程序的框架,而且还提供了创建应用程序的组件,这样,开发人员不必从头设计创建和管理一个标准Windows应用程序所需的程序,而是从一个比较高的起点编程,故节省了大量的时间。另外,它提供了大量的代码,指导用户编程时实现某些技术和功能。因此,使用VC+提供的高度可视化的应用程序开发工具和MFC类库,可使应用程序开发变得简单。2.2.3 串行通讯的方法1. 同步通信通信双方必须先建立起同步,即双方的时钟必须要调整到同一个频率。收发双方不停地发送和接收连续的同步比特流。但这时还有两种不同的同步方式。一种是使用全网同步,用一个非常精确的主时钟对全网所有结点上的时钟进行同步。另一种是使用准同步,各结点之间的时钟允许有微小的误差,然后使用其他措施实现同步传输。62. 异步通信异步通信在发送字符时所发的字符之间的时间间隔可以是任意的。当然,接收端必须时刻做好接收的准备。发送端可以在任何时刻开始发送字符,因此必须在每一个字符的开始和结束的地方加上标志,即加上开始位和停止位,以便使接收端能够正确地将每一个字符接收下来。异步通信的好处是通信设备简单,便宜,但是传输效率较低(因为开始位和停止位的开销所占的比例较大)。6比较起来,在传输速率相同的情况下,同步通信方式的信息传输有效率要比异步的高。但是同步由于在信息传输的过程中要求双方必须使用同一个时钟,而异步方式却不一定要求完全一致,只要比较相近即可。因此在串口通信中,比较多的采用异步通信。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通信的端口,这些参数必须匹配:a、波特率:这是一个衡量通信速度的参数,它表示每秒钟传送bit的个数,例如300波特表示每秒钟发送300个bit。当提到时钟周期时,就是指波特率例如如果协议需要4800波特率,那么时钟是4800Hz。这意味着串口通信在数据线上的采样率为4800Hz。通常电话线的波特率为14400,28800和36600。波特率可以远远大于这些值,但是波特率和距离成反比,高波特率常常用于放置的很近的仪器之间的通信,典型的例子就是GPIB设备的通信。b、数据位:这是衡量通信中实际数据为的参数。当计算机发送一个信息包,实际的数据不会是8位的,标准的值是5、7和8位。如何设置取决于想传送的信息。比如,标准的ASCII码是0127(7位)。扩展的ASCII码是0255(8位)。如果数据使用简单的文本(标准的ASCII码),那么每个数据包使用7位数据,每个包指一个字节,包括开始/停止位,数据位和奇偶校验位。由于实际数据位取决于通信协议的选取,术语“包”指任何通信的情况。c、停止位:用于表示每个包的最后一位,典型的是1、1.5和2位,由于数据是在传输线上定时的,并且每一个设备都有自己的时钟,很有可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅表示传输的结束,并且提供计算机校正时间同步的机会。适用于停止位的位数越多,不同时钟同步的容忍度越大,但是数据传输率同时也越慢。d、奇偶校验位:在串口通信中一种简单的校错方式。有四种校错方式:偶、奇、高和低。当然没有校验位也是可以的。对于偶和奇校验的情况,串口会设置校验位(数据位后面的一位),用一个只确保传输的数据有偶个或奇个逻辑高位,例如,如果数据是011,那么对于偶校验,校验位为0,保证逻辑高的位数是偶数个。如果是奇校验,校验数为1,这样就有3个逻辑高位。高位和低位不真正的校验数据,简单置位逻辑高或者逻辑低校验。这样使得接收设备能够知道一个位的状态,有机会判断是否有噪声干扰了通信或者是否传输和接收数据是否不同步。62.2.4 MSComm控件的介绍MSComm通信控件的工作原理类似于中断方式,每当有通信事件发生,均会触发OnComm事件发生。MSComm的主要属性如下:(1) Commport端口号;(2) InBufferSize输入缓冲区大小;(3) Input Len从接收缓冲区读取的字节数,如果为0则全部读取;(4) Input Mode接收数据的类型,0表示文本类型,1表示二进制类型;(5) OutBufferSize输出缓冲区大小;(6) RThreshold设定当接收几个字符时触发OnComm事件,0表示不产生事件,1表示每接收一个字符产生一个事件;(7) SThreshold设定在触发OnComm事件前,发送缓冲区送允许的最小字符数,0表示发送数据时不产生事件,1表示当发送缓冲区空时产生OnComm事件;(8) Settings串口的参数设置,依次为波特率、奇偶校验、数据位数、停止位数。62.2.5 串口设计流程(1)建立应用工程打开Visual C+,建立一个基于对话框的MFC应用程序,在对话框中添加控件,用Class Wizard为相应控件设置属性及添加变量如表2-2所示。表2-2 控件机器属性设置情况控件控件IDCaption需要添加的变量及变量类型静态文本IDC_STATIC 接收显示静态文本IDC_STATIC发送输出编辑框IDC_ED-IT_RXDATAm_strEditRXData Valua CString编辑框IDC_ED-IT_TXDATAm_strEditRXData Valua CString按钮IDC_BUTTON_MANALSEND发送MSComm控件IDC_MSComm1m_ctrlComm control (2) 在当前工程中添加MSComm控件点击菜单Add To ProjectComponents and Controls,在打开的对话框中选择“Registered ActiveX Controls”,再双击此项出现控件选择对话框“Component and Controls Gallery”,在该框中选择“Microsoft Communications control,version 6.0”控件,再单击“Insert”按钮,提示“Insert this component?”,确认后,可以看到加入CMSComm类的Confirm Class对话框,提示加入到当前工程中的CMSComm类头文件为MSComm.h,实现文件为MSComm.cpp。单击“OK”按钮关闭Confirm Class对话框,在关闭对话框,则在VC集成环境中,当前工程Class View中就出现了CMSComm类,同时在对话框资源空间中出现了一个电话机形状的控件,就是MSComm控件7。(3)初始化串口通过前面的操作,Class Wizard自动在SCommTestDlg.h中加入了include “mscomm.h”语句。串口初始化流程如图2-2所示。/AFX_INCLUDES()include “mscomm.h”/AFX_INCLUDES下面,在SCommTestDlg:OnInitDialog()函数中写入对串口的初始化语句,串口的初始化由IDC_MSCOMM1的CMSComm控制变量m_ctrlComm来设置串口的控件属性。代码如下:m_comm.SetCommport(1);/打开COM1串口m_comm.SetInBufferSize(1024);/设置输入缓冲区的大小m_comm.SetOutBufferSize(512);/设置输出缓冲区的大小m_comm.SetInBufferCont(0);/清空接收缓冲区if(!m_comm.GetPortOpen ()m_comm.SetPortOpen(TRUE);/打开串口m_comm.SetInPutMode(0);m_comm.SetSettings(“9600,n,8,1”);/9600bps波特率,8位数据,1位停止位,无奇偶校验m_comm.SetRTreshold(10);/*在MSComm控件设置CommEvent属性为ComEvRecieive并产生OnComm之前,设置并返回的要接收的字符数*/m_comm.SetSThreshold(0);/*设置、返回在通信控件置ComEvSend并激发OnComm事件前要发送缓冲区中的最少字符数*/m_comm.SetInputLen(0);/*决定每次Input读入的字符个数,缺省为0,表示读取接收反冲去的全部内容*/8图2-2串口初始化流程(4)从串口接收数据读串口数据的原理是,只要当有数据向串口发数据来时,计算机就会自动将其数据写到一个特定的缓冲区,我们只要写程序去读那个特定的缓冲区就可以了。具体流程如图2-3所示。串口通信线程函数CommThread,它是CserialPort类的最重要函数。函数原型:static UINT CommThread(LPVOIDpParam)。该线程函数将作为工作线程(Worker Thread)被启动,一旦该线程被激活,它将负责监视串口的接收字符事件、发送字符事件和关闭串口事件,并调度与上述事件相关的处理函数,从而完成对串口的操作。为了防止这三个事件同时对同一个对象(串口实例)进行操作,它们之间的同步方式采用Critical Section(排斥体)。这里用到的主要API函数有:WaitCommEvent、ClearCommError、GetCommMask等10。BYTE Comm_Packet_Len; /需要接收到的数据个数BYTE Comm_DataBuffer20; /依次存放串口接收到的数据long Comm_Packet_Index; /每次收到数据个数,并标志数据应放在全局数组位置的索引/每次处理完数据后清空,为下一次接收做准备void CEOLDlg:OnMscomm () VARIANT variant_inp; COleSafeArray safearray_inp; long len=0, k=0; /转换为数组时使用的变量 BYTE rxdata204; /设置BYTE数组 CString strtemp; /字符型变量 int temp = 0; /临时变量 unsigned char ecuchecksum = 0; /ecu回传校验码if(m_ctrlComm.GetCommEvent() = 2) /事件值为2表示接收缓冲区内有字符 m=m_Com.GetInBufferCount(); variant_inp = m_ctrlComm.GetInput()/读缓冲区 safearray_inp = variant_inp; /VARIANT型变量转换为ColeSafeArray型变量 len = safearray_inp.GetOneDimSize(),/得到有效数据长度 for(k = 0; k len; k+) /将ColeSafeArray型变量转换为BYTE型数组 safearray_inp.GetElement(&k, rxdata + k);/转换为BYTE型数组 for(temp = 0; temp Invalidate()强制重载OnPaint()函数,那么数据图就可以动起来了。OnPaint()画图函数如下:void CCommDlg:OnPaint() /用于在窗口客户区绘图int hoc;if (NextTime600 & stop=FALSE) hoc = 600;/接收600个字节else hoc = NextTime;CString TabStr=;CPaintDC dc(this);dc.GetNearestColor(RGB(255,0,0); /定义画线颜色dc.MoveTo(108,250); /画笔位置if (NextTime=600 & stop=FALSE)for (int i=0;i(NextTime/5);i+) /进行连续画点dc.LineTo(108+(5*i),250-LineHighti); /将点连成线elsefor (int i=0;i121;i+)/连续画点dc.LineTo(108+(5*i),250-LineHighti), /将点连成线void CCommDlg:Display()if (NextTime = 600 & stop=FALSE)LineHight NextTime/5 = LineHight 121; /数组中保存的是最新采集的一组数据elsefor (int i=0;iInvalidate(); /重载OnPaint()函数return;2.4 数据的存储以及查看模块2.4.1 类CFileCFile是MFC文件类的基类,它直接提供非缓冲的二进制磁盘输入/输出设备,并直接地通过派生类支持文本文件和内存文件。CFile与CArchive类共同使用,支持MFC对象的串行化。该类与其派生类的层次关系让程序通过多形CFile接口操作所有文件对象。通常,一个磁盘文件在CFile构造时自动打开并在析构时关闭。静态成员函数使你可以在不打开文件的情况下检查文件状态。类CFile直接派生于类CObject,是所有MFC文件类的基类,其继承关系如图2-4所示。类CFile提供了完整的方法操作二进制文件,分别有构造方法、I/O方法、文件定位方法、文件锁定方法、文件状态方法和文件静态操作方法。图2.4 文件类的继承关系类CFile的构造函数CFile用于创建文件类对象,函数声明如下:CFile( );CFile(int hFile);CFile(LPCTSTR lpszFileName,UINT nopenFlags);Throw(CFileException);其中,参数hFile是已打开文件的句柄;参数lpszFileName是表示文件路径的字符串;参数nOpenFlags是共享和访问模式标识,其取值如表2-3所示。13表2-3 参数nOpenFlags的取值模式标志说明CFile:modeCreate建立新文件,若文件已存在,是文件长度归零CFile:modeNoTruncate与CFile:modeCreate配合使用,若文件已存在,文件长度不变CFile:modeRead文件以只读方式打开CFile:modeReadWrite文件以读写方式打开CFile:modeWrite文件以只写方式打开CFile:modeNoInherit禁止文件被子程序继承CFile:shareDenyNone打开文件,不禁止其他进程对文件的读写访问CFile:shareDenyRead打开文件,禁止其他进程对文件的读访问CFile:shareDenyWrite打开文件,禁止其他进程对文件的写访问CFile:shareExclusive以独占方式打开,禁止其他进程对文件的读写访问CFile:shareCompat此标识在32位MFC中无效,与操作CFile:Open时的标志CFile:shareExclusive配合使用CFile:typeText设置文本模式,对换行进行特殊处理(只用于派生类)CFile:typeBinary设置二进制模式(只用于派生类)构造函数:CFile 从一个路径或文件句柄构造一个CFile对象;Abort 不管任何警告和错误,关闭一个文件;Duplicate 构造一个基于该文件的副本;Open 带错误检验选项,安全打开一个文件;Close 关闭文件,删除对象。输入/输出:Read 从文件的当前位置读数据; ReadHuge 可从文件的当前位置读取大于64K数据,Write 将文件数据写入当前文件位置;WriteHuge 可将文件的大于64K数据写到当前文件位置;Flush 溢去未被写入的任何数据。文件定位:Seek 定位于当前文件指针;SeekToBegin 定位当前文件指针到文件开头; SeekToEnd 定位当前文件指针到文件尾;GetLength 获取文件长度;SetLength 改变文件长度。文件封锁方法:LockRange 在文件中封锁一定范围内的字节;UnlockRange 解锁一定范围内的字节。文件状态方法:GetPosition 获取当前文件指针;GetStatus 获取打开文件的状态;GetFileName 获取被选文件的文件名;GetFileTitle 获取被选文件的标题;GetFilePath 获取被选文件的完整路径;SetFilePath 设置被选文件的完整路径。文件静态方法:Rename 改名指定文件(静态函数);Remove 删除指定文件(静态函数); GetStatus 获取指定文件的状态(静态);SetStatus 设置指定文件的状态(静态)。142.4.2 CFile操作详解1.文件的查找当对一个文件操作时,如果不知道该文件是否存在,就要首先进行查找。MFC中有一个专门用来进行文件查找的类CFileFind,使用它可以方便快捷地进行文件的查找。2. 文件的打开/保存对话框让用户选择文件进行打开和存储操作时,就要用到文件打开/保存对话框。MFC的类CFileDialog用于实现这种功能。使用CFileDialog声明一个对象时,第一个BOOL型参数用于指定文件的打开或保存,当为TRUE时将构造一个文件打开对话框,为FALSE时构造一个文件保存对话框。 在构造CFileDialog对象时,如果在参数中指定了OFN_ALLOWMULTISELECT风格,则在此对话框中可以进行多选操作。此时要重点注意为此CFileDialog对象的m_ofn.lpstrFile分配一块内存,用于存储多选操作所返回的所有文件路径名,如果不进行分配或分配的内存过小就会导致操作失败。3. 文件的读写文件读写的最普通的方法是直接使用CFile进行,但是它的使用繁琐,而且功能非常简单。可以使用CArchive,它的使用方法简单且功能十分强大。首先还是用CFile声明一个对象,然后用这个对象的指针做参数声明一个CArchive对象,就可以非常方便地存储各种复杂的数据类型了。CArchive的 操作符用于简单数据类型的读写,对于CObject派生类的对象的存取要使用ReadObject()和WriteObject()。使用CArchive的ReadClass()和WriteClass()还可以进行类的读写。如果要进行的文件操作只是简单的读写整行的字符串,建议使用CStdioFile,用它来进行此类操作非常方便,如下例。 CStdioFile mFile; CFileException mExcept; mFile.Open (“d:tempaa.bat”, CFile:modeWrite, &mExcept); CString string=I am a string.; mFile.WriteString (string); mFile.Close ();4.临时文件的使用正规软件经常用到临时文件,经常可以会看到C:WindowsTemp目录下有大量的扩展名为tmp的文件,这些就是程序运行是建立的临时文件。临时文件的使用方法基本与常规文件一样,只是文件名应该调用函数GetTempFileName()获得。它的第一个参数是建立此临时文件的路径,第二个参数是建立临时文件名的前缀,第四个参数用于得到建立的临时文件名。得到此临时文件名以后,就可以用它来建立并操作文件了。145. 文件的复制、删除等MFC中没有提供直接进行这些操作的功能,因而要使用SDK。SDK中的文件相关函数常用的有CopyFile()、CreateDirectory()、DeleteFile()、MoveFile()。2.4.3 数据的保存方式对采集的CO浓度数据采用文本方式保存于一文件中,保存格式为,第120数据保存一次,数据采用推算法来确定时间。如:08.9 33.5 08.8 65.4 09.8 09.3其算法如下:/将数据保存到文件中if (m_ReceiveData.GetLength()=600)/600个字符刚好对应120个数据 CStdioFile readfile, CString readstr, readstr2, if(readfile.Open(FilePath,CFile:modeRead)/以只读方式打开文件 while(readfile.ReadString(readstr)/逐行查询,至到文件尾 readstr2+=readstr;/依次查询 readfile.Close();/关闭文件 if (file. Open(FilePath,CFile:modeCr
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 化工装置建造讲解
- 巴彦淖尔市重点中学2026届英语九年级第一学期期末综合测试试题含解析
- 2026届北京师范大附属中学化学九上期中考试试题含解析
- 关于开展2025年医师资格考试报名资格审核工作的通知
- 人民银行招聘考试题库及答案
- 磐石彩钢房施工方案
- 社团校外活动安全责任协议书5篇
- 知识产权许可与授权合同范本:全方位保障双方利益
- 生物医药企业间生物技术知识产权许可协议
- 物业服务企业员工行为规范与智慧社区建设与运营合同
- 现代中国的对外关系课件
- HY/T 080-2005滨海湿地生态监测技术规程
- GB/T 712-2011船舶及海洋工程用结构钢
- GB/T 20969.1-2021特殊环境条件高原机械第1部分:高原对内燃动力机械的要求
- GB/T 19868.4-2005基于预生产焊接试验的工艺评定
- GB/T 19633.1-2015最终灭菌医疗器械包装第1部分:材料、无菌屏障系统和包装系统的要求
- 吸附及吸附过程课件
- 羽毛球运动基础知识简介课件
- 设计美学研究课件
- 管道施工安全检查表
- 部编版七年级上册语文《雨的四季》课件(定稿;校级公开课)
评论
0/150
提交评论