《基于虚拟仪器平台的凸轮检测数据处理系统的设计毕业论文1.doc》由会员分享,可在线阅读,更多相关《基于虚拟仪器平台的凸轮检测数据处理系统的设计毕业论文1.doc(47页珍藏版)》请在三一办公上搜索。
1、基于虚拟仪器平台的凸轮检测数据处理系统的设计摘 要以往的对数据处理分析中,都会存在灵活性不强而且成本较高等缺点。本次论文研究的课题是结合工厂生产要求,设计基于虚拟仪器对检测数据处理的系统。不但提高了灵活性而且降低成本更具有实时性等优点。工厂机械生产中,通常会对机械进行凸轮检测,这时会产生大量的数据,而且会对同一型号或同一参数进行多次检测。这便造成时间的浪费,同样,久用的机械设备也要进行检测,如果没有参数作为参考,可能耽误生产。本设计主要以两个工作任务来解决这些问题,一是通过对凸轮检测出来的数据进行处理,研究一种在Lab WindowsCVI平台能对Microsoft Access存储的数据进行
2、调用,对历史数据的存放和读取以及新数据的写入。二是利用Lab Windows/CVI与武汉亚为科技的USB Adio模块实现数据传输,通过另一台检测装置对数据的处理。实践表明该方案对于数据管理切实可行。关键字:虚拟仪器;设备驱动、数据库 USB AdioAbstractPrevious analysis of data processing, the high cost will still exist and flexibility in faults. This paper research topic is combined with factory production require
3、ments, the design of detection data processing based on virtual instrument system. Not only can improve the flexibility and reduce the cost more has the advantages of real-time performance.Factory machinery production, usually to CAM mechanical testing, then will produce large amounts of data, and m
4、any times for the same model or parameter detection. It will cause waste of time, again, a long time with the machinery and equipment also want to test, if there are no parameters for reference, may hold up production. This design mainly by the two task to solve these problems, one is to process the
5、 data detected by CAM, research in Lab Windows/CVI platform can call on Microsoft Access the data stored on the storage of historical data and read and write new data. 2 it is using Lab Windows/CVI and RS232 serial interface for data transmission, through another testing device for data processing.
6、Practice shows that the scheme for data management is feasible.Key words: virtual instrument; Device drivers, and the database,USB Adio目录第1章 绪论11.1题目介绍11.2 虚拟仪器对检测数据处理的演变与发展11.3主要任务2第2章 工作内容42.1工作内容与实施步骤42.2设计流程图5第3章 凸轮检测数据的提取与存储63.1凸轮检测装置63.1.1 检测系统的构成63.1.2系统的工作原理63.1.3系统的特点63.1.3原始凸轮廊线计算的数值方法63.1
7、.4 基本方程:63.2 凸轮的误差分析73.3 函数逼近和曲线拟合73.4 多项式曲线拟合83.5 正交多项式曲线拟合83.6凸轮升程83.7 凸轮检测的其他参数9第4章 CVI软件设计与功能的实现114.1 Lab Windows/CVI界面设计114.1.1 Lab Windows/CVI的主要功能114.1.2 建立用户界面114.2 CVI与数据库144.3 Lab Windows/CVI数据调用154.4 实现对数据库数据提取功能184.4.1 实现ODBC数据源查询、数据库查询、显示表testres的内容184.4.2 数据记录的操作204.5 Lab Windows/CVI历史
8、数据的处理214.6关于Lab Windows/CVI应用程序21第5章 串行接口功能设计及实现235.1 USB ADIO模块的介绍235.2 USB ADIO模块设计245.2.1 RS232通讯协议基本结构245.2.2 USB ADIO模块界面设计265.3 Lab WindowsCVI串行接口连接275.4功能实现出现的一些问题28第6章Lab WindowsCVI图像显示及分析29第7章 总结与展望32谢辞33参考文献34主要程序清单35CVI操作界面部分程序清单35USB ADIO模块连接程序清单:39第1章 绪论1.1题目介绍20世纪80年代以后,电子技术和计算机技术的高速发展
9、催生了新的对数据处理的方法、理论和仪器的出现。这些新的仪器技术在许多方面冲破了传统仪器的概念,测量仪器的功能开始发生了质的变化,在这种背景下,虚拟仪器应运而生。虚拟仪器借助于计算机的软硬件平台建立的测试与控制系统。通过虚拟仪器,用户可以根据自己的需求设计自己所需的仪器系统并对检测出来的数据进行处理,仅仅通过修改软件就能改变仪器功能,以满足多种多样的应用需求。Lab Windows/CVI是虚拟仪器语言中应用最普遍的、最有代表性的软件平台。Lab Windows/CVI以C语言为基础,采用图形化的编程方式,无须掌握复杂的编程技巧便可完成程序设计,操作简便却功能强大,能够满足用户进行数据采集、数据
10、处理、数据分析和数据存储的需求。设计具有高精度、灵活性、可移植性、有强大的分析处理及存储能力的数据分析系统具有实际意义。通过对虚拟仪器的了解和研究,本文提出了基于虚拟仪器平台的凸轮检测数据数据处理系统的设计。文中首先对虚拟仪器的原理、特点、应用进行了分析,在此基础上阐述了数据采集系统的设计思想,并分别给出了系统设计的软件平台与数据调用和利用串行接口实现检测装置对Lab Windows/CVI数据访问。软件设计在NI公司开发环境下进行。作者利用Lab Windows/CVI编写了系统的应用程序,实现了包括数据采集、数据处理与分析、数据显示与存储在内的多个模块的功能,实现了对信号的滤波等处理,界面
11、直观。1.2 虚拟仪器对检测数据处理的演变与发展传统的电子测量仪器、测试系统由信号采集、数据处理与分析和处理结果的最终显示三部分组成放在一个仪表机箱内,这三部分都是用电子线路来实现的,即都是采用硬件来实现的。传统仪器经历了从模拟仪器到数字化仪器的变革,随着现代科学技术和生产的不断发展,测试项目日益增多,测量范围日渐扩大,对测试系统在精度、速度及功能方面有了更高的要求,这就促使我们要不断的改进和完善测量仪器和测试方法,组建自动测试系统,使测试仪器逐步向智能化、自动化和虚拟化发展演变。智能仪器是将微处理器置入测试仪器,使其能进行自动测量,并具有一定的数据处理能力。它的全部功能都是以硬件的形式存在,
12、并通过键盘和鼠标来实现。近年来的一些智能仪器由于语音技术的应用实现了测量结果的自报功能,有的增加了触摸屏功能,但无论是开发还是应用,都缺乏灵活性。随着计算机技术、数字信号处理技术的进步,实现各种信号处理功能的软件算法精度越来越高,速度越来越快,在仪器的数据处理与分析部分,用软件代替硬件成为可能,即算法代替电子线路,能够实现传统仪器的信号处理功能。同时,处理结果的最终显示原本就是计算机的长项,这样吧传统仪器的后两部分用计算机软件来实现而不再采用硬件来实现,就形成了所谓的虚拟仪器。但是虚拟仪器的面板显示在计算机的屏幕上,仪器的操作是通过鼠标选中不同的按键和旋钮来完成的。根据实际生产的需要,采用不同
13、的软硬件组合,用户就能在屏幕上定义自己的仪器,生成各种不同仪器面板。传统的独立仪器由制造商来定义它的功能,而虚拟仪器完全由用户自己来定义仪器的功能,虚拟仪器是一种功能意义上的仪器是传统仪器观念的一次巨大变革,将代表仪器未来发展的一个重要方向。目前,虚拟仪器的应用受到了一定的限制。这是因为面向微波、通讯等领域的专用测试仪器,包括通用仪器的高端产品一直以来是台式仪器垄断着市场,相应的模块仪器产品为数不多。不过,近年来已有多家仪器厂商正在研制、开发面向测试高端领域的宽带、高速、复杂的模块化仪器。由于虚拟仪器本身是以计算机为平台,具有方便、灵活的互联能力,随着通信技术、总线技术和网络化虚拟仪器的出现是
14、一种必然。除了必要的硬件接口支持,虚拟仪器软件开发平台使用户可以借助Windows系统远程桌面、Lab Windows/CVI串口通信,可实现远程测试、诊断和维修。1.3主要任务本次设计的目的是对出厂机械凸轮检测出来的数据进行处理。设计中的凸轮检测是以盘形凸轮为例。如果产品存在不合格,长时间运作会使电动机瘫坏,甚至使工作人员得不到人身安全。数据是通过盘形凸轮检测装置检测出厂机械获得的,并将数据送入微机RAM内存储,进行转换。能够实现存储在Access中,并能通过Lab Windows/CVI调用函数。然后通过波形图的比较,如果波形有较大的差异,这时就需要工作人员进行对机械的重新维修。最后利用U
15、SB ADIO模块实现一台检测装置对计算机数据的访问并实现数据处理功能,这就是我们常说的远程控制,这样就不必看着电脑点着鼠标。方便切快捷的实现功能。第2章 工作内容2.1工作内容与实施步骤本次设计主要从三个方面着手,第一是Access对采集来的数据进行存储,我利用检测到的数据进行整理,对两个数据进行存储一个是极坐标的角度,另一个是极径。极坐标角度的范围是0360度。利用参数公式运算,得到升程值。将获得的数据存储到Access中。对于数据库的存储,最新的数据库管理系统(DBMS)是将数据保存在表的形式。通过记录和字段的表结构构成二维形式实现字段(包括:记录称为行,称为列)。数据库中每个表必须有一
16、个唯一的名称,每个表中字段也必须有一个唯一的名称。每个领域都有其自己的数据类型,程序必须明确所有字段的数据类型,可以指定程序中的一个字段对应类型的变量,不然访问数据库数据类型会有不匹配错误的发生。使用Microsoft Access创建数据库比较简单,具体实现步骤如下:打开软件,创建一个空数据库,名为TestData.MDB,然后用表设计,创建一个数据库表。将需要创建一个表的列名依次填在写字段名称中,如极坐标角度,极径。并且根据数据填写的指定数据类型。如果需要对字段进行说明,则在最右边一列添加必要的说明文字。每个字段的属性有一系列需要设置,如字段大小、格式和默认值。用户可以根据需要进行设置。新
17、创建的数据没有任何记录在表中,开始测试后,测试程序获得的数据将填写相应的表格中。下面将进行第二方面设计。利用虚拟仪器Lab Windows/CVI设计出来的界面,对存储在Access中的数据进行调用。Lab Windows/CVI并没有直接通过标准函数库提供数据库的操作函数,也没有在工具包中包含数据库的驱动器。要在Lab Windows/CVI的环境下使用数据库,必须先安装CVI SQL Tookit工具包。工具包中一共包含了11个子类的函数库,这些数据库编程API使Lab Windows/CVI编写的上层应用程序对数据库的访问得以实现。对界面编程的具体步骤为:制定程序设计的基本方案。根据任务
18、确定程序的基本框架,其中包括程序界面和程序中所需要的函数等。创建用户图形界面。更具第一步制定的方案创建用户图形界面及回调函数名。程序源代码的编制。让计算机生成程序代码及回调函数的基本框架。添加函数代码,完成代码的编制工作。工程项目的完成。编译并调试程序,把头文件,用户图形界面文件,源代码文件添加到项目文件中去,完成整个程序的编制。虚拟仪器将接收到信息,并且将获得数据转化为波形的形式在界面中显示,接下来就是对数据进行分析,并设计出利用USB ADIO模块实现计算机与检测装置的互联。也就说,通过一台检测装置,利用串行接口,将计算机内的数据传输到检测装置中,这时的检测装置也能够实现数据以波形图显示。
19、本人的计算机是联想G470版,只有USB端口和VGA端口。图2-1 USB Adio模块2.2设计流程图本次设计的具体流程图如图所示:USB调用数据一台计算机中LabVIEW虚拟仪器存储于access中的相关数据检测设备图2-2 设计流程图第3章 凸轮检测数据的提取与存储3.1凸轮检测装置3.1.1 检测系统的构成 检测系统是由三部分组成:凸轮实验台;传感器;Apple-II计算机及输出系统等外部设备。凸轮试验台是用DY-2型手工检测台改装而成。而传感器则包括光电脉冲发生器和带磁栅数显表的磁尺。3.1.2系统的工作原理凸轮试验台输出的凸轮角位移和从动件线位移Si,通过观点脉冲发生器和磁尺发生的
20、信号进入磁栅数显表,得到凸轮单位转角(0.5)从动件位移量Si,用汇编语言编制的程序将数据送入内存储,并进行转换,然后又输出系统间测量值输出或被调用。3.1.3系统的特点 该系统与国内现有的检测装置比较,不但具有速度快、效率高、操作简便、不需要寻找凸轮升程的起点位置的有点;而且测得的数据可存储在磁盘中,随时可调用或进行处理。3.1.3原始凸轮廊线计算的数值方法 若被测盘形凸轮机构的从动件型式与检测装置相同,即直动对心滚子从动件,则按检测系统采集的数组用数值方法可直接计算出廊线和刀具中心轨迹坐标,并由绘图仪绘出去廊线图图3-1 凸轮廊线图3.1.4 基本方程:理论廊线方程:实际廊线方程:数控铣床
21、铣刀中心轨迹坐标方程:压力角和曲率半径校核:式中:滚子半径;刀具半径;凸轮的法相角3.2 凸轮的误差分析检测装置的测量()含有误差,主要凸轮加工误差,检测装置的制造误差以及测量仪表的误差,它们的和为=+; 从而导致凸轮从动件明显的类加速度误差为凸轮检测时必须设法消除误差。为此,除提高检测装置和仪表的精度外,拟用函数逼近的方法求出凸轮从动件运动的近似方程式,以提高检测的精度,同时求的其差值,还凸轮的本来面貌。3.3 函数逼近和曲线拟合(1)按测量值()寻出凸轮从动件的近似运动函数来反映自变量和因变量间关系,使其误差或它的平方和为最小,即(2)被测凸轮从动件逼近函数的形式选择有Weierstras
22、s定理:设f是闭区间0,1上的任一连续函数,为任一整数,则存在一多项式P,使不等式|f(x)-P(x)|7时,系数矩阵容易出现病态,使求解发生困难。而正交多项式则可避免上述缺陷,它的表达式为式中,是正交函数,即其中,wi为权系数,通常取1 按式求误差平方和极小值的条件,并利用正交原理,求的:3.6凸轮升程升程是凸轮转一圈最高点和最低点的距离,因为要旋转,必须有个轴带动它,那个槽就是键槽(固定轴用的)红色方块是旋转到最高点,黑色方块是旋转到最低点,如图所示图3-2 升程3.7 凸轮检测的其他参数假设动摆杆的运动规律为正弦加速运动,表达式为:推程:回程:式中:为从动摆杆角位移;为从动摆杆最大角位移
23、;为凸轮运动角度;为凸轮回程运动角;为凸轮推程运动角。凸轮与从动摆杆的运动轮廓曲线是一对共轭曲线,在一直摆杆规律、凸轮的运动和从动件轮廓曲线的条件下,利用共轭关系变能求的凸轮理论轮廓曲线,如图5-1所示,以凸轮回转中心为坐标原点,从动件摆杆回转中心,凸轮基圆半径r,摆杆l。摆动从动件的处事位置在行程起始位置时的,凸轮逆时针旋转角度后,凸轮与动件接触点为点A。利用反转法求凸轮轮廓A点,可以看成绕反转角度到达位置,在摆动角度到达位置。也可看成绕点反转(+)角度,到达绕点,再由平移到位置。设置A点坐标可用一次坐标旋转和一次坐标平移变换得到: 整理出出来的数据存储在数据库中,如图 图3-3(a) 图3
24、-3(b)将图3-3(b)中字段名称设置为关键字,字段1对应的是极坐标角度,字段2对应的是极径,利用Access将图3-3(a)中字段1数据与图3-3(b)中字段名称进行互联,即可在Access中点击查询便可以实现简单的查询功能,但这需要手键入极坐标角度值。第4章 CVI软件设计与功能的实现4.1 Lab Windows/CVI界面设计4.1.1 Lab Windows/CVI的主要功能Lab Windows/CVI是基于C的集成软件开发环境,主要用于检测和控制相关领域如软件开发,调试,具有以下功能:1标准ANSI C程序编辑、编译、链接和调试;2工程文件管理;3包括各种各样的仪器控制软件方案
25、;4包含一个全面的数据采集、分析和图形显示工具;5可以自动生成的函数面板和调试软件包在相应的功能,实现代码自动生成;6一个方便的用户界面生成工具,各种用户界面配置和管理资源;7仪器驱动程序向导,可以快速生成一个标准的虚拟仪器驱动程序软件;8外部模块广泛的支持能力;9在线帮助;4.1.2 建立用户界面从Project窗中选择:FileNewUser Interface(*.uir)创建一个用户图形接口文件(*.uir)。下图就是本程序应该创建的UIR界面:图4-1 Lab Windows/CVI用户界面创建下列控件元素以及修改其属性:创建一个string ,修改其属性如下图所示:图4-2 str
26、ing设置创建一个BinarySwitch, 修改其属性如下图所示:图4-3 quit按钮设置创建一个放大控件, 修改其属性如下图所示:图4-4 控件设置创建一个极距和角度调整控件, 修改其属性如下图所示:图4-5 调整设置图4-6 角度的设置这些控件的选择都是在界面中鼠标右击选择控件中获得的。选择:FileSave 保存UIR文件,命名为EasyIOSample.uir。设置面板和菜单属性的函数分别是Set Ctrl Attribute函数和Set Menu Bar Attribute,获取面板和菜单属性的函数分别为Get Panel Attribute和Get Menu Bar Attri
27、bute。当制作完了用户界面,单击用户界面编辑窗口的Code菜单生成出相对应的代码。 “产品序列号”即为型号的选择,这是个write属性可以点击从文件中获取。坐标线选择按钮是为了方便工作人员进行波形的比较。4.2 CVI与数据库本次设计的数据库采用Access2003,利用这款软件作为数据库存储数据比较容易,并且该软件本就容易操作。Lab Windows/CVI并没有直接通过标准函数库提供数据库的操作函数,也没有在工具包中包含数据库的驱动器。要在Lab Windows/CVI的环境下使用数据库,必须先安装CVI SQL Tookit工具包。工具包中一共包含了11个子类的函数库,这些数据库编程A
28、PI使Lab Windows/CVI编写的上层应用程序对数据库的访问得以实现。虽然Lab Windows/CVI中通过Microsoft的ADO(活动数据对象)接口可以支持多种数据类型的数据源,但是最常使用的还是ODBC数据源。ODBC实际上是一个函数库,它提供了一个连接到底层数据库系统的公共应用程序接口,它通过一个库驱动程序与底层数据库进行通信。在开发数据库应用程序时无需考虑它是如何工作的,只需要为应用程序指定一个数据源,将数据源文件配置成已创建好的数据库文件,即可以在Lab Windows/CVI中利用SQL语句访问由第三方工具制作的数据库。因此,信号处理自动测试系统如果要实现对数据库的访
29、问,必须先指定一个数据源,数据源命名为“TestData”,数据源文件配置成“TestDatamdb”。将数据源成功添加到Windows操作系统后,就可以在Lab Windows/CVI中对数据库中的5个表进行查询、修改等操作了。运用VISA 应用程序接口可以实现四通道多点采样数据库存储,采样数据精确到小数点后2位,采样数据以字符串的形式存储在Data Acquisition Library(数据采集函数库)中。这里各通道的采样均设为1000Hz,被采样信号的最高频率低于500,采样率不能低于1000Hz。因为数据中,极坐标取小数点后两位,所以在接下来的RS232当中会取整乘以100,8个字节
30、的形式传送。4.3 Lab Windows/CVI数据调用Lab Windows/CVI 的函数库(Library) Lab Windows/CVI 其强大功能的所在就是基于其非常丰富的库函数。Lab Windows/CVI 所提供的库函数从用户图形界面,数据采集,数据分析,仪器控制 到现在Internet时代的TCP。所以说Lab Windows/CVI 在测量领域成为先锋的同时又与当前时代的新科技保持了同步。下面我们就来谈谈Lab Windows/CVI 的函数库,我们把Lab Windows/CVI 的函数库分为了五个大的方面,各个方面又分成了不同的小类:数据采集方面(Data Acqu
31、isition)一共7个库: Instrument Library: 仪器驱动库 GPIB/GPIB 488.2 Library: 仪器控制函数库 Data Acquisition Library: 数据采集函数库 Easy I/O for DAQ : 易用的数据采集函数库 RS 232 Library : RS 232 库 VISA Library : VISA 库 VXI Library : VXI库 数据分析方面,两个库: Formatting and I/O Library : 格式化以及输入输出库 Analysis Library: 分析库 或者Advanced Analysis L
32、ibrary: 高级分析库 数据显示方面: User Interface Library : 用户接口库说明: 用户接口库中提供了许多用于与面板上各种控件元素打交道的函数,通过这些函数你可以非常容易的把一个采集来的波形画到Panel 的Graph 上或删除Graph 上已画的图形;得到Panel上某个控件元素的数值以及把某个数值写到Panel上的某个控件元素上去(亦就是改变该控件元素的值);修该Panel上控件元素的属性。总之,只有熟练掌握了用户接口库函数后才能使创建的用户图形界面正正的动起来。网络,通信与数据交换方面,四个库: DDE Library : 动态数据交换库 TCP Librar
33、y: TCP库 Active X Automation Library: Active X自动化库 DataSocket Library: DataSocket库 其它方面: ANSI C Library: 标准C 库点击库Library中.Net Library图4-7 .Net Library选择点击Select图4-8 文件类型选择选择Select项,出现如下图界面:图4-9 文件名称选择获取文件如图图4-10 获取文件并定义文件名4.4 实现对数据库数据提取功能4.4.1 实现ODBC数据源查询、数据库查询、显示表testres的内容1)历史数据的写入当一台出厂机械检测之后,需要将机械
34、凸轮检测出来的参数写入数据库,即需要在数据库中增加新的记录,程序段中的变量idvalue为整型变量namevalue、timevalue、addressvalue、typevalue、resultvalue是从面板文本框中取出的字符类型的值。在插入数据之前,首先判断主键JD有没有重复,如果有重复,则出现提示信息。其中idvaluel为面板中将要存储凸轮检测出来的极坐标角度,idvalue为数据表中已经存在的参数。int hdbc;/声明数据库连接句柄hdbc=DBC0nnect(“DSN=erming”) /连接数据源hmap = DBBeginMap(hdbc);/创建一个数据库映射关系DB
35、MapColumnTolnt(hmap”ID” &idvalue,&idstatus);hstmt= DBActivateMap(hmap, “em”) /激活映射while(DBFetchNext(hslmt)!=DB_EOF) /定位数据指针 if (idvalue=idvalue1) mainkeyflag+:/主键标志位if(mainkeyflag = 1) MessagePopup(”提示”,”主键不能重复!请修改参数,使其唯一!” );return 一1:elsereturn O:如果主键不重复,则插入对应的凸轮检测数来的数据。在本次设计中InitDataSource、GetDat
36、abaseInfo、GettableInfo、GetCollumInfo和showTable函数分别实现对ODBC数据源查询、数据库查询、表testres内容的显示,这里只讲述如何实现显示表testres中内容。2)数据的查询建立查询语句这里采用CVI SQL Tookit子类提供的显示SQl查询的方法:Sprintf(buf,“SELECT * FROM %s”,SelectTable);Hstmt=DBActivateSQL(hdbc,buf);这里buf的内容即“SELECT * FROM testers”,表示查找testres表的所有字段。然后再进行操作,讲字符串content0绑定
37、到字段UUT_NUM,将浮点变量dou1、dou2分别绑定到MEAS1、MEAS2:DBBindColChar(hstm,1,11,content0,&collumata,”);DBBindColFloat(hstm,2,&dou1,&collumsta);DBBindColChar(hstm,3,&dou2,&coullumsta);最后再添加到列表中:clearListCtrl(panel2,PANEL_2_LISTTABLECONTENT);while(DBFetchNext(hstmt)=DB_SUCCESS) sprintf(buf,” %s %9.3f %9.3f”,content
38、0,dou1,dou2); InsertlistItem(panel2,PANEL_2_LISTTABLECONTENT,-1,buf,buf);相关程序定义如下:int hdbc;/声明数据库连接句柄hdbc=DBConnect(“DSN=erming“ ) /连接数据源PromptPopup ( “查找“,”请输入您所要键入数据参数:“ ,responsebuffer,10);hmap = DBBeginMap (hdbc);/激活SQL连接DBMapColumnTolnt(hmap,“ID”,&idvalue,&idstatus);/将数据库中的字段放到相对应的类型映射中。hstat=D
39、BActivateMap(hmap, “em“);/激活映射if(total0)whiIe(DBFetchNexl(hstat)!=DB_EOF)if(strcmp(responsebuffer,namevalue)=0)SetTableCellVal(panel35,PANEL_35_TABLE,MakePoint(1,i)idvalue);/将查询结果放人对应的表格单元中SetTableCellVaI(panel35,PANEL35JABLE, MakePoint(2,j),namevalue);SetTableCeIIVal (panel35, PANEL_35_TABLE。 MakeP
40、oint(3,i),timevalue);SetTableCellVaI(panel35,PANEL_35_TABLEMakePoint(4,i),addressvalue);SetTableCellVal(panel35,PANEL_35J ABLE,MakePoint(5,i),telvalue);i+:DBDeactivateSQL(hstat);/解除SQL检索语言DBDisconnect(hdbc):/断开与数据库的连接若要创建带参数的数据库查询,不能直接利用参数进行查询,必须首先准备执行SQL查询声明,然后创建一个对应参数预备查询方式,最后执行SQL语句。hstat= DBPrep
41、areSQL(hdbc,“DELETE FROM WHERE ID =?” ):DBCreateParamlnt(hstat,“”,DB_PARAM_INPUT,idvalue);DBExecutePreparedSQL(hstat);4.4.2 数据记录的操作对数据记录的删除比较简单,直接把光标定到指定的位置,然后调用DBDeleteRecord函数即可。注意删除记录后必须查询记录数,如果记录已空,则应该使“删除”和“更改”的操作按钮编程无效状态,禁止删除和更改的操作,否则会出现操作的错误。实现数据的添加,首先弹出录入心的数据记录的窗口,按顺序输入各个字段的取值,各个字段间以空格隔开,获取录
42、入的字符串。添加记录时,首先通过DBCreateRecord函数创建一个记录,然后由FronBufToPara函数分解获得的字符串得到各个字段的取值,并赋给绑定到各个字段的变量。FronBufToPara函数实现由获取的字符串分解到表对应3个字段的取值。最后由DBPutRecord函数将创建的记录添加到表中。只要添加了数据记录,就应该允许删除和更改操作,使“删除”和“更改”的按钮有效。可以通过单击“更改”按钮或双击一个记录更改记录的值。更改记录的值时必须在图3-2-2的文本框中显示原来的值。更改的操作不必创建新的记录,直接把光标定到指定记录的位置,然后调用FronBufToPara函数分解获取
43、的字符,并赋给绑定到字段的变量即可:DBAllowFetchAnyDirection(hdbc,1);If(index1)DBFetchRandom(hstmt,index+1);FromBufToPara(temp);最后使用DBPutRecord函数更新记录。由于添加和更改的操作类似,所以本例中采用了再添加按钮的回调函数Add中同时处理添加和更改的操作,在更改操作的回调函数Modify中直接调用Add函数:Add(0,PANEL_2_MODIFY,EVENT_COMMIT,NULL,0,0);通过传入的PANEL_2_MODIFY判断是添加记录还是更改记录。尽管Lab Windows/CV
44、I不赞成使用这种方法,实际上这是一种编程的技巧,可以使程序代码短小。本例中也可以采用独立的回调函数实现添加和修改的功能。在此次设计中,列表框和“更改”按钮公用了回调函数Modify。4.5 Lab Windows/CVI历史数据的处理因为数据量很大,而且大多使用的都是近期的数据,所以希望一段时间以后将历史数据删除,可是用户又不想彻底丢失此历史数据,所有我想现把一段时间那的历史数据导出到一个文本或其他什么文件中,当用户有需要的时候再把这么多历史数据导入数据库 因为用户没有数据库管理员,所以必须封装到程序中,用户只需选择删除某段时期的记录,就可执行上述要求。4.6关于Lab Windows/CVI
45、应用程序Lab Windows/CVI开发环境生成的应用程序必须运行在CVI引擎驱动运行上。如果计算机上已安装Lab Windows/CVI,自动安装CVI引擎, Lab Windows/CVI开发工具开发的应用程序可以单独运行;如果只有Lab Windows/CVI发展应用程序和其他相关文件直接复制到没有安装的计算机中,发动机则无法运行。Lab Windows/CVI提供了一个打包的方法,将产生一个可执行程序和CVI相关文件做成安装程序,直接运行这个安装程序即可。如果目标机没有安装CVI引擎,则先自动安装引擎,然后复制应用程序文件。CVI引擎运行Lab Windows/CVI应用程序,或调用La