当前位置:文档之家› VC++实现的卷材数据实时接收及其数据库记录系统的研究

VC++实现的卷材数据实时接收及其数据库记录系统的研究

燕山大学

硕士学位论文

VC++实现的卷材数据实时接收及其数据库记录系统的研究

姓名:张克刚

申请学位级别:硕士

专业:控制理论与控制工程

指导教师:方一鸣

20050301

摘要

摘要

本课题来源于对某公司卷材轧制现场卷材数据记录系统的改造,针对现场不定时间隔发送来的轧制数据,使用计算机及数据库技术来接收和处理卷材加工生产中的卷材数据。改造前,该厂使用串行打印机打印的方式进行卷材数据存储,但是这种方式问题较多,例如打印机缺墨、缺纸、打印机卡纸、打印纸保管不善等原因造成的数据丢失等。这种记录方式工作效率低,不便于卷材数据的长期保存和统计信息的分析。针对这些问题,本课题利用计算机通信和数据库技术实现了卷材数据的无纸记录。

在设计中首先进行了用户需求分析,确定了即将设计的软件应该具有的功能和性能,对软件的结构进行模块划分,将软件划分为卷材数据实时接收模块和数据库记录系统模块,其中后者又划分为前台模块和后台模块。

其次比较详细介绍了Visualc++6.0中使用WindowsAPI函数和多媒体定时器实现实时串行卷材数据的接收、分离。详细介绍了卷材数据库记录系统后台模块的设计和实现,即在SQLServer2000下如何创建卷材数据记录系统中使用到的卷材数据库,并详细阐述数据库中表和视图的构建过程。

之后,全面分析了Visualc++6.0下卷材数据库记录系统前台模块的设计和实现,既利用ADO(活动数据对象)技术实现对卷材数据的存储、产量统计、数据查询、打印、备份和操作员管理模块,使用网格控件实现卷材数据的动态显示等模块,并在文中给出了重要的源代码。

最后对软件进行了测试,测试结果运行结果表明该程序界面友好,工作稳定可靠,有较强的推广应用价值。

关键词Visualc++6.O;SQLServer2000;卷材数据库;ADO技术;定时器;网格控件

燕山大学工学硕士学位论文

Abstract

Thispaperisbasedonthealterationofcoildataregistersysteminacompanycoilroilingsite.Aimingfortherollingdatathatissentindefinitetimeintervalatthespot,computeranddatabaseskillsareusedtoreceiveandmanagecoildataproducedfrommanufacturingprocess.Beforealteration,aprinterwasutilizedtostoragecoildata,

butthusmethodhadmanyproblems,forexample,shortofinkorshortofpaperfortheserialprinter,printerpaperjaw,unsafekeeping

ofprintingresultcancausedatelost,etc..theworkefficiencyislow,therefore,thelongtimestorageandtheaggregateofcoildataarenotofconvenience.Thus,thecoildata’Sregisterwithoutpaperismadewiththehelpofcomputercommunicationtechnologyanddatabasetechnologyinthispaper.

First,thispaperanalyzestheconsumers’requiresindesign,

determinesthefunctionsandcapabilitiesofthedesigningsoftware,dividesthestructuresoftheSOftwareintomodules.thecoildatareceptionmoduleandthedatabaseregistersystemmodule.Andthe

laterisdividedintofrontalgroudmoduleandbackgroudmodule.Second,Itisdetailedexplainedthereal?timeserialcoildata’S

WindowsAPIfunctionsandacceptingandseparatingwiththehelpof

multimediatimertechnologiesundertheVisualC++6.0.itisofemphasestointroducetheimplementofthecoildatadatabaseregistersystem’Sbackgroundmodule,thatishowtocreatethecoildatabaseusedinthecoildateregistersystemonthebasisofSQLServer2000.Italsoexplainsthecreatationofthedatabase’Stablesandviews.

Then,thesoftwareall-aroundanalysestherealizationOfthecoi】

Abstract

datadatabaseregistersystem’sfrontalgroundmoduleundertheVisualC++6.0,thatisthestorage,thestatisticsofoutput,thedata’sinquiry,theprinting,

thebackupofthedataandthemanageofoperatorsmodalsutilizingtheADO(ActiveXData0bject)skill,dynamicaldisplayingofthecoildatausingflexgrid.Moreoverthemainsourcecodesarealsoshowed.

Finally,thetestsofthissoftwareareputup,theresultofwhichispresented.ItalsogivestheOperationmanualofthesoftwareandpointsouttheproblemsthatareneededtopaymoreattentionwhenusingthissoftware.

KeywordsVisualC++6.O:SQLServer2000;Coildatabase;ADOTechnology;Timer;Flexgrid

第1章绪论

第1章绪论

1.1课题来源及研究目的

本课题来源于对某厂卷材轧制加工生产线数据记录系统进行的改造,在没有进行改造前的轧制工业现场,以前的进口设备(GEM80)常用串口接口将卷材数据发送到打印机,并将卷材数据打印到纸上进行数据保存。但是这种方法存在明显的缺陷:打印机卡纸等原因会导致无法记录卷材数据,记录纸不易长期保存,卷材数据的统计分析困难等。所以该厂希望利用以前的打印机串口通信接口,利用计算机通信技术和数据库技术对其进行改造设计,本设计根据工厂要求设计了卷材数据记录系统和微机信息化管理数据库系统,首先利用Vc++实现卷材数据实时接收和分离,然后把分离后的数据按照一定格式存入创建好的SQLServer2000数据库,利用vc++和ADO技术实现了对数据库中卷材数据的动态更新,查询,删除,统计,备份,打印和安全管理等功能,实际运行结果表明,该方案是切实可行的。

1.2课题主要研究内容

本文研究的内容主要包括两大部分,一是vc++环境下卷材数据的实时接收,二是卷材数据库记录系统,实际设计中这两部分是协调进行的,具体内容如下:

(1)整个软件系统的需求分析和总体设计通过研究分析用户对即将设计的系统提出的要求,确定软件必需的功能,对软件的性能提出预期的要求,在此需求分析的基础上,进行了软件系统的总体设计【l】,首先设计了卷材数据的实时接收和分离,接着对数据库记录系统进行了前台和后台模块的划分,前台是数据库记录系统的操作界面,后台是卷材数据库12,3]。明确指出每一模块所要完成的功能。

(2)VC++环境下卷材数据实时接收和分离介绍Windows环境下利用Vc十+串口通信的实现,完成卷材数据的实时接收和分离。

燕山大!学fT学硕士学位论文

(3)卷材数据库记录系统后台模块的实现讲解了在SQLServer2000下如f.Tg,J建卷材数据记录系统所用到的数据库,详细阐述了创建本数据库所需要的全部卷材信息表和数据库视图。

(4)卷材数据库记录系统前台模块的实现在实现了串口数据的接收和分离的基础上,利用ADOl4J技术实现对数据库中卷材数据的存储、统计、查询、显示、备份、备份历史、打印和操作员管理功能模块。比较详细的介绍了在VisualC++6.0中个模块的详细设计和实现过程,介绍了软件系统各个模块的执行过程及流程图,该模块的功能是在哪些函数中完成的。

(5)最后介绍卷材数据记录系统的测试、模拟实验和使用指南测试的目的是为了发现程序的bug和不完备之处,在运行可靠性和用户友好性等方面进行检验,最后给出该系统的使用指南。

1.3课题相关知识综述

GEM80串口发送的数据是每卷数据为一组,每一卷材包括以下的数据:时间,操作员,卷号,品种,合金,宽度,长度,重量,卷径,板型(5I,101,15I),入口厚度,出口厚度,平均厚度,厚差(+3%,+2%,+1%,?1%,-2%,一3%),入口张力(初始,最小,最大,平均),出口张力(初始,最小,最大,平均),轧机负载(初始,最小,最大,平均),轧制电流(初始,最小,最大,平均),工作辊径,前滑值,轧制速度(初始,最小,最大,平均),加速时间,减速时间,运行时间,SHAPE,GEFB,AREA/WGT,质量,产品,轧制间隙(初始,最小,最大,平均)共55个数据。

通信的类型【5 ̄8]可以分为两种:并行通信和串行通信。这两种不同的通信模式如图1-1所示。由图1.1中可以了解到,所谓的并行通信,即一次的传输量为8个位(1个字节),而串行通信则是一次只传输1个位(也就是一个标准电位的状态)。并行通信虽然可以在一次的数据传输中就传输8个位,但是因为数据电压传输的过程中,容易因线路的因素而使标准电位发生变化(最常见的是电压衰减问题,以及信号问互相串音干扰(CrossTalk)1,从而使传输的数据发生错误。如果传输线路比较长,电压衰减效应及互相干扰问题会更加明显,数据的错误也会比较容易发生。相比之下,串口通

第1章绪论

如RS一232

l串行端口

图1.1两种不同的传输方式

Fig.1—1Twokindsdifferenttransfersmodes

信一次只传1个位,处理数据电压只有一个标准电位,结构简单、传输的距离可以较长,所以在实际中应用广泛,本设计就是采用的串行通信方式。

由文献[9】可知在Windows中由串口进来的数据经过两个缓冲区,首先是硬件的接收缓冲区(这个缓冲通常有8位或16位),然后进入应用程序设置的串口接收缓冲(这个缓冲区在Winl6中由应用程序设置,而Win32中由于串口面向文件设备处理,所以缓冲区大小不用设置),数据从硬件缓冲到应用程序缓冲这一过程由Windows本身完成,作为编程者不用考虑它,应用程序只关心何时有数据,考虑到定时器处理具有控制灵活的效果,所以在接收程序中使用的定时器技术定时读取数据。

下面考虑可视化开发系统的问题,虽然可视化开发环境很多,但自从Visualc++诞生以来,一直是Windows环境下最主要的应用开发系统之一。VisualC++不仅是C++语言的集成开发环境,而且是一个功能强大、灵活性好和完全可扩展的Windows开发系统[m12l。如今,作为一种通用且功能强大的编程语言,VisualC++的地位不可动摇。它可以完成各式各样的应用程序开发,从底层软件直到上层直接面向用户软件。而且,强大的调试功能也为大型复杂软件的开发提供了有效的排错手段。VisualC++是很好的可视化编程工具,使用Visualc++环境来开发Windows应用程序大大缩短了开发时间,而且它的界面更友好,便于程序员操作。

VisualC++是面向对象的高级语言113,14】,它把数据及处理这些数据的

燕山大学工学硕士学位论文

函数封装在一个类中,而类的具体实现称为对象。Visualc++可以利用Windows提供的大量的API函数进行编程,API是应用程序编程接口

Interface)的缩写。Windows应用程序可以利用上fApplicationProgramming

千个标准的API函数调用系统功能,进行编程。还可以利用MFC[15~17]进行编程。MFC是VisualC++提供的用来编写Windows应用程序的c++类集,其中封装了大部分WindowsAPI函数及Windows控件。MFC编程的一个特点是系统提供一个“向导”(Wizard),利用“向导”,可以形成应用程序的框架。程序员只需在形成的框架的基础上进一步添加必要的实现代码,即可编写出自己的Windows应用程序。

接着论述本系统用到的后台数据库问题,卷材数据记录系统使用数据库来存储数据,数据库”蚍01按照逻辑结构可以划分为层状数据库,网状数据库,关系数据库,面向对象数据库。在该课题中,使用的是目前最流行的关系数据库。关系数据库概念是由IBM公司的E.ECode博士提出的,他在1976年6月发表的《关于大型共享数据库数据的关系模型》论文中,首先阐述了关系数据库模型及其原理,并把它用于数据库系统中。他指出,关系数据库是指一些相关的表和其他数据库对象的集合。这个定义表达了3个部分含义:

(1)关系数据库中,信息存放在二维表格结构的表中,~个关系数据库包含多个数据表,每一个表包含行(记录)an列(字段);

(2)数据库包含的表之间是有关联的,由主键和外键体现的关系实现;

(3)数据库不仅包含表,还包含其他的数据库对象,例如视图,存储过程和索引等。

在具体创建数据库的时候,应用的是SQLServer2000,它是一个关系

数据库管理系统,在功能、安全性、可维护性和易操作性上都比以前的版本有了长足的进步。

SQLServer2000提供了创建关系数据库,对关系数据库进行操作的强

大功能。并且提供了在服务器系统上运行的服务器软件和在客户端运行的客户端软件,连接客户端和服务器计算机的网络软件则由WindowsNT/2000系统提供。将数据从服务器检索出来以后,可以生成拷贝,以便

第1章绪论

本地保留,也可以对数据进行操作。其客户朋&务器提供了许多传统主机数据库所没有的先进功能。数据访问并非局限于某些已有的主机数据库应用程序。它的一个主要优点就是与主流客户/服务器开发工具和桌面应用程序紧密集成。可以使用许多方法访问SQLServer2000数据库。

在设计的软件系统中,是通过Transact.SQL语言对数据库进行操作的。

结构化查询语言(SQL)是一种高级语言,它用来访问关系数据库中的数据,最初由IBM所开发。自从SQL产生以来,已经被广泛采用。现在几乎所有的现代数据库都可以使用SQL来访问。随着SQL的广泛应用。美国国家标准协会(ANSI)已经将它标准化了。SQLServer2000使用的SQL语言称为Transact—SQL。Transact—SQL与大多数的ANSISQL标准兼容,但它提供几种扩展和增强功能。

Transact—SQL通常用于数据库管理任务,如创建,删除表和列,也可以用Transact.SQL编写触发器和存储过程,还可以用Transact—SQL来修改SQLServer2000的配置,或与SQLServer2000的GraphicalQueryAnalyzer交互式用来执行查询语句。Transact.SQL提供三种类型的SQL支持,即数据定义语言,数据操作语言和数据控制语言。数据定义语言用于数据库管理任务,如创建表和视图。数据操作语言用于查询和修改数据库钟的数据。数据控制语言用于控制数据库操作。

那么在VisualC++6.0如何访问数据库哪?也就是有了Transact.SQL语句以后,如何将这些语句提交给数据库服务器,并接收执行结果呢?这是通过在VC下使用活动数据对象一ADO(ActiveXDataObject)来完成的。

文献f21】可知ADO是Microsoft提供的一种面向对象、与语言无关的数据访问应用编程接口。ADO的所有接口都是自动化接口,因此在c++、VB、Delphi等通过接口都可以访问到ADO。ADO对OLEDBAPI进行了封装,实现对数据的高层访问,同时它也提供了多语言的访问技术,包括Visucalc++,VisualBasic等,它是微软整个c0M战略体系中访问数据源组件的首选。这里特别指出为了可以使用ADO,需要在头文件StdAfx.h中添加下列代码[221:

#include”comdef=h”#import”C:WrogramFiles\CommonFiles\

燕山人学T学硕士学位论文

Symem\ado\msad015.dll”\no._namespace\rename(”EOF”,”adoEOF¨)ADO对象模型非常精炼,仅由三个主要对象Connection(连接对象1、Command(命令对象)、Recordset(记录集对象)和几个辅助对象组成,其相互关系如图1—2所示,Connection对象提供数据源和数据库对象之间的关

图1-2ADO对象模型

Fig.1-2ADOobjectmodel

联,Command对象封装了数据源可以解释的命令,Recordset用于从数据源返回的表格数据,它封装了记录集合的导航、记录更新、记录删除和新记录的添加等方法它还提供批量更新记录的能力。

ADO最主要的优点是易于使用、速度快、内存支出少和磁盘遗迹小,它是ODBC的替代产品。

具体地说,用ADO访问数据源的特点可以概括如下:

(1)易于使用这是ADO最重要的特点之一。由于ADO是高层数据库访问技术,所以相对于ODBC来说,具有面向对象的特点。同时,在ADO的对象结构中,对象与对象之间的层次结构不是非常明显。这就给编写数据库程序带来很多便利。例如,在应用程序中要使用记录集对象,我们不一定要先建立连接、会话对象,如果需要就可以直接构造记录集对象即可。总之,不必关心对象的构造顺序和构造层次。

(2)可以访问多种数据源与OLEDB一样,ADO也儿乎可以访问所有关系数据源和非关系数据源,这使得应用程序具有很好的通用性和灵活性。

(3)访问数据源效率高这一点很容易理解,因为,ADO是以OLEDB

第1章绪论

技术为基础的,所以它继承了OLEDB访问数据源的高效性。

(4)方便的Web应用ADO可以ActiveX控件的形式出现,这可以大大方便Web应用程序的编制。

(5)编程接口丰富

以上阐述了软件系统采用串行通信的方式实现卷材数据的接收,用VisualC++6.0系统环境下构建软件操作界面,利用SQLServer2000作为后台存储数据库,使用ADO在vc++环境下实现对数据库的访问,完成软件体系的所有功能。

1.4课题研究的意义

(1)由于从现场传来的数据具有不可复原性,因此数据的实时可靠的接收在通信中起着至关重要的作用。在Windows环境下利用Visualc++6.0开发平台和SQLServer数据库技术,实现可视化的串口通信和数据管理,方便了操作,节约了管理成本,提高了工作效率。

(2)利用个人计算机来存储数据比用打印机来存储数据要快许多倍。数据被存储到计算机的存储设备中,不容易丢失。对存储的数据进行各种处理十分的方便。如果采用打印机记录数据,那么以后在查看数据的时候,即便是查找某一个数据,都是很麻烦的。但是利用数据库来存储数据就不同了,利用数据库服务器提供的各种各样的数据操作功能,对数据进行操作是非常便利的。

(3)数据的共享很容易实现,数据库被存储到数据库中,数据库由数据库管理系统来管理,而数据库管理系统允许其他用户通过网络来访问数据库中的数据,这样,很容易实现不同地方的用户对数据进行访问。

(4)数据的安全性大大提高,数据库管理系统提供了强大的保证数据安全的功能,能够保证数据的安全性,这包括不允许没有权限查看数据的用户对数据进行操作,不允许对数据进行随意的更改、破坏。

由上所述可见应用计算机技术和数据库技术实现这一课题,在工业应用领域具有较大的实际意义。

燕山大学T学硕士学位论文

第2章软件系统需求分析和总体设计

2.1用户对软件功能上的基本要求

我们要完成的软件系统是对原有卷材数据记录方法的改进,原先使用的数据记录方法是采用串行打印机记录数据的方法,由GEMS0串口打印接口将卷材数据发送到打印机,由串行打印机将数据打印出来。但是采用这种数据记录方法存在卡纸、信息统计困难等缺点,所以要求改进卷材数据的记录方法。改进的方法是针对不定时间间隔发送到串口的卷材数据,采用个人计算机进行数据记录。即利用原先的串口打印机接13同个人计算机进行串口通信,将数据发送到个人计算机,由软件接收,存储到计算机中的SQL数据库中,并对数据进行处理。由此,用户提出了以下的需求:(1)采用新型的卷材数据无纸记录方法,利用原GEM80串口打印机接口,将需要打印的数据经过串13传送给个人计算机,利用将要设计的数据接收软件,对卷材数据进行接收并加以分离,存储,并可以让操作人员查看卷材数据(包括卷号,钢种,来料厚度,成品厚度,板型,卷宽,卷重,卷长,轧制力,速度,张力等55个数据)的接收过程,并且上述卷材数据可根据需要,有选择的打印输出;

(2)数据按照生产时间的先后顺序存储,每卷数据占一行,存储到个人计算机内,以便供网络上的其它计算机访问;

(3)为方便数据分析,能按照日期、卷号、厚度、操作员等进行简单查询、也可以根据需要进行复杂的组合查询,查询时,可以选择查询结果需要显示的列,能对卷材数据的产量进行统计分析,并可有选择的进行打印:(4)上述数据可以根据不同的授权级别,由级别高的操作员对其进行处理,如对数据库中数据文件进行备份,存储太久的数据可以手动删除等。

2.2软件系统的需求分析

由于要求采用个人计算机进行数据的存储,其前提是串口数据的正确

第2章软件系统需求分析和总体设计

接收和分离,这可以利用WindowsAPI函数‘23】编程实现,用户要求操作员能方便的对数据进行查询、浏览、分析等,所以系统采用VC++可视化编程,并采用目前最流行的关系数据库束进行数据存储,具体选择微软的SQLServer2000来进行数据库的存储。由文献[24,251可知采用数据库有以卜-的好处:数据的存储和查询操作简单,对数据的共享很容易实现,可以满足通过网络对数据进行访问。

用户需求中要求能够按照指定的数据对卷材数据进行查}f{J,为1r方便用户的使用,必须制作用户界面,以方便用户查询数据,显示查询的结果是以行的方式显示,每一行显示一卷数据。可能用户查看查询结果时并不一定要查看一卷材的所有数据信息,所以可以通过软件让用户选择只显示一卷数据的一部分。

用户需求中要求能够让操作员有选择的打印需要的数据,软件应该提供打印功能。由于该软件是针对卷材数据记录的,所以打印功能并不需要很强大,能够基本完成卷材数据的打印就可以丁。

关于对系统的安全管理,可以采用目前应用最多的登录验证的方法,只有通过数据库登陆验证和操作员登陆验证之后的操作员才能有权使用本课题开发的软件。

对数据的备份操作可能会发生在多台计算机上,这是由于数据可以通过网络被多台计算机访问。这样的话可能会出现有的计算机备份了这一部分数据,另一台计算机备份了那一部分数据,也就是说软件系统具有数据备份的分布式功能。

同时为了查看备份数据和对备份数据进行管理.软件应肯备份历史的功能。

要限制对数据的删除操作,可以通过只允许有删除权限的操作员删除数据。

2.3软件系统预期性能分析

(1)系统应该能够确保将所有的数据存储到数据库中,这需要保证串口通信的正确运行,对数据的正确接收和分离,在将数据插入到数据库中时

燕山大学工学硕士学位论文

不出现错误。所以系统应该采取必要的方法保证达到这些要求。

(21系统应该保证长期运行时的可靠性,由于系统是运行在工业现场中,工业生产经常是连续运行很长时间,所以软件应该能够保证在长期运行的情况下还能够正确进行操作,这一性能要求主要是用在数据的接收和对数据的存储上。

(3)软件使用的简便性,由于使用软件的用户可能对计算机知识了解的并不是很多,为了让他们方便的使用软件,软件应该提供友好的操作界面。

(4)软件的运行速度尽量块,特别是存查询卷材数据的时候,可能用户查询了,人量的数据,这样要提高显示查询结果的速度,这~点可以通过分页显示结果数据来获得。同时,软件显示查询结果数据的速度受到其它因素的影响,例如通过网络访问数据的时候,网络速度可能会影响结果数据的传输速度,进而影响到结果数据的显示速度。

(5)软件应该能够保证数据不被随意的破坏,数据被存储到数据库中,所以软件应该限制操作员对数据的更改和删除操作,由于软件只是用于对卷材数据的记录,所以软件不需要具有对卷材数据进行更改的操作功能。

2.4软件系统的总体设计

本系统的概括框图如图2-1所示,t要分成两个了-系统,卷材数据的

图2-1系统整体结构

Fig.2—1Wholestructureofsystem

10

第2覃软件系统需求分析和总体设计

实时接收系统和卷材数据库记录系统。其中后者又划分成两人模块:一是卷材数据库记录系统的后台模块,即卷材数据库的设计;二是卷材数据库记录系统的前台模块,即数据管理系统的设计。数据库部分主要设计用什么样的数据库逻辑结构来存储整个系统需要存储的数据,以及为了提高数据库的性能而做的一些其它设计。数据管理系统这部分t要设计如何将接收分离后的卷材数据存储到数据库,以及设计用户界面,对数据库中的数据进行一定的操作。

2.4.1卷材数据接收和分离的总体设计

实现串口通信的方法一般有三种,考虑到工业生产中对可靠性要求较高,所以确定采用WindowsAPI函数来实现串口通信。串口通信包括发送和接收两个部分,本软件系统从用户需求和现场要求来看只涉及到串U数据的接收,发送部分不需要实现。但是从模拟调试的要求出发还必须有发送端以便检测软件的性能,这可以通过编写一个简单的定时或随机发送卷材数据的小程序来实现。

另外考虑串口通信的中断问题,考虑多媒体定时器来实现周期性的读串口,其实定时器也是一种输入设备,它的使用比较简单,只要告诉Windows一个时间间隔,然后Windows就会以此时间间隔周期性触发程序,它的可靠性也是较高的,具体使用中我们在程序中设定的中断方式为每500ms读取一次。

数据接收之后先存储到一个大数组中,然后调用一个数据分离函数实现卷材的分离,滤除不需要的数据,这个调用的函数处理完数据的分离之后返回到数据接收的主程序,继续接收下一个卷材数据。此分离函数具体实现方法在后续章节中有详细讲解。

2.4.2卷材数据库记录系统后台模块的总体设计

在用户需求分析中,已经知道一条卷材数据记录包含的数据量是比较大的,总共有55个数据,那么如果将这些数据存储到一个表中的话,随着软件的运行,表中的数据量将会是很大的,这样,在执行一些查询操作的

燕山大学工学硕士学位论文

时候,查询操作的速度会受到影响,因此根据这55个数据的类型,可以将这些数据分别存储到卅i同的表中,根据分析确定,数据库中应该存储以下类型的数据:卷材数据,产量统计数据,操作员信息数据,备份历史数据。所以确定用5个表来存储卷材数据,3个表存储产量,操作员信息和备份历史个用一个表,另外为了使用卜的方便,需要创建五个视图【2“。

2.4.3卷材数据库记录系统前台模块的总体设计

数据管理系统主要完成的任务包括:将从串口通信系统接收到的数据存储到数据库中,然后根据t}{j户的需要,对数据库进行产量统计、查询、显示、打印、备份等操作,从程序设计的角度考虑把操作前台进行模块划分口“”J,划分以后的前台模块如图2.2所示:共可以划分为8个模块。

数据管理系统

l数据存产量统数据查数据显数据打

l储询印

数据备数据备份历操作员管

份理

图2-2数据管理系统模块划分

Fig2-2Modulepartitionfordatamanagersystem

卷材数据存储模块完成数据的存储。该模块通过已经建立的数据库连接向数据库服务器发送添加数据请求,将接收分离后的卷材数据插入到数据库的各个表中。

产量统计模块完成对产量的统计,这个模块是在卷材数据存储执行完成以后被调用的,它首先取得每一条卷材数据记录中被统计的数据,然后进行累加之后存储到数据库对应的存储表中。

数据查询模块是数据管理系统的一个重要模块,用户需求中对数据进

第2章软什系统需求分析和总体设计

行浏览,查询等操作都是在这个模块中完成,在这模块中软件利用不同的界面接收用户的查询需求,然后向数据库服务器发送查询请求,数据库执行这个查询请求,并且将结果返删到数据管理系统。在数据返回以后,该模块调用数据显示模块,将查询的结果数据显示出来。

数据显示模块[31,321用来显示数据,这个模块包括两个部分,一是对实时接收到的数据进行显示,这是在数据接收完成并且被存储到数据库以后执行的,它可以让系统操作员对系统的动态情况进行监视。另外一部分是对数据库查询结果进行显示,模块对查询结果是以行的方式显示的,一行显示一卷卷材数据记录。考虑到查询结果的数据量很多时,模块用分页的方式显示数据,所以该模块提供了分页及翻页功能,同时提供了让用户指定每一页显示记录数的功能。

南于用户要求软件可以让用户有选择的打印卷材数据,所以数据管理系统提供了打印模块,打印模块分为两个部分,分别打印卷材数据和产量统计数据。卷材数据打印部分以表格的方式打印卷材数据,而产量统计数据打印部分以行方式打印产量统计数掘。

数据备份模块9。”1完成对数据的备份操作。数据管理系统的备份方式是将数据库中的卷材数据和产量统计数据存储到文件中。备份模块同时将备份操作历史写入备份历史信息表中,以便对备份的数据进行操作。

数据备份历史模块提供了对备份的数据进行操作的功能。该模块能够显示所有的备份操作历史,并且根据用户的选择,显示备份的数据。

操作员管理模块提供了创建操作员,删除操作员,为操作员设置权限等功能,该模块还对操作员进行登录验证。

2.5本章小结

这一章对软件系统进行了需求分析,确定1广软件应该具有的功能和应该达到的性能,然后总体设计了卷材数据的实时接收和卷材数据库记录系统的后台模块、前台模块,并将卷材数据库记录系统的前台模块(数据管理系统)划分为数据存储,产量统计,查询,显示,打印,备份,备份历史,操作员管理8个模块。

燕山大学工学硕士学位论文

第3章

Vc++环境下卷材数据的实时接收和分离3.1VC++环境下串口卷材数据的接收

3.1.1用vC++实现串口通信简介

在vC++环境下实现串口通信主要有三种方式|3“,一种利用标准通信函数inp、直接对芯片进行操作;一种是利用环

境_outpUARTWindows下的API通信函数:第二种足利用通信控件实现。

第一种方式是直接对串口通信控制芯片uART编程,这种方法尽管代码实现比较简单,但其对硬件的依赖性比较大,当有大量数据要接收时可能使得数据丢失,另外在Windows9x多任务环境下,稳定性比较筹,只适用于比较简单的情况。

第二种方法利用WiMows环境下API通信函数将通信端口的缓冲区映射到计算机RAM中,只要不超出RAM的容量,就不会丢失数据,所以这种通信方式存储量大,可靠性高。此方法要求程序员熟练掌握Windows9x的API函数的使用,编程比较复杂,但其移植性好,可靠性高。

第三种方法是利用通信控件实现,这种方法编程比较简单,但较依赖开发系统以及系统的支持,在应用方面是典型的事件驱动方式。

基于以上分析,对于实时性和稳定性要求很高的串口通信,我们选择利用Windows环境下的API通信函数来实现。下面详细阐述API通信函数及其参数的含义。Windows系统为串口通信提供了全新的服务口71,传统的OpenComm,ReadComm,WriteComm,ColseComm等函数已经过时,W/vlCOMMNOTIFY消息也消失了,取而代之的是文件的I/0函数提供的打开和关闭通信资源句柄及读写操作的基本接口。新的文件I/0函数(CreateFile,ReadFile,WriteFile等)支持重叠式输入输出。

(1)打开串口HANDLECreateFile(LPCTSTRlpFileName。DWORDdwDesiredAccess,DWORDdwShareMode,LPSECURITY-ATTRIBUTESlpSecurityAttributes,DWORD

dwCreationDisposition,DWORD14

第3章vc+十环境下卷材数据的实时接收和分离

dwFlagsAndAttributes,HANDLEhTemplateFile);

其中:tp厅leName表示被打开的端口,如“COMl”、“COM2”等;dwDesiredAccess表示读/写访问模式;dwShareMode表示共享模式;lpSecurityAttributes表示安全描述符的地址;dwCreationDisposition表示如何打开文件;dwFlagsAndAttributes表示文件属性;hTemplateFile表示模板文件句柄。

如果函数调用成功,则返回一个打开的串口旬柄;否则返回INVALlD—HANDLE—VALUE。

(2)设置串口状态设置串口状态首先用BuildCommDCB函数填充DCB结构体(DCB结构体里包含通信的参数)或手动填充DCB结构体,然后用函数SetCommState函数将DCB结构体写进打开的端口,便完成了端口状态的设置。BuildCommDCB函数的调用格式:

BuildCommDCB(LPCTSTRlpDel,LPDCBlpDCB);

其中:lpDef表示指向DCB结构的指针;lpDCB表示指向设备控制字符串的指针。DCB结构的参数项很多,主要包括波特率、数据位数、奇偶校验、停止位的设置等。如果该函数调用成功,则返回值为TRUE;否则返回值为FALSE。SetCommState函数调用格式:

SetCommState(HANDLE^厅融,LPDCBlpDCB);

其中:hFile表示CreateFile返回的串口旬柄;lpDCB表示指向DCB结构指针。

(3)清除缓冲区BOOLPurgeComm(HANDLEhF//e,DWORDdwFlags);其中:hFile表示串口句柄;dwFlags表示执行动作。

若清除发送缓冲区,则参数dwFlags设为PURGE_TXCLEAR若清除接收缓冲区,则参数dwFlags设为PURGERXCLEAR。

(4)串口接收数据BOOLReadFile(HANDLEhFile,LPVOIDlpBuffer,DWORDnNumberOfBytesToRead,LPDWORDlpNumberOfBytesRead,LPOVERLAPPED咖Overlapped);

其中:hFile表示串口句柄;lpBuffer表示接收数据的缓冲区地址;nNumberOfBytesToRead表示准备读取的字节数;lpNumberOfBytesRead表

燕山大学工学硕士学位论文

示最终读取的字节数;tpOverlapped表示指向~个重叠结构的指针。

(5)关闭串口BOOLCloseHandle(HANDLEhObject):其中,hObject表示关闭的对象旬柄。

(6)超时设置BOOLSetCommTimeouts(HANDLEhF/le.LPcOMMnMEOuTslpCommTimeouts);其中hFile表示通信设备句柄;lpCommTlmeouts表示通信超时结构体指针。

在用函数ReadFile或WriteFile读端口时,需要考虑超时问题,如果在指定的时间内没有读入或写出指定数量的字符,那么ReadFile和WriteFile的操作就会结束。可以调用函数SetConmaTimeouts用某一个COMMTIMEOUTs结构体设置超时。COMMTIMEOUTS结构体定义如下:typedefstruct—COMMTIMEOUTS{DWORDReadIntervalTimeoutDWORDReadTotalTimeoutMultiplier,DWORD

ReadTotalTimeoutConstant,DWORDWriteTotalTimeoutMultiplier,

DWORD}COMMTIMEOUTS,+LPCOMMTIMEOUTS;

其中:ReadIntervalTimeom表示读间隔超时时间;ReadTotalTimeoutMultiplier表示读时间系数;ReadTotalTimeoutConstant表示读时间常量:WriteTotalTimeoutMultiplier表示写时间系数:WriteTotalTimeoutConstant表示写时间常量。COMMTIMEOUTS结构体成员都以毫秒为单位。

f7)定时器的关闭MMRESULTtimeKillEvent(UINTuTimerlD);

其中u77merlD表示定时器标识符事件。函数timeKillEvem的功能上是关闭指定的定时器。

(8)回调函数回调函数TimeProc是当单~事件终止或周期性事件周期性终止时被调用。其定义形式如下:voidCALLBACKTimeProc(UINTulD,UINTuMsg,DWORDdwUser,DWORDdwl,DWORDdw2);其中:ulD为事件的标识符,当定时器事件设定时,标识符被函数timeSetEvent返回;uMsg被保留,不使用;dwUser指定对于函数timeSetEvem的参数dwUser使用支持的实际数据:dwl不使用,保留;dw2不使用,保留。

函数TimeProc对于应用程序定义的函数名是一个占位符。应用程序不

相关主题
文本预览
相关文档 最新文档