基于CVI的数据库与MATALAB应用
2020-03-02匡伟男袁钾光
匡伟男 袁钾光
摘 要:利用CVI的平台对SQLServer数据库与MATALAB的调用,实现了数据的动态存储与利用MATALAB对数据进行处理的功能。
关键词:CVI;SQLSever;MATALAB;脚本;ActiveX控件
中图分类号:TP311.5 文献标志码:A 文章编号:2095-2945(2020)05-0176-02
Abstract: This paper using CVI platform to call the SQL Server database and MATALAB, thus realizing the dynamic storage of data and the processing of data.
Keywords: CVI; SQLSever; MATALAB; Scripts; ActiveX controls
引言
在自动化生产中特别是在上位机的开发中,经常遇到一些场景需要对大量的数据进行储存与处理。如果让上位机自己开发底层的数据存储与处理程序,则势必会加大工作量,且“不专业”的数据处理方式可能会占用相当大的资源,使得正常处理流程受到影响。所以,本文从“专业的人”干“专业的事”角度出发,利用CVI 强大的支持库对SQL Server与MATALAB进行调用来对数据进行处理。
1 利用CVI调用MATALAB与数据库
LabWindows/CVI 是NI 开发的虚拟仪器开发平台,包含了集成式开发环境、交互式编程方法、简单直观的图形用户界面设计和强大的图表功能[1]。实现LabWindows/CVI 和MATLAB 调用的关键是其数据和命令的交换,LabWindows/CVI 和MATLAB都提供了与外部程序接口的组件[2],使得这种调用成为可能。
NI 的LabWindows/CVI SQL 工具包提供了一套简单易用的工具,使用户能够快速链接本地或者远程数据库,并通过结构化查询语言(SQL)编程,执行诸多常用数据库操作[3]。本文是将利用SQL Server将数据库建立在本地,通过CVI访问所建立的数据库,对数据库进行简单的操作。
在本文中,调用方法主要如下所示:
1.1 创建ActiveX支持库调用MATALAB
在菜单栏选择Tool-> Create ActiveX Controller->Matlab Application(Version 8.6) Type Library,然后根据向导选择支持库保存的文件路径。完成后会在库中自动生成一个MATALAB 2015b的支持庫和五个相关的拓展名为.c .fp .h .obj .sub的文件,将后缀为.fp的文件需要被添加到自己的工程目录中。
1.2 利用CVI访问SQL Server数据库
SQL Server建立数据库,创建用户并创建一个新的表,在CVI中安装SQL数据库支持工具NILWCVISQL220,该工具包支持对多种数据库的访问与使用。
1.3 支持库中的接口函数
接口函数是支持库封装的最基本函数,在应用中只需要按其要求调用,知悉其作用而不用去管内部实现过程。本文只给出几个重要的接口函数的参数说明,其余的接口函数使用,读者可调用函数面板查看使用指南。
(1)MLApp_NewDIMLApp,该函数创建一个Matlab的句柄。(2)MLApp_DIMLAppExecute,该函数执行一条Matlab命令。(3)MLApp_DIMLAppQuit,该函数退出Matlab。(4)DBInit,该函数对数据库进行初始化操作。(5)DBConnect,该函数设置连接参数,指定数据库类型,文件路径,登录id,密码等。(6)DBBindColChar,该函数对数据库中的列进行绑定。(7)DBFetchNext,该函数顺序得到数据库中的下一个记录。
1.4 函数调用实例
在CVI上建立调用M脚本的运行环境,按照脚本语言编写简单的脚本,在CVI中调用。以下主要给出打开matalab与执行脚本的代码,不对整个工程逻辑与子函数进行赘述。实现打开matalab功能,并最大化打开的matalab窗口。得到句柄后可进行对MATALAB的操作,运行单个命令函数代码,如图1所示。
本函数的调用在“运行脚本”的回调函数中,其中函数RunMatlabCommand为主要对1.3节函数DIMLAppExecute封装。
由执行结果可知,本工程顺利执行脚本中所写脚本,画出了3D测试效果图,实现了由CVI调用matalab的过程。
2 利用CVI混合调用数据库与MATALAB
2.1 建立工程
将上述库建到同一个工程中,预期实现由CVI程序产生一个正弦波曲线数据,将产生的数据保存到文件中,并将保存的文件的路径与日期写到建立的数据库中,在matalab中实现对曲线数据的重绘。
2.2 实现过程
在TABLE控件中,建立其点击的回调函数,在回调函数的实现中获取点击处的单元格的值,此值为一个文件名,将此文件名调用MATALAB命令行输入到MATALAB中,预先建好一个M脚本文件,写好需要画图的脚本实现,只需将脚本中的参数由命令行中先指定即可实现预期效果。重要的函数实现如图2所示。
2.3 实现结果
可以看到点击一个文件名时MATALAB自动的对数据进行重绘,绘制出来的图像与预期一致,如图3所示。
3 结束语
通过这种混合调用的方式,能够大大减少工作量,也能够让工作变得更加直观与灵活。本文只介绍了CVI对数据存储与处理两方面的软件简单调用,读者可在本文基础上进行更深入的使用或是对其它需要的软件进行调用。
参考文献:
[1]王晓岗,吴得光.LabWindows/CVI环境下调用Excel文档的实现方法[J].甘肃科学学报,2013,25(2):101-104.
[2]刘君华.基于LabWindows/CVI的虚拟仪器设计[M].北京:电子工业出版社,2003.
[3]苏少雄,郑宾.LabWindows/CVI下基于ActiveX技术的Excel调用[J].测控技术,2018,37(5):128-131.