VC的数据库应用

2024-06-10

VC的数据库应用(精选七篇)

VC的数据库应用 篇1

ODBC在VC中提供了方法, 我们可以直接通过内部操作SPL语言。基于VC开发出的ODBC的应用程序, 可以很简单的操作各种数据库, 例如:ACESS, SQL, ORACLE等数据库。由此可见, ODBC的最大优点是能以统一的方式处理所有的数据库。MFC提供的ODBC类对较复杂的ODBCAPI进行了封装, 提供了简化的调用接口。MFC ODBC类在实际开发中应用最广, 因为它功能丰富, 操作相对简便。本文通过小型酒店管理信息系统为例, 阐述了ODBC编程的具体实现。

1 数据库选取

数据库是用来存放大量数据和资料的。数据可以简单地帮助多个单位或者部门对同一组数据进行操作, 把很多计算机共享同一组数据。可以同各种数据库建立联系, 进行沟通。数据库平台选用的是Microsoft公司的Office Access, Access拥有大型数据库系统基本特征, 但保持了windows环境下界面友好、操作简单的优点, 成为w indow s环境下开发中、小型C/S系统较流行的数据库系统。

2 ODBC原理

ODBC (Open Database Connectivity, 开放数据库互连) 是微软公司开放服务结构 (WOSA, Windows Open Services Architecture) 中有关数据库的一个组成部分, 它建立了一组规范, 并提供了一组对数据库访问的标准API (应用程序编程接口) 。ODBC各个部件之间的关系如图:

应用程序要访问一个数据库, 首先必须用ODBC管理器注册一个数据源 (或动态注册一个数据源) , 管理器根据数据源提供的数据库位置、数据库类型及ODBC驱动程序等信息, 建立起ODBC与具体数据库的联系。只要应用程序将数据源名提供给ODBC, ODBC就能建立起与相应数据库的连接。

3 使用ODBC开发应用程序

按照系统架构设计方案, 本小型酒店管理信息系统分为:餐饮管理子系统、客房管理子系统、信息查询子系统、财务管理子系统、服务管理子系统。各子系统由后台数据库系统和相应的子系统应用程序组成。

3.1 连接数据库

要建立与数据源的连接, 首先应构造一个CDatabase对象, 然后再调用CDatabase的Open () 成员函数, Open () 函数负责建立连接。根据Access文件的路径进行连接:

3.2 界面显示

CRecordView对象是显示数据库以及简单操作的界面类。应用这个类我们可以实现人机的简易交换功能, 通过这个类可以对数据库资料进行删除、增加、查找等功能, 以下是一部分代码。

4 总结

M FC1.5后的版本里引入封装了ODBC功能的类。通过这些类提供与ODBC的接口, 使得用户可以不须ODBCAPI中的繁杂处理就可以进行数据库操作。Visual C++6.0通过MFCODBC大大简化了利用数据库开发的复杂程度, 简单同时又具有很好的灵活性, 所有代码上机都能通过, 在开发中可以多加扩展会有更多功能, 用ODBC来开发数据库应用程序是个比较好的选择。

摘要:应用程序不能与数据库直接进行操作, 通过给出一个酒店系统开发实例, 详细的描述了VisualC++6.0平台上通过ODBC连接数据库ACCESS的具体操作, 通过研究:发现应用ODBC可以操作多种数据库, 简化了对数据库的繁杂操作。

关键词:ODBC,VC++,数据库

参考文献

[1]张荣梅, 梁晓林.Visual C++实用教程.冶金工业出版社, 2004.

[2]郑阿奇.Visual C++实用教程.电子工业出版社, 2003.

VC的数据库应用 篇2

社会正趋于现代化、信息化, 诸如C、JAVA等计算机编程语言繁多, 在程序开发中可能会运用到多种语言, 而运用多语言开发软件, 会面临程序连接和数据交换等难题。虽然开发与数据库相关的程序, 能利用编程语言把数据库文件转录成文本文件, 继而与编程语言进行数据交换以实现程序与数据库间的数据交换, 但它会给软件开发者带来不便。对此, 诸如ODBC、DAO等数据库编程接口孕育而生, 它能为数据资源提供接口以准许用户的程序实现多数据库连接, ODBC能实现最基本的ASCII文本到繁杂的主框架数据库等进行数据连接, 利用SQL查询语句, 访问其所能支持的所有数据资源, 轻松实现数据库与应用程序间的数据交换。

VC++作为适用的开发工具, 能提供齐全的类库和友好的交互界面, 能满足不同编程人员所需, 能使用ODBC API或利用MFC中的ODBC类实现数据库编程。但在用ODBC API进行编程, 过程中产生大量的代码, 若使用VC++类中封装好的ODBC API, 能更简便地进行应用编程。本文将浅析ODBC数据库接口及其VC++6.0应用程序的设计。

2 ODBC

ODBC (开放数据库互连) 是微软公司提出的数据库访问应用程序接口标准, 其定义了访问数据库API的规范, 因此关系数据库均提供了ODBC驱动程序。ODBC是基于动态链接库 (DLL) 的独特结构, 它能让程序模块化。运用ODBC32.DLL定义程序接口, 在运行程序时O D B C 3 2.D L L在由W I N D O W S控制面板中O D B C管理模块维护的ODBC32.INI注册表基础上, 明确并跟踪相关可用的数据库DLL, 这也就使得单个应用程序实现多DBMS的数据访问。基于C/S结构ODBC结构是由应用程序 (Application) 、驱动程序管理器 (Driver Manager) 、驱动程序 (Driver) 以及数据源 (Data Source) 组成。

2.1 应用程序

应用程序能实现用户和接口间进行交互, 并调用ODBC函数给出SQL请求以提取结果作出错误处理, 它藉ODBC界面执行以下工作: (1) 请求与数据源进行连接或交互; (2) 将SQL请求发送到数据源; (3) 定义存储区域和数据格式为S Q L请求的结果; (4) 请求并处理错误; (5) 必要时, 进行结果报告; (6) 为交互控制提交请求或回滚操作; (7) 结束与数据源的连接。

2.2 驱动程序管理器

驱动程序管理器能通过调用函数并使用DLL, 实现应用程序所需驱动的加载和调用, 使其连接到数据源, 它能管理多个应用和驱动程序。它处于“.DLL”文件中, 它除了装载驱动程序其主要工作: (1) 使用ODBC INI文件将数据源映射到特定的Driver DLL; (2) 服务初始化并调用ODBC; (3) 提供ODBC函数入口指针给每个驱动程序; (4) 为O D B C调用提供参数和序列验证。

2.3 驱动程序

驱动程序也处在.D L L文件中, 它执行O D B C的函数调用, 将SQL请求相应的数据源结果传递给应用程序。其工作如下: (1) 建立与数据源的连接; (2) 提交SQL请求给数据源; (3) 翻译请求的数据格式; (4) 将结果传递给应用程序; (5) 将错误格式转换为错误代码并返给应用程序; (6) 必要时, 申明和操纵游标; (7) 若数据源需要ODBC初始化, 则初始化O D B C。

2.4 数据源

数据集及其关联环境构成数据源, 它包括了操作系统、数据库系统 (DBMS) 以及网络。应用程序无须制定特定的数据库系统, 只要利用标准API就能连接数据源。

3 MFC的ODBC类

M F C O D B C类具有功能齐全、简便易懂等特点, 在实际开发中应用范围最广。在MFC 1.5以后的版本中, 相关ODBC功能的类都封装在MFC ODBC类中, 通过它们与ODBC接口, 能使用户避免ODBC API的繁琐处理, 直接进行数据库的相关操作。MFC ODBC类包括有C D a t a b a s e、C R e c o r d s e t、C R e c o r d V i e w以及CField Exchange等类。

4 VC++应用程序设计

4.1 程序结构

本文将设计员工工资管理系统, 运用VF 6.0数据库接口以及VC++实现数据的增删改以及计算等功能, 计算是将基本工资与奖金的数据相加。VF数据库名lyl包括有staff表, 其中包含有员工号 (staff_id) ;员工名 (staff_name) ;工资 (basewage) ;奖金 (bonus) ;总计 (totals) 。

4.2 程序源码

限于篇幅, 如下是增添员工部分代码:

5 结语

通过数据库编程接口能有效地避免应用程序与数据库间进行数据交换的大量编码, 在满足程序需求的情况下, 能让用户得到更好地效率及应用。综上所述, 在VC++设计应用程序时, 运用数据库接口进行编程是可行的, 它能使编程变得更为简便。

参考文献

[1]廖远来.数据库编程接口及其VC++应用程序设计[J].电脑与电信, 2007, 05:63-65+68.

[2]李健平, 戴子文, 王雪力, 刘芳.基于ODBC的Visual C++应用程序设计[J].甘肃科技纵横, 2011, 02:23-24+188.

[3]高铁军.VC 4.1数据库接口及其数据库功能的实现[J].黄金学报, 1999, 02:138-141.

基于VC的数据库访问技术研究 篇3

开放数据库互连(ODBC)是微软公司开放服务结构中有关数据库的一个组成部分,建立了一组规范,并提供了一组对数据库访问的标准API(应用程序编程接口)。应用程序可以使用这些API访问任何提供ODBC驱动程序的数据库。这些API利用SQL来完成其大部分任务。ODBC的应用非常广泛,基本上可用于所有的关系数据库。但是ODBC访问数据库的速度相对其他一些访问方式较慢,这就限制了其应用范围。另外ODBC只能用于关系数据库,对于非关系数据库,ODBC就无能为力了。一个完整的ODBC由下列几个部件组成:应用程序、ODBC管理器、驱动程序管理器、ODBC驱动程序、数据源。

2 DAO的访问方式

DAO使用Microsoft Jet数据库引擎来访问数据库。Microsoft Jet为Access和VB这样的产品提供数据引擎。提供了通过程序代码创建和操纵数据库的机制。与ODBC一样,DAO提供了一组API供编程使用。MFC DAO是微软提供的用于访问Microsoft Jet数据库文件强有力的数据库开发工具。通过对DAO的封装,向程序员提供了DAO丰富的操作数据库手段。DAO从VC4.0版开始引入。DAO类提供了比ODBC类更广泛的支持:一方面,只要有ODBC驱动程序,使用Microsoft Jet的DAO就可以访问ODBC数据源;另一方面,由于DAO是基于Microsoft Jet引擎的,因此在访问Access数据库时具有很好的性能。DAO可以通过ODBC驱动程序访问ODBC数据源,但DAO是基于Microsoft Jet引擎的,通过该引擎,DAO可以直接访问Access、Fox Pro、d BASE、Paradox、Excel和Lotus WK等数据库。

3 OLEDB/ADO的访问方式

OLEDB是基于C0M接口的访问数据库的新技术。OLEDB提供了对包括关系数据库和非关系数据库在内的所有文件系统的统一接口。与ODBC技术类似,OLEDB属于数据库访问技术中的底层接口,封装了ODBC的功能,并以统一的方式访问存储在不同信息源中的数据。这些特性使得OLEDB技术比传统的数据库访问技术更加优越,速度更快。OLEDB为任何数据源提供了高性能的访问,这些数据源包括关系和非关系数据库、电子邮件和文件系统、文本和图形、自定义业务对象等,并不局限于ISAM、Jet甚至关系数据源,能够处理任何类型的数据,而不考虑数据的格式和存储方法。但是,OLEDB应用程序编程接口的目的是为各种应用程序提供最佳的功能,并不符合简单化的要求。最理想的API应该是一座连接应用程序和OLEDB的桥梁,ADO技术是基于OLEDB的访问接口。对OLEDB的接口做了封装,定义了ADO对象,属于数据库访问的高层接口。由于掌握和使用更为方便,因此在基于COM技术的数据库访问中,通常使用ADO技术而不是OLEDB。ADO使用户能够编写应用程序以通过OLEDB提供者访问和操作数据库服务器中的数据。ADO最主要的优点是易于使用、速度快、内存支出少和磁盘遗迹小。ADO在关键的应用方案中使用最少的网络流量,并且在前端和数据源之间使用最少的层数,所有这些都是为了提供轻量、高性能的接口。

4 结束语

综上所述,ODBC的应用程序对数据库的操作不依赖任何DBMS,不直接与DBMS打交道,所有的数据库操作由对应的DBMS的ODBC驱动程序完成。不论是Fox Pro、Access还是Oracle数据库,均可用ODBC API进行访问。可见,ODBC的最大优点是能以统一的方式处理所有的关系型数据库。由于DAO可以访问ODBC数据源,在某些情况下可以获得更好的性能,特别是在访问Microsoft Jet数据库时,因此DAO可以替代ODBC,与ODBC相比,DAO还允许数据有效检查,允许用户说明表与表之间的关系。

参考文献

[1]张家精,倪友聪.DAO技术在数据库访问中的应用与实现[J].南昌:计算机与现代化,2006(12):46-48.

基于VC的数据库编程设计与实现 篇4

关键词:VC,数据库编程,设计研究

前言

当今时期正处于计算机技术和网络技术高速发展的时期, 广泛应用于社会多个领域中, 极大程度的改变了人们生活生产方式。在信息化和数字化的当今时代, 很多计算机编程语言例如C语言、JAVA受到行业人士的欢迎, 很多程序开发都会利用到编程语言。比如说数据库编程的设计, 基于vc开发工具的支持, 为编程人员带来极大便利。

1 VC数据库编程设计ODBC方式

开放数据库连接 (Open Database Connectivity, ODBC) 是微软公司开放服务结构中有关数据库的一个组成部分, 它建立了一组规范, 并提供了一组对数据库访问的标准API (应用程序编程接口) 。Microsoft也是以此作为核心考虑。ODBC属于ADO的前身技术, 是Microsoft引进的一种接口技术。编程人员进行数据库内容访问阶段, 利用开放数据库连接 (ODBC) 可以以非语言的形式实施操作, 更加简单便捷[1]。同时, 利用ODBC, 编程人员在进行DBF文件、或者Access Basic所获取的数据信息时, 不再要求具备Xbase程序的专业设计语言。同Windows较为相似的是, 开放数据库连接 (ODBC) 同样可以利用DLL中的驱动程序, 实现任务的完成。一般情况下, 开放数据库连接 (ODBC) 可以提供两种驱动程序, 分别是设计语言的功用接口和数据库管理器的专业语言。两种驱动程序具有一定的相似之处, 都能够使Visual C++调用数据库内容。在Visual C++中, 很多数据库类都是经过MPC类库确定定义。如果编程阶段使用ODBC, 编程人员常常会利用CRecord Set (记录集类) 、CRecordView (可视记录集类) 、以及CDatabase (数据库类) 。CRecord Set (记录集类) 对象可以根据数据源进而提供相应的记录集;CRecord View (可视记录集类) 对象利用控制的形式使数据库记录信息显示出来, 此视图可以直接与CRecord Set (记录集类) 对象中表视图连接;CDatabase (数据库类) 对象能够有效提供出数据源的连接通道, 可以方便编程人员开展数据源操作。

1.1 数据链接

CRecord Set (记录集类) 可以对某种成员变量关系进行定义, 例如说m_p Database:Cdatabasc*m_p Database, 此指针可以指向相应数据库类。如果在Open () 函数之前调用CRecord Set (记录集类) 对象, 然后将打开的CDatabase类对象指针信息送达m_p Database, 进而可以共享相同的CDatabase类对象。

1.2 查询记录

通常情况下, 利用OBDC进行记录的查询, 主要选择CRecordSet::Requery () 函数、以及CRecord Sa::Open () 成员函数。需要优先使用CRecord Sa::Open () 函数获取记录集, 然后才可以运用CRecord Set类对象。如果已经使用CRecord Sa::Open () 函数, 然后开展查询工作时, 即可使用CRecord Set::Requery () 函数。特别强调的是, 在实际的调动CRecord Set::Open () 函数阶段, 编程人员如果已经成功打开一个m_p Database成员变量, 也就是CDatabase类对象指针发送到CRecord Set类对象中的变量, 那么必须建立相应的ODBC连接, 同时保证连接基于此数据库对象;或者m_p Database为空指针, 则需要立刻建立新的CDatabase类对象, 并且保证其能够与缺省数据源相连接, 之后初始化操作CRecord Set类对象。可以利用Get Default Connect () 函数进行获取。如果未曾发现指定的参数, 则程序止咳利用所缺省的SQL数据, 也就是Get Default SQL0函数中的SQL实现操作[2]。

2 VC数据库编程设计ADO方式

首先, 需要明确OLE—DB概念, OLE—DB也就是利用部件的对象模型COM, 作为一种访问数据的接口。同所有COM对象一致的是, 也可以对OLE—DB的任何一个对象进行查询、撤销、或者是创建。可以利用提供者来表示OLE—DB的对象来源, Visual C++软件包括了各类OLE—DB提供者, 也可以是厂家升级相关数据库的产品而提供的。OLE—DB具有更为明显的优势, 主要是任何一个Visual Studio产品都能够与同一个提供者进行结合, 比如说Visual Basi、Visual J++、Visual C++、以及Visual Inter De等等。此外, OLE—DB还能够依赖事件, 同样与其他COM对象具有一致性。总之, 上述事件能够自动阐述何时更新数据库表, 显示其他编程中所生成的新项数据, 也可以是所请求的表在何时准备好, 方便用户查看[3]。

ADO不仅能够利用VC的强大功能, 同时能够方便操作, 可以将ADO模式数据库的访问作为实例分析, 进而详细说明VC环境下的数据库具体应用。ADO具体编程方式如下所示:

2.1 应用预处理指令#import

编程人员在具体的程序编译阶段, VC++所读出的msadol5.dll含有的类型库信息, 会自动产生2个此类型库里的头文件、以及msadol5.th以及msadol15.tli两个实现文件。ADO所有对象和方法, 都由上述两个文件所定义, 同时还包括一些常量等。

2.2 利用读取msado-l5.

dll所包括的类型库信息, 也可以利用MFC里的CIDispatch Driver, 然后建立一个同COle DispatchDriver相关的派生类, 最后利用其对ADO对象调用。

2.3 可以直接使用COM提供的AP, 可以使用下列代码:

3 总结

通过上述能够看出, 基于VC的数据库编程主要采用ADO的设计方式, 有利于促进数据局基本工程的有效实现, 同时能够合理发挥出VC的最大性能, 更加方便编程人员操作, 保证程序开发的合理性和有效性。因此, 该设计方法相仿合理, 是一种非常理想的数据库编程方法, 具有一定的应用空间。

参考文献

[1]曹林林, 张恒璟.基于VC6.0平台的水准网平差数据库设计与实现[J].测绘工程, 2014, 23 (6) :71-74.

[2]李艳.数据库编程接口及其VC++应用程序设计[J].数字技术与应用, 2014 (4) :182-182.

VC的数据库应用 篇5

1 数据结构定义

1.1 抽象数据类型迷宫

为了便于介绍,本文以迷宫求解为例。

数据对象:

数据关系:R={ROW,COL}

基本操作:

初始条件:二维数组a[row+2][col+2]已存在,其中自第1行至第row+1行,每行中自第1列至第col+1列的元素已有值,并且以值0表示通路,以值1表示障碍。

操作结果:构成迷宫的字符型数组,以空白字符表示通路,以字符‘砖墙’表示障碍,并在迷宫四周加上一圈障碍。

初始条件:布尔型变量succ为fause。

操作结果:若迷宫M中存在一条通路,则按以下规定改变迷宫M的状态:根据布尔变量succ的值来判断有无路径可走。

初始条件:迷宫M已存在。

操作结果:以字符形式输出迷宫。

1.2 整体框架

本程序包含三个模块

1)栈模块——实现栈抽象数据类型

2)迷宫模块——实现迷宫抽象数据类型

3)主程序模块:

{初始化;

接受命令;

处理命令;

}while(命令!=“退出”);

}

2 动态系统的设计

2.1 多线程技术

系统的核心部分是动画演示、变量跟踪和源代码同步的实现,对于每一个算法的演示都要求实现这部分,数据结构算法动态演示的关键技术多线程技术

多线程(Muhithread)是指程序含有多个执行流。多线程机制允许单个程序通过建立多个并行执行的线程来完成各自的任务。这些并行执行的线程可以执行相同的代码,也可以执行不同的代码[2]。

在dotNET类库中,System.Threading命名空间下包含了各种线程组件、接口来帮助程序员使用C#编写多线程程序。在这个命名空间中最重要的就是Thread类,它是C#多线程程序设计的基础。Thread类提供了创建线程、控制线程的方法,它主要有以下几种重要的成员[3,6]:

启动线程:Start()

终止线程:Abort()

线程休眠:Sleep()

挂起线程:Suspend()

恢复线程:Resume()

2.2 具体的线程设计

2.3 实现思路

数据结构算法演示系统采用Windows应用程序项目来创建,在算法演示系统的主页上有启动各个算法的按钮,通过这些按钮启动每个算法演示界面,该界面有几个主要区域,每个区域对应一个组件[4,5]。

主窗口:包括标题栏和工具栏,用来实现系统控制。

动画演示区:以图形和动画的方式模拟和显示算法执行的过程和结果。

源代码区:用来显示类C语言编写的算法描述,为了更清楚地描绘算法的执行过程,当程序运行到当前行时,用一条高亮度光带罩住此语句,表示该语句被执行。

变量当前值显示区:由控件ListView实现,负责当前演示算法的重要参数及变化值的显示。

3 实验设计与结果分析

实验分别从算法进行动态模拟、代码同步跟踪来形象直观地反映算法的设计思想与动态过程,图1是迷宫求解算法求解过程。

3.1 算法动态模拟

本文利用多线程技术实现算法动态模拟演示,对一个具体的算法演示子模块,须满足执行、暂停、速度可调、任意时刻复位并能重新执行等复杂切换控制功能,从图1可以看到,菜单区有自动执行、单步执行、择暂停所得到的效果,从图1的动画显示区和变量区看到算法执行的过程。如图2中(a)是迷宫这种数据结构的初始化,(b)是随机生成的迷宫。

3.2 代码同步跟踪

本文AlgorithmThread线程负责执行迷宫求解算法,而在主窗口中需要同步显示被执行到的源代码行和该行代码中涉及到变量的当前值的获取和显示,这涉及到多线程间的同步和交互的问题。如图33所示蓝色的横条表示算法执行到到位置,结合图1和图3可以清楚看到代码的同步跟踪情况。

4 结论

本文是基于VC实现的数据结构算法动态演示系统,采用了多线程技术,对算法进行动态模拟、代码同步跟踪,可以形象直观地反映算法的设计思想与动态过程,便于加深学习者对算法的理解和掌握。

摘要:针对数据结构课程的特点,分析了传统教学方法的不足,提出了如何将抽象的算法执行过程以浅显易懂的形式展现在学生面前,基于此原因,该文设计并实现了一种对数据结构算法的执行过程进行演示教学系统,该系统多种算法实现的动态过程,有图像化界面,能清晰展示各个算法的实现过程,该系统界面友好,操作简单,既便于学生学习也利于教师授课。

关键词:数据结构,多线程,VC++,动态演示

参考文献

[1]严蔚敏,吴伟民.数据结构[M].北京:清华大学出版社,2008.

[2]Nagel C,Evjen B,Glynn J,et al.C#高级编程[M].李敏波,译.4版.北京:清华大学出版社,2006.

[3]Schneider G,Winters J P.用例分析技术[M].姚淑珍,李巍,译.北京:机械工业出版社,2002.

[4]刘怀亮,陈荣国,吕国华.软件组建技术[M].北京:冶金工业出版社,2007.

[5]郑人杰,殷人昆,陶永雷.实用软件工程[M].北京:清华大学出版社,1997.

VC的数据库应用 篇6

各种信息管理软件通常需要存取照片信息,以往的做法是:先在PhotoShop中按要求的尺寸处理好照片,并按名称存放在指定目录下,然后在数据库中建立一个长度为256个字符文本型字段,将学生照片的路径和名称存放在该字段中,需要显示照片时,利用代码按指定路径和名称提取照片显示在指定区域。这样做的缺点是数据库只存放路径和名称,照片以文件形式存储,不利于管理,照片文件容易丢失,照片隐私也容易泄露,安全性和保密性差。

探讨一种能解决上述问题的方法,将照片存入数据库,作为OLE字段,然后根据需要从数据库中读取OLE字段显示在指定区域,或者将图片存入数据库的OLE字段,在程序和数据库之外照片是不可见的、并且不能对照片作任何操作。

程序执行效果如图1所示。

2 实现

2.1 在Access数据库中添加照片字段

在Access中创建一个学生信息数据库stu,并创建一个数据表book1,添加普通字段和“照片”字段(“OLE对象”类型),输入几条记录用于读写测试。

2.2 创建对话框

在VC6中创建一个基于对话框的应用程序,在对话框类的公有部分加上以下变量定义。

char*m_pBMPBuffer;

DWORD m_nFileLen;

HBITMAP m_hPhotoBitmap;

2.3 编写代码

3 结语

探讨的方法有效克服了传统照片存取方法的缺点,照片的安全性和保密性都很好。程序中大量使用了缓冲区对图像进行操作,提高了图像的显示和读写速度,避免了显示图像时的“刷屏”现象。由于Access数据库适合应用于中小型软件开发项目,在开发大型应用软件时,读者可以将Access数据库改成SQL Server数据库,其中的核心代码略作改动,就可以推广到各类大型信息管理软件项目中。

参考文献

[1]詹红霞.Visual C++6.0程序设计.西安电子科技大学出版社,2009.

[2]黄庆生.精通VISUAL C++6.0.人民邮电出版社,1999.

基于VC的PLC数据采集管理系统 篇7

PLC具有可靠性高,系统设计灵活,编程简单,易于安装,抗干扰能力强等优点,但单独的PLC不能提供良好的人机界面和数据处理能力[1]。在实际应用中,往往需要将一组PLC的数据存储、显示和打印出来并对PLC进行实时的监控,应用工业监控组态软件可以解决此类问题。当系统不是很大时,也可以采用VC等工具自己开发出上位机监控通信软件,相对于专业监控组态软件,它具有灵活、小巧、成本低等优点。正是基于现场的应用实际,使用VC开发出了一套满足现场需要的数据采集管理软件系统。

1 现场需求描述

车间有10台单独的试验台(由OMRON CJ1G-H PLC和触摸屏组成),负责检验4种类型制动阀产品的性能参数,并存入各自的DM,EM存储区中,现要求用一台工控机将各台PLC内的数据采集进去,实现产品信息的集中管理,可以灵活地查询、修改、添加、导出所有的产品信息,并能打印出各种指定格式的产品记录单和汇总单;同时需要对PLC工作状态进行监视。

2 系统的硬件构成

该系统的硬件由1台上位机(工控机),11个RS 232/RS 485转换模块(该系统选用1个FS-485G模块(需外接电源)连接工控机,10个UT-201型连接PLC),10根CJIG-H自由口到RS 232的转换电缆(该系统选用FS-CN26),10台CJIG-H PL及若干双绞线组成,其示意图如图1所示。

3 上位机软件的实现

3.1 通信部分的实现

3.1.1 功能描述

自动将现场10台试验台的紧急阀和主阀信息采集存入数据库;较实时地监视工控机与各试验台的通信状态和通信内容;并可设置COM口;配置待通信的试验台;编排试验员姓名与其编号的对应序列。通信部分的运行界面如图2所示。

3.1.2 上位机与PLC 之间的通信协议

该系统采用Host Link通信协议,上位机与PLC组成1∶N的Host Link通信系统。Host Link采用总线式通信方式,通信的主动权在上位机一方,上位机启动通信;首先向PLC发出FINS命令,PLC收到后会自动识别并加以执行,然后将执行结果返回上位机,上位机以帧的形式发送命令(命令码),PLC也以帧的形式回送执行结果(响应码)[2]。在通信时,PLC与上位机的通信参数(如节点地址、通信波特率、数据格式)应设为一致。上位机的通信设置在对应的VC编写的程序中进行,PLC的通信设置在其对应的系统设定区进行。FINS命令具体格式可在OMRON CJCS通信手册中查找。

3.1.3 上位机的通信编程

上位机通过串口与PLC相连,故使用VC的串口通信控件MSComm,完成对串口的读写工作。在使用MSComm控件进行读写前,必须先初始化该控件的一些属性[3],串口初始化代码如下:

该程序中使用事件驱动(Event-driven)的方法来接收数据,当串口接收缓冲区中有字符到达时,MSComm控件的OnComm事件处理函数捕获到相关的通信事件,并被自动调用,在OnComm函数中加入自己的处理代码,即可把PLC中传来的数据进行处理、存储等;通过MSComm控件的SetRThreshold函数设置产生OnComm事件之前要接收的字符数,在OnComm函数中用Switch语句,即可实现对不同的响应码的不同处理。

通过定时函数和循环控制函数,周期地依次向各个PLC发送读写PLC的FINS命令码,再在OnComm函数中加入对不同PLC响应码的处理函数,就可实时地完成对PLC数据的采集。同时根据响应码的内容监视PLC的运行状态。PLC自动将检验的产品性能数据连续存入D存储区中,当存储区满时自动从头循环覆盖存放,上位机定时将PLC的D存储区的产品数据读入、处理并存入数据库。该系统中上位机1 min内可依次读完10台PLC的各自1条产品性能信息,而PLC检验完1个产品需15 min左右,故可满足相对的实时性。为保证上位机完整且不重复地读取PLC的所有产品性能数据,在各台PLC中对每种产品都定义了A,B两个存储单元,A单元存放上位机读取过的最后一条信息地址,当上位机每读完1条信息,就由上位机对此单元的内容更新;B单元存放最新的产品信息存放地址,当PLC每产生1条新信息时,就由PLC更改该单元内容;上位机在读取产品信息前,先对比A,B单元的内容,决定是否进行数据读取和读取哪个地址的数据。这样即使上位机与PLC断开一定时间后,当重新连接上,也可将以前没读到的信息读入。程序流程图如图3所示。

在上位机中向PLC发送命令码时,必须加相应的FCS校验码。该校验码是8位的二进制数转换成的2位ASCII字符。这8位数据是将1帧中校验码前所有字符的ASCII码按位连续异或的结果,转换为字符时,按照2位16进制数转换成对应的数字字符。同时,当接收到PLC自动发回的响应码时,为确保接收数据的正确性,也必须用响应码中的FCS进行校验。系统中的发送命令码、接收响应码、生成命令码和检验响应码的代码如下:

(1) 发送命令码

(2) 生成最终命令码

(3) 接收响应码

(4) 检验响应码

3.1.4 设置COM口、配置试验台、编排试验员的实现程序

设置COM口、配置试验台、编排试验员的实现程序还需有以下功能:设置通信的COM口;配置实验台,根据PLC的工作状态,选择需进行通信的PLC;编排试验员,由于PLC中存放的是试验人员的工号,故需在程序中建立一张表将工号对应为姓名,再将该姓名存入数据库。

以上功能的实现,是通过在程序中写配置文件,将配置信息存入硬盘,程序启动时再从硬盘读取相应的配置信息。VC中用GetPrivateProfileInt和WritePrivateProfileString函数实现配置文件的读写。

3.2 查询打印部分的实现

用户登陆后,可对从PLC中采集到数据库中的数据进行查询、打印、删除、修改、备份,并将数据导出到EXCEL等,系统管理员可对一般用户进行相应的管理。查询部分的界面如图4所示。

3.2.1 VC与SQL Server 2000的连接

该系统中VC通过ADO访问数据库, ADO是最新的数据库访问技术,由3个主要对象Connection,Command,Recordset 和几个辅助对象组成[4]。Connection对象提供OLE/DB 数据源和对话对象之间的关联; Command 对象封装了数据源可以解释的命令;Recordset 用于表示从数据源中返回的表格数据[5];为了方便地在程序中访问数据库,需要进行适当的封装,该系统中定义了一个类ADOConn封装了对数据库的基本操作,在此后的数据库访问中可以方便地用ADOConn类的对象进行操作。

利用SQL Server 2000的企业管理器,在数据库中为PLC上的各种产品的检验报告各建立一张表,以存储PLC上传来的各项信息,此外还需建立一张用户表来管理用户的帐号和密码。然后在VC程序中对每张表定义一个类,类的成员变量对应表的列,类的成员函数是对成员变量和表的操作,以方便程序对这些表的操作。

3.2.2 各功能在VC中的实现

查询、修改、添加功能是在连接上数据库后通过执行相应的delete,insert,update语句来实现的;可在SQL Server 2000的企业管理企中设置备份调度来实现备份,也可在程序中写BACKUP DATABASE 命令来实现备份[6]; VC中实现数据库数据与Excel表格数据的互导,可以充分利用Excel处理数据的强大功能,增强程序的数据处理能力和与外部数据的交互性[7],程序中采用这种方式来导出产品数据汇总表,以便存档、复制和打印,具体的实现代码较长,读者可参照相关VC资料来实现。

VC中实现打印功能的方法有[8]:将数据导入到Excel,World中进行打印;安装第三方的打印控件(如水晶报表)实现;若是基于单/多文档的程序可通过其封装的打印功能实现。该系统中,通过将数据导入到Excel中的方式来打印汇总表,而各个产品的报告单则通过编写基于对话框的打印程序来打印,其方法是通过CPrintDialog类的GetPrinterDC函数得到打印机的设备环境,再通过CDC类的StartDoc,DrawText,SelectObject等函数绘制打印的图表并打印输出。系统中用CDC类的开始打印新页函数StartPage和结束当前打印页函数EndPage来实现连续打印多张报告单。

4 结 语

Windows环境下的应用程序编程是目前的主要趋势,PLC与上位机的通信是目前工业自动化发展方向之一[9]。利用Visual C++6.0和SQL Server 2000,在Windows XP 环境下开发了OMRON PLC的数据采集、存储和查询软件,其投资少,可靠性高,具有强大的数据库功能,现已成功运用于某厂的产品检验车间。若需要控制各PLC的设备,只需修改相应的命令码即可实现。

摘要:介绍基于VC++的工控机与多台OMRON CJIG-H PLC组成的数据采集管理系统的实现。用RS 485连接上位机与现场10台PLC,在上位机中建立数据库和安装数据采集管理软件,通过总线将各台PLC的数据采集到上位机的数据库中统一管理。采用VC设计上位机界面、通信程序和作为数据库管理的前台开发语言;后台数据库软件采用SQL Server2000;上位机与PLC之间采用OMRON的Host Link通信协议。将SQL Server 2000与PLC结合起来,弥补了PLC存储、管理大量数据能力不足的缺陷。通过此系统,用户可方便地在上位机中存储、查看和打印下位机(PLC)中的信息,监视PLC的工作状态。现场的运行结果显示该系统使用方便,性能可靠。

关键词:上位机,OMRONPLC,VC6.0,数据采集,通信

参考文献

[1]何献忠.用VB6.0实现计算机对S7-200 PLC的实时监控[J].现代电子技术,2007,30(7):189-190.

[2]徐世许,宫淑贞,彭涛.可编程控制器应用指南编程.通信.联网[M].北京:电子工业出版社,2007.

[3]王保印,康健,姜传国.用VC++6.0中MSComm控件实现多类型文件传送[J].吉林大学学报,2004,22(2):165-168.

[4]刘增军,向为,孙广富.基于ADO的数据库开发技术研究[J].科学技术与工程,2007,7(5):747-751.

[5]宋青,郑冰,李国辉.VC与数据库接口技术的研究[J].现代电子技术,2007,30(22):72-76.

[6]罗小平,王福兆.SQL Server数据备份策略的选择[J].计算机系统应用,2005(5):74-75.

[7]饶万成.VC++访问Excel的应用技巧[J].计算机与现代化,2007(4):64-65.

[8]明日科技.Visual C++程序开发范例宝典[M].北京:人民邮电出版社,2007.

上一篇:大学软实力下一篇:软件资源