解萍,王伟
(淮南师范学院 电气信息工程学院,安徽 淮南 232038)
基于C++、数据库与MATLAB协作编程的信号处理系统研究
解萍,王伟
(淮南师范学院 电气信息工程学院,安徽 淮南 232038)
把Visual C++,MATLAB和数据库合作编程整合在一起,可以使信号处理更加自动,高效。样本数据使用ADO方法存储在数据库中,可以通过COM接口提取出来,并利用Add-in技术被MATLAB计算与处理。Visual C++是完成整个程序的编程平台。
联合编程;ADO;COM
随着模型科学与技术的发展,计算机的研究与软件水平已经有了快速提高。工业生产与科学实验所需要的信号数据变得越来越复杂,而我们所使用的软件一般都是针对普通领域的,工作人员很难将它们整合到具有特殊需要的应用场景,而在这些场合中,通常需要准确的实际研究。
集成VC++、数据库和MATLAB,可以使信号处理高效且成本低。考虑到便捷与成本,选择Microsoft Access作为数据存储数据库,并使用ADO技术进行数据操作,这种技术也可以用在大型数据库管理系统如SQLSERVER和ORACLE当中。样本数据被存储在数据库当中,用户可以通过可视化界面进行索引、检测和进仓的一些操作,比使用文件系统更加先进。对于工程人员来说,MATLAB是一种有力的数据库,拥有多种工具箱。所需要的数据可以从数据库中提出来并为MATLAB处理,然后转换成所需的数据格式。用户可以使用他们自己的M型文件,并将它们集成到VC平台以进行数据分析与处理。所有的功能都可以通过程序来完成,从而大大提高了准确度,降低了时间消耗。
以前大量数据存储在相应的文件中,难以被其他程序索引和共享。为了克服文件系统带来的不足,可将数据存储在具有良性定义的数据库中,以适合使用ADO技术的信号处理系统。ADO是一种与语言无关的数据接入技术,所有的组件包含了标准的COM的介面系列。ADO是OLEDB的一个高层次的抽象,使客户端应用程序通过OLE DB接口来访问和操作数据。数据库访问结构如图1所示。
图1 ADO对象访问数据库的结构
为了使用ADO来访问数据库,应首先定义ADO对象模型。使用如下的经典对象:
1 Connection对象:代表一到数据源的开放连接。这是一个与数据源的唯一会话。基于集合、方法以及一个连接对象的属性,我们可以从应用程序建立一个连接到数据库,这是第一步骤操作数据库。
2 Command对象:定义一个特定的命令对数据源执行。使用命令对象,可以在一个Recordset对象查询数据库并返回记录,执行批量操作,或操作数据库的结构。它的语法与SQL兼容。
3 Recordset对象:代表从基表的记录集或整个一个执行命令的结果。Recordset对象包括所有记录(行)和字段(列)。可以操作的数据几乎完全使用在ADO记录集。这是一个记录对象和Fields对象聚合。
4 记录对象:代表了从一个记录集或数据。记录对象可能会直接返回一排Recordset或得到一个Recordset对象。
5 领域对象:代表了一个共同的数据类型的列。每个字段对象对应于Recordset中的列。
6 Parameter对象:代表与参数化查询相关的参数,或者输入/输出参数和存储过程的返回值。
图2 Object model of ADO
下面的源代码显示操纵与ADO在Visual C++方法的数据的步骤:
1 预处理:由于ADO使用标准的COM接口,我们必须在初始化程序,这是由调用AfxOleInit在CWinApp()来完成它的开始::InitInstance()中。
2 引入ADO库:必须加上 “C:\程序文件\共同文件\系统\msado15.dll”no_namespace重命名 (“EOF 分析”,“adoEOF”)'在 stdafx.h 为了生成两个C的msado15.tlh,ado15.tli++头文件编译。
3 数据库操作:首先要打开一个连接,可以配置连接属性,然后打开它。所有其他对象都可以用类似的方式。参考代码:
可以使用MAT-files,硬盘中数据的存储使用MATLAB数据文件格式,以方便在MATLAB环境中使用。MAT-files为在不同平台中交换数据提供了一种方便的高度可移植的机制。MAT-file文件格式公开,但是Mathworks公司因为其兼容性问题所以不建议用户开发自己的I/O例程文件。使用MATLAB提供的例程来完成数据的通信,下面的源代码显示了如何利用这一机制。
COM是一个与平台无关的、分布式的、面向对象的系统,用以创建可以交互的二进制软件组件。COM是一种标准,制定了一种对象之间互操作的对象模型与编程需求。一个COM对象是提供了一个或多个接口或方法用以成功访问对象数据的实体。自动化是一个基于COM的技术,允许在运行时或后置地绑定到一个对象的方法及属性并能够进行跨平台编程。自动化客户(端)是一个应用程序或编程工具,或者是一个脚本语言,以访问由其他自动化对象提供的服务;自动化服务器是一个应用程序或类型库,或者是其他的一些应用,使得其中的自动化对象可以被其他的应用程序用来编程、提供编程所需的工具或脚本语言。在本文所提的程序中,MATLAB就是一个自动化的服务器,它提供了支持VC的服务,将VC当作客户端,从而实现了
通过MATLAB实现了利用数据库技术与信号处理技术完成数据操作的功能,利用每种开发工具的特点,通过组合不同的平台来完成系统的功能。这种方法可以被广泛地应用于开发人员在系统研发初期的理论验证。然而由于使用了MATLAB库,所以源代码不能直接应用到最后的生产过程中,还需要做进一步的人工处理。
[1]刘惊雷.Visual C++实用教程[M].北京:电子工业出版社,2005
[2]求是科技.Visual C++6.0信息管理系统开发实例导航[M].北京:人民邮电出版社,2005
[3]黄维通.Visual C++面向对象与可视化程序设计[M].北京:清华大学出版社,2003
[4]Peter Rob.Database Systems:Design,Implementation,and Management(Fifth Edition)[M].Course Technology,2001
[5]Alan Gordon.The COM and COM+Programming Primer[M].Prentice Hall PTR,2000
[6]David Sceppa,David Sceppa.Microsoft ADO.NET(Core Reference)[M].Microsoft Press,2003
[7]Bob Beauchemin.Essential ADO.NET[M].Addison-Wesley Pub Co.,2002
TP392
A
1009-9530(2012)03-0036-03
2011-11-28
淮南师范学院科研项目(2010LK16);安徽省高校省级科学研究项目 (kj2012z371)
[作者简介]解萍(1979-),女,淮南师范学院电气信息工程学院讲师,主要从事数据库与信号系统研究。