摘要:介绍了基于VisualC++作为开发工具的第三方数据采集卡PCI-7422动态链接库 (.dl1) 的调用, 从而实现对PCI-7422的驱动, 完成数据采集工作。并以ODBC作为数据源的连接驱动器, 将数据自动录入数据库。本设计在液压试验台试验控制系统中得到实际应用, 取得满意效果。
关键词:VisualC++; 数据采集; 动态链接库; ODBC;
Abstract:On the basis of the MS Visual C++ developing tool, this paper provides a new kind of data-acquisiting card, which is of the third party and completes the job of driving the PCI-7422 to acquisit data excellently by using the DLL-calling technology.Further more, it also can automatic push data into database by taking ODBC as the connection driver and get a satisfying effect in the “Hydraulic experimental table”.
Keyword:Visual C++;data acquisition;dynamic link library;ODBC;
随着计算机技术的飞速发展和迅速普及, 数据采集系统在生产和科研中得到了广泛的应用。高可靠性是实现高速数据采集系统软件的基本要求, 对板卡驱动的深刻理解是设计数据采集程序的基本前提。此外, 如何解决数据的实时存储问题, 对于数据采集系统来说也是非常重要的。本文以Visual C++配合PCI7422数据采集卡设计的数据采集系统为例, 从板卡驱动、软件设计和数据库的配置等方面详细阐述了在Visual C++环境下实现数据采集所涉及到的一些技术, 并给出了示例程序。
1、系统硬件介绍
1.1、工作原理
系统硬件由微机、采集模块、控制模块和传感器组成。传感器从试验现场采集模拟信号传至采集模块, 采集模块将采集到的模拟信号转换为数字信号并传至计算机, 由VC++6.0编译的程序对采集到的信号进行读取和处理, 并通过控制模块对下位机进行控制, 再将数据记录到数据库中。整个系统原理框图如图1所示。
1.2、硬件介绍
本系统采用PCI7422的板卡, 该板卡可插入工业PC机或兼容机, 适用于各种工业现场的数据采集和测量。A/D采用高性能转换芯片AD1674 (BB774) , 地址译码电路采用GAL芯片。用户无需外配工作电源。PCI7422集成了12位32路A/D转换, 16路TTL电平开关量输入和16路TTL电平开关量输出接口板, 采用PCI+5V总线标准。其主要技术指标:通道数32路, 分辩率12位, A/D转换时间10us, 启动方式为程序启动, 无需外接电源, 直接插在计算机的PCI槽上即可, 该卡连续占用8个I/O地址, 即:BASE十OH~BASE+07H。用户在使用PCI总线数据采集卡时不必关心具体的板口地址 (地址管理由PCI协议分配) , 只调用DLL库即可。
PCI7422集成了A/D转换和开关量输入输出的功能, 将采集模块和控制模块的功能集中到了一块板卡上。
2、系统软件的设计
2.1、Visual C++程序流程图
上层应用软件开发使用Visual C++6.0, 软件部分主要包括数据采集、数据的处理和数据库的录入三部分。软件流程图[1]如图2所示。
2.2、PCI7422动态链接库的调用与释放
PCI-7422出厂时提供了由VC编写的动态链接程序 (PCI7422vc.dll) 。将PCI7422vc.dll copy到当前Windos安装的系统目录下或当前工作目录下, 设定HINSTANCEPCI7422dll=NULL, 然后定义指向动态链接库函数的指针, 如:typedef int (*AD) (unsigned char Mode, unsigned short port, long dly) , 用Load Library () 装载板卡的动态链接库PCI7422vc.DLL, 用Free Library () 卸载PCI7422vc.dll;用Get Proc Address () 获得动态库中的函数地址。如此即可调用DLL的函数。
实际程序中, 调用和释放动态链接库的过程如下[2]:
图2 软件流程图
2.3、数据库的配置
ODBC为用户提供简单、标准、透明的数据库链接的公共编程接口, ODBC数据库编程的最大优点是能以统一的方式处理所有的数据库。一个基于ODBC的应用程序对数据库的操作不依赖任何DBMS, 不直接与DBMS打交道, 所有的数据库操作由对应的DBMS的ODBC驱动程序完成。也就是说, 不论是Fox Pro、Access还是Oracle数据库, 均可用ODBC API进行访问。
用Visual C++应用程序访问数据库, 首先要创建与数据库的连接。由于Visual C++应用程序与创建数据库表的数据库管理系统是两个不同的操作平台, 要实现应用程序对数据库的访问, 就必须要为数据库表选择适当的数据驱动程序, 将Visual C++环境中的对数据库的操作转换为数据库系统可理解的操作。为了实现这个转换过程, Windows系统向用户提供了一个极为简单的接口—ODBC数据源。也就是说, 通过对ODBC数据源的设置, 给已创建的数据库选择适当的驱动程序, 并为数据库起适当名称 (DSN数据源名) 。在应用程序中就可以利用ODBC数据源中的DSN实现对已创建的数据库进行访问[3]。向应用程序中添加数据源名 (DSN) 的步骤如下:
首先建立一个Microsoft Access的数据库, 例如取名“Test”, 逐个向数据库中建立字段名、字段类型和字段宽度。
在Windows XP环境下, 打开【控制面板】里的【管理工具】, 双击【数据源 (ODBC) 】, 在用户数据源列表中选择“MS Access Database”, 创建Access数据源, 单击【配置】按钮, 在【数据源名】文本框输入数据源名, 例如“My Data Base”, 【数据库选择】里添加建立好的“Test”数据库。至此, 数据源 (ODBC) 就配置好了。
在Visual C++应用程序创建时要注意, 在向导的第二步对话框中选中“Database view with file support”选项, 单击【Data Source】按钮, 在弹出的“Database Options”对话框的ODBC数据源选项中选中“My Data Base”。至此, 一个基于ODBC数据源的Visual C++应用程序便创建了。在程序的“Class Wizard”对话框的“Member Varizbles”页面中, 可以添加数据成员变量, 并与数据库表字段相关联。
3、结束语
本文介绍了用Visual C++6.0配合第三方数据采集卡PCI7422数据采集系统的设计, 动态链接库的调用以及将数据自动录入数据库的方法。并给出了在Visual C++中调用动态链接库 (DLL) 方法和ODBC数据源配置的应用实例。该系统注重数据快速存储的研究。Visual C++在开发应用中, 可以实现所有的高级编程语言可以实现的功能。可以方便地编写人机交互的程序来实现对计算机及外部设备的控制, 这在工程应用中非常有意义[4]。
参考文献
[1]杜玉玲.基于LabVIEW和PCI-7422的数据采集系统设计[J].淮海工学院学报, 2004, 3.
[2]林青松.Visual C++案例开发[M].北京:中国水利水电出版社, 2005.
[3]梁普选.Visual C++程序设计与实践[M].北京:清华大学出版社, 2005.
[4]郑阿奇.Visual C++实用教程[M].北京:电子工业出版社, 2000.