嵌入式数据库的LabVIEW接口程序设计_第1页
嵌入式数据库的LabVIEW接口程序设计_第2页
嵌入式数据库的LabVIEW接口程序设计_第3页
嵌入式数据库的LabVIEW接口程序设计_第4页
嵌入式数据库的LabVIEW接口程序设计_第5页
已阅读5页,还剩89页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

I附录:SQLite3部分函数调用返回值列表#defineSQLITE_OK0/*Successfulresult*//*beginning-of-error-codes*/#defineSQLITE_ERROR1/*SQLerrorormissingdatabase*/#defineSQLITE_BUSY5/*Thedatabasefileislocked*/#defineSQLITE_MISUSE21/*Libraryusedincorrectly*/#defineSQLITE_ROW100/*sqlite3_step()hasanotherrowready*/#defineSQLITE_DONE101/*sqlite3_step()hasfinishedexecuting*//*end-of-error-codes*/设计任务书设计题目:嵌入式数据库的LabVIEW接口程序设计学院:专业:班级:学生:指导教师(含职称):专业负责人:设计的主要任务及目标研究SQIite数据库的配置与操作;研究如何使用C#语言操作SQIite数据库;以LabVIEW为平台混合编程实现子VI调用SQIite数据库。设计(论文)的基本要求和内容符合SQL语言的基本语法规范;能准确运用SQL实现对数据库的读写操作;选取流程工业数据,实现子VI对数据库的读写操作的基本指令。主要参考文献BASTIDAH,PONCEP,RAMÍREZR.ModelandControlforCoupledTanksUsingLabview[C]//Mechatronics,ElectronicsandAutomotiveEngineering(ICMEAE),2013InternationalConferenceon.IEEE,2013:127-133.张广斌,宫金林,陈爽.SQLite嵌入式数据库系统的研究与实现[J].单片机与嵌入式系统应用,2008,(6).扶碧波,樊锐.虚拟仪器软件开发方法的研究[J].化工自动化及仪表,2002,29(3).DOI:10.3969/j.issn.1000-3932.2002.03.010.进度安排设计(论文)各阶段名称起止日期1阅读文献,撰写相关报告2完成文献综述,并做初步研究3根据课题,学习SQLite与C的基本内容4以具体要求代码实现5完成毕业论文基于Labview的耦合水箱模型与控制赫克托·巴斯蒂达,佩德罗·庞塞,里卡多·拉米雷斯,阿图罗·莫利纳墨西哥蒙特雷科技大学校园城摘要:本文提出的是一种数字PI控制器实现的耦合水箱系统液位控制。模型识别是以正弦信号在不同的频率进行作为结果而获的得波特图应用设计的控制器。Labview设计数字控制器的主要优点是发出小的增益的,并允许获得更好的性能参数可能性:调节时间和超调量。系统的非线性的数学模型与得到的实验模型进行比较。仿真所获得结果和实现两个PI控制器一样,一个用于水箱系统(CE105MV)的控制模块,另一个控制Labview的执行情况。关键词:波特图,PI控制器,耦合水箱,Labview。一.引言许多工业过程,如石化,造纸,制药和水处理等需要水箱液位控制系统。工业过程中的液体应该被泵输送,贮存在水箱,然后输送到另一个水箱。通常水箱连接在一起,水位相互影响作用,这就需要对其进行控制。所用的主要控制策略是基于对PID控制器的设计,但很多时候,控制器优化需要通过试验和误差才能实现。PID控制器的设计原理详见[1],但这种设计仅用于一个水箱中。控制理论已被用来控制液位耦合水箱等方法涉及被动[2],稳定的预测控制[3],滑动模式[4][5],神经网络[6],模型参考自适应控制[7]和反馈线性[8],多数需要系统的数学模型。往往由于系统的复杂性,很难得到一个数学模型,以找到模型的方法是使用的频率响应。频率响应是一个方法,其中该系统行为的特征在于其响应于正弦和余弦信号。在频率响应法中,该输入信号频率在一定范围内变化,来研究得到的反应。尽管该系统的频率响应表示的瞬态响应的定性图像,频率和瞬态响应之间的相关性是间接的,除了在第二阶系统[9]的情况。当设计一个闭环系统,在开环传递函数的频率响应的特性可以获得对系统可接受的瞬态响应特性的使用几个设计标准来设置。使用波特图进行识别的系统模型。波特图是幅度和相位对一个正弦传递函数G(jω)的频率的表示,它是一个系统的传递函数为正弦输入在不同频率的代表性。G(jω)的对数幅值的共同表示是20log|G(jω)|其中,对数的底数为10的分贝刻度的表示中所用的单位,通常简写分贝。在对数表示中,曲线被绘制在对数频率标度及线性标度的任何幅度(以dB为单位)和相角(度)半对数纸上。使用波特图的主要优点是,幅度乘法变为加法。有一个简单的方法来近似的基础上渐进近似曲线数幅度,这种做法,利用渐近线(直线),这是不够的,如果你只需要对频率响应特性的一般信息。这是非常有益的使用对数标度来扩展低频率范围内,因为所述低频的特性是那些用于慢速系统例如耦合水箱。本文涉及传统PI设计控制器在频域中。随着它的三个条件对瞬态响应和稳定状态下,PID动作控制器提供了许多简单而有效的解决方案来解决现实世界的问题。PID控制器发明于1910年,齐格勒尼古拉斯提出调整方法在1942年,PID控制器的普及已经成长了很多。PI控制器的传递函数通常是写在由(1)给出的“平行”的形式,并通过给定的理想形式(2),(1)(2)其中,KP是比例增益,KI是积分增益,TI是积分时间常数。每一项的功能是•比例项,提供了一种控制动作正比于误差信号与增益因子。•通过由积分给出低频补偿积分项减少了稳态误差。传统的PI控制器的数字实现是通过采样获得的误差信号和采样系统产生控制器的输出信号进行的。图1是闭环数字PI控制器的系统图。图1.数字PI控制控制器的输入E(t)是一个序列数据,在e(KT)中,k=0,1,2,...从分析的角度来看,E(KT)为代表的一个理想的采样器的输出。数字控制器执行的序列E(KT)的某些操作和生成输出序列u(KT),它可以被认为是另一个完美取样的输出。控制器的传递函数可以写成(3)本文安排如下:第一章介绍系统,第三章展示近似的系统模型,第四章讲一个数学模型,第五章描述控制器在频域的设计,第六章讲PI控制器的实现。二.系统说明所使用的耦合水箱系统由TecQuipmentLtd制造。型号CE105耦合水箱的装置,包括两个独立的垂直槽,其通过流动通道相连。如图2.系统具有三个旋转阀,控制整个系统的流量的变化。阀门B和C提供直接排放到下面的贮存器B控制左侧C控制右侧水箱。旋转阀可用于改变流动通道的截面积,从而改变它的水箱的流动特性。阀的变化的大小提供了一系列的物理和流动特性的选择。相邻的阀等级表示相对放电速率:从0到5(关闭到打开)。图2.耦合储水箱系统液位传感器0至10V直流输出对应于0至250毫米泵的流量传感器0至10V直流输出对应0〜4400立方厘米/分钟表1.传感器规格每个水箱都配有感应液面压力的传感器。泵的输出由流量传感器监控。表1为传感器的规格。图3显示的液位传感器箱耦合实验得到的特征图,该图显示通过增加和减少的值的响应液位。图3.液位传感器图4.流量传感器表征所述流量传感器放置在入水箱1示于图4.制造商的说明书[10]注意到,由于变化的制造某些传感器可以有一个小的偏移小于0.5V三.近似模型系统执行一个频率扫描,以获得输出信号的L(液面高度的箱2)之间的比率,并在系统的输入信号是所述泵的电压V和由此得到的传递函数的系统的近似(4)阀门配置;阀门A=5,阀门B=1,阀门C=1.5系统的响应是非常缓慢的,频率施加低于0.1Hz,频率范围从0.00084Hz到0.0426Hz每隔0.0023Hz,利用Labview进行数据采集。图5曲线为输入和输出信号,该模拟信号的幅值、相位角之间的差异用来绘制幅值和相位图,这是用来找到一个传递函数的波特图。图5.系统响应曲线输出和输入幅值之间的比率为分贝(dB),实验数据经过处理之后画出如图6所示的实验波特图及其近似二阶系统二阶系统的传递函数近似于实际系统响应是(5)图7.Simulink仿真模块框图验证传递函数是在Simulink中使用一个正弦波和三角波比较的响应与实验得到的结果图6.波特图图8.实验和模拟的输出图8为实际的系统响应和近似模型。四.数学模型提出的数学模型是通过描述整个系统的方程得到的,说明耦合水箱的情况是非线性的。图9所示耦合水箱系统的原理图。动态模型系统是通过与流入测定水箱(Qi)通过阀门C(Qc)离开来确定。这种关系由以下两个方程描述,(6)(7)阀门被假定像标准锐孔[11],然流经阀门与水箱的液面以下的方程,(8)(9)(10)图9.耦合水箱示意图其中:A是的截面积。a是阀孔的横截面面积。C是阀门的流量系数。结合方程(6)至(10)得出(11)和(12)(11)(12)方程(11)和(12)是一阶非线性微分方程组,以使其可用于控制系统的目的方程必须考虑有关在水箱所需的操作液位小的变化进行线性化。(13)(14)其中,H'是在正常操作液位,并且是常数,h是关于液位的微小变化量。然后,对于变化量h,非线性方程组的微小变化(11)和(12)可通过直线相切近似在H'(8),(9)和(10),以相同的方式指向Qi包括:稳定成分Q'i再加上变化量qi。然后等式(11)和(12)可被重写成(15)(16)图10.流量和液位曲线关系由公式(17)得出控制阀特性在液位H'的斜率,参照图10。(17)由(17)改写等式(15)和(16)(18)(19)当液位恒定时,有qi=0,h1=0,h2=0,则方程(18)和(19)得到流量和液位的稳态关系,其中(20)(21)符号变量数值A水箱截面积阀A截面积阀C截面积阀A的流量系数阀B,C的流量系数液位上限输入电压上限泵增益液位传感器增益重力系数表2耦合储水箱系统参数由(18)式减去(20)式,(19)式减去(21)式并定义由(19)求解H1,获得时间导数并代入(18),然后重新排列给出的关于耦合水箱系统的线性二阶微分方程。以拉普拉斯变换得出了耦合水箱系统的传递函数,(22)又(23)Kp,Kh分别是水箱2的泵增益,传感器电平增益;系统参数如表2[12]。最后由等式(22)给出传递函数是,(24)图11.波特图如图11为式(5)和式(24)的传递函数的波特图。五.控制器设计PI控制器的设计基于以下标准:10%最大超调量和600s的调节时间。超调百分比PO是的函数阻尼比ζ和由25式给出,对应于10%的超调的阻尼是0.6706,因此相位裕度必须至少67℃。带宽和稳态时间的比值由下式给出(25)(26)在600秒的建立时间内带宽必须大于或等于0.0105弧度/秒。通过拟合比例增益带宽为提高整体增益相位裕度应的增加,积分增益大于0.01,产生一个小的相位裕度引起的瞬态响应振荡的增益设置,通过相位裕度和带宽之间的协调。PI增益Kp=0.6058,Ki=0.0049。对于开环波特图带宽频率对应于约-7dB的增益的频率。如图12为开环控制系统波特图。图12.开环波特图带宽大于0.0105弧度/秒可以近似保证稳定时间600秒,由于两者之间的承诺参数所述相位裕度是比相位余量越小6度时成立,建立了相位裕度等于67度使得带宽减少导致的沉降时间超过600秒。六.PI控制器的实现本节介绍数字和模拟PI控制器的实现。比例积分调节规律又称PI调节规律。它既具有比例调节动作,又具有积分调节动作。比例作用快但是不能消除偏差。积分作用稍慢于比例作用,但最终可以消除偏差。积分作用相当于在比例调节之后,再自动进行调整,故PI调节器又称为再调调节器。调节器的输出为比例作用和积分作用之和,而第二项多一个比例系数Kp,这是由于在PI调节器的结构上,比例系数不仅影响到比例不分而且也影响到积分部分。这就是说这样使偏差随时间积累的速度加快了。使用测试模块进行的模拟控制器(CE105MV)。增益利用旋钮调整,允许最低值,它是为模块测试中发现的增益,能够在Matlab中的PI校正。增益的PI控制器的测试是:I=0.01和P=0.2。图13(a)为闭环系统响应步骤输入。图13(b)中得到的模拟和显示响应的增益设置在模块(CE105MV)。图13.PI控制器的响应LabView编程PI控制器通过采集卡NI

USB-6009得到系统的输出信号,程序把该信号与参考值比较计算PI控制器的输出,控制器的输出信号通过同一采集卡发送到系统,如图14所示的接线图Labview自1986年推出以来,经过十几年的时间发展到以最新版本Labview8.6为核心,包括控制与仿真、高级数字信号处理、模糊控制和PID控制等众多的附加软件包,可运行于Windows,Linux,Sun和HP-HX等多种平台。它主要的方便就是,一个硬件的情况下,可以通过改变软件,就可以实现不同的仪器仪表的功能,非常方便,是相当于软件即硬件!现在的图形化主要是上层的系统,国内现在已经开发出图形化的单片机编程系统(支持32位的嵌入式系统,并且可以扩展的),Labview提供了种全新的编程方法,即采用编译型图形化编程语言G语言(GraphProgromming)。用户图14.接线图设计好程序的框架之后,只需把系统提供的各种图形化功能模块连接起来,即可得到所需的应用程序。Labview中的程序称为虚拟仪器(virtual

instrument)程序,简称VI。VI程序实现操作状态选择,传递函数的输入,PID参数的调节与仿真,控制模型动态模拟,对实验平台的监控操作。每个VI都由前面板、框图程序和图标/连接端口三部分组成。前面板就是图形化用户界面,用于设置输入数值和观察输出值,框图程序利用图15.Labview程序图形语言对定义在前面板上的控制量和指示量进行编程图标/连接端口则可以把VI定义为一个子程序(subVI)使其能被别的VI调用。如图15所示Labview程序,当循环通过增加新的程序执行偏差来放大误差积分,然后误差乘以积分增益,该程序确保了整体部分不超过5伏极限,有一种抗饱和部分能避免积分误差部分的饱和度,此饱和极限为5伏,是处理该采集卡的最大输出,由实际误差和比例增益之间的乘积得到的比例部分,最后两部分相加,并将结果发送到采集卡。图16.闭环系统响应PID参数整定方法可以分为理论计算法和工程整定法两种。理论计算法要求必须知道各个环节的传递函数,计算比较复杂。工程整定法是基于实验和经验的方法,简单易行,是工程实际经常采用的方法。利用Labview控制仿真设计工具包和DSCModule工具包结合设计出控制模型的动态模拟界面,界面中的控制对象可以按照控制要求动态变化,其中液面和流量计可以按照调整好的PID参数,按其控制规律动态变化,来模拟整个控制过程。Labview程序允许小积分增益,这可以测试从控制器的设计中获得的增益。如图16所示的闭环系统。七.结论通过频率扫描所述模型以及耦合水箱系统的控制是取得并执行常规的PI的结果显示出优异的性能。正弦信号分析不仅允许建立非线性系统模型,而且也被用于设计完整的PI控制器。所使用的方法包括分别通过Matlab进行模型验证和Labview来实现。在Labview平台中实现PI控制器可以采用小的比例和积分增益。由于缓慢的系统动力学原因,微控制器增益呈现出了优异的成绩,因此耦合水箱系统可以得到比使用原始的控制器(CE105MV)进行控制时更好的性能。所描述的方法可以更好的适用于具有一个不完整的数学描述的非线性系统。实验模型和数学模型之间的比较给出用于验证实验。使用Labview的数据采集系统生成一个波特图是一个非常有用和友好的获得建模和设计控制系统所需的试验资料的方式。参考文献[1]IvanHolicandVojtechVesely“RobustPIDControllerDesignforCoupled-TankProcess”18thInternationalConferenceonProcessControlJune14-17,TatranskaLomnicaSlovakia,2011.[2]Tanasa,Calofir.“Asimpled-datalevelcontrolofnolinearcoupled-tanks.”[3]Lopes,Filho.“AnLMIRobustPredictiveControlApproachAppliedinaCoupledTanksSystems.”[4]Benayache,Mahmoud.“Controllerdesingusingsecondorderslidingmodealgorithmwithanapplicationtoacoupled-tankliquid-levelsystem.”[5]Benayache,Alaoui,Bussy,Castelain“DesignandimplementationofslidingmodeControllerwithvaryingboundarylayerforacoupledtankssystem.”17thMediterraneanConferenceonControl&Automation,MakedoniaPalace,Thessaloniki,Greece,June24-16,2009,pp.1215-1220.[6]Aliasghary,Naderi,Ghasemzadeh,Pourazar.“DesignofRadialBasisFunctionNeuralNetworksControllerBasedonSlidingSurfaceforaCoupledTanksSystem.”[7]Kangwanrat,Tipsuwannaporn,Numsomran.“DesignofPIControllerUsingMRACTecniquesforCoupled-TanksProcess.”[8]Tahir,Iqbal,Mustafa.“ControlofNolinearCoupledThreeTankSystemusingFeedbackLinearization.”[9]OgataKatsuhito,Ingenieríadecontrolmoderna,Prentice-Hall,Mexico,1998.[10]CE105andCE105MVCoupledTanks.TecQuipment.[11]OgataKatsuhito,Dinamicadesistemas,PrenticeHall,Mexico,1987.[12]A.Boubakir,F.Boudjema,“AFuzzySlidingModeControllerUsingNonlinearSlidingSurfaceAppliedtotheCoupledTanksSystem”InternationalJournalofFuzzySystem,Vol.10,No.2,June2008,pp.112-118.文献综述——嵌入式数据库的LabVIEW接口程序设计摘要:传统的数据库不能用于嵌入式系统的数据管理。然而,开源嵌入式数据库SQLite则因为其优势能更好的满足嵌入式系统的需求。LabVIEW是目前国际上应用最广泛的虚拟仪器开发环境之一,主要应用于仪器控制、测试测量、快速开发等领域,并可以适用于多种不同的操作平台。以LabVIEW为平台混合编程可以实现sub-VI调用SQLite数据库。关键词:嵌入式数据库;SQLite;虚拟仪器;LabVIEW.Abstract:Thetraditionaldatabasecannotbeusedforthedatamanagementofembeddedsystems.However,theopen-sourceembeddeddatabaseSQLitecanmeettheneedsofembeddedsystemsbetterbecauseofitsadvantages.LabVIEWisoneofthemostwidelyusedvirtualinstrumentdevelopmentenvironmentusedintheworldatpresent,oneofthemainapplicationintheinstrumentcontrol,testandmeasurement,rapiddevelopment,andotherfields,andcanbeappliedtoavarietyofdifferentoperatingplatform.HybridprogrammingbasedonLabVIEWplatformachievesub-VIcallingSQLitedatabase.Keywords:embeddeddatabase;SQLite;virtualinstrument;LabVIEW.引言在计算机技术的飞速发展的当下,嵌入式系统成为当前IT行业的焦点之一,已被广泛应用于各个领域。更多的用户群也越来越希望能对嵌入式产品中的数据进行更有效的管理。嵌入式数据库便是一个非常有效的工具,它能够使用户在嵌入式产品中方便地插入、删除或修改数据,按照用户要求对数据进行排序查询,还具有如数据加密这样更实用的功能[1-3]。SQLite是2000年开发出来的一种中小型嵌入式数据库,可以较为方便地运用于嵌入式系统中。它的源代码完全开放,可以免费用于任何用途,包括商业目的。把嵌入式数据库SQLite应用于嵌入式系统中进行数据维护管理,不仅可以使程序的运行效率大大提高,还会让源程序具有更好的可读性和可维护性。LabVIEW是一种程序开发环境,类似于C和BASIC开发环境,但是LabVIEW与其他计算机语言的显著区别是:其他计算机语言都是采用基于文本的语言产生代码,而LabVIEW使用的是图形化编辑语言G编写程序,产生程序是框图的形式[4,5],所以尝试用LabVIEW开发嵌入式数据库更加方便快捷,具有更加广阔的发展前景。SQLite和LabVIEW的研究及现状嵌入式系统在国内的研发也是近年来才起步的,然而发展极为迅速。但随着应用领域的不断扩展,面临需要处理的数据量也在不断增加,文本式的数据管理模式渐渐呈现出局限性,成了系统研发的瓶颈,对数据的整合管理需求上升到数据库层面,嵌入式系统迫切需要数据库技术支持[6]。SQLite的问世解决了以上难题,SQLite是D·理查德·希普开发的用一个小型C库实现的一种强有力的嵌入式关系数据库管理体制[7]。这是一个没有外部依赖性,可以更容易地应用于嵌入式系统中,运行在所有主要操作系统,并支持大多数计算机语言的完全独立[8,9]。它提供对SQL92的大多数支持:多表、索引、事务、视图、触发和一系列的用户接口及驱动[10]。国内虚拟仪器最早的研究是从引进消化NI的产品开始的。国家自然科学基金委员会也曾将虚拟仪器研究作为现代机械工程科学前沿学科之一,列入为“十五”期间优先资助领域。目前有些研究已取得可喜成绩,如863项目“虚拟仪器关键技术的研究及其产业化”,所研制的“一体化虚拟仪器”就是一种不同于欧美虚拟仪器的技术。这项成果表明我国在虚拟仪器方面走出一条自主创新的路子,并成为国际上嵌入式一体化虚拟仪器研发的先行者[10]。LabVIEW是美国NI公司推出的一种基于G语言的虚拟仪器软件开发工具。是目前应用最广、发展最快、功能最强的图形化软件开发集成环境。但虚拟仪器软件亦存在其不足,如不适于或不擅长于完成大量数据处理的任务;不能调用系统程序实现底层操作等。在虚拟仪器系统开发中若遇到这类问题,就可利用虚拟仪器软件所提供的与传统编程语言(如C语言)的接口,将其不擅长或不易实现的任务通过能够或更适于完成此类任务的其他编程语言来实现[12,13]。在本次课题中需要以LabVIEW为平台混合编程实现子VI调用Sqlite数据库,此时就可通过在LabVIEW中调用C来实现,实践证明该方法高效易行,是增强LabVIEW整体功能的一条相当可靠的途径。接口程序设计方法通常的应用中,对数据的操作用到的都是数据库的最基本功能,如建立表格、查询、修改、插入、删除、排序等等。精干高效的SQLite完全能够满足这些功能要求,并且它的API极其易于使用,只需要三个用来执行SQL和获得数据的函数。首先,要提供文件和访问模式用来调用sqlite_open()连接数据库。然后,执行一个callback函数,SQLite通过对每个记录执行callback函数获得从数据库那里得到的结果。最后,如果执行一个SQL查询并获得一个callback函数的指针,可以调用aqlite_exec()。使用完毕后可以调用sqlite_close()来断开与数据库的连接[14]。以下是C语言利用SQLite提供的API函数来完成与数据库的交互过程:Sqlite3*db=sqlite3open("mydb",0777,&errmsg);M打开数据库文件ret=sqlite3-exec(db,qry,null,null,&errmsg);MSQL语句的执行程序Sqlite3close(db);M关闭数据库将应用程序通过交叉编译器编译后若想取回SQL语句访问数据库的结果,就要对每一个记录执行回调函数call-back()[15]。LabVIEW中包含了丰富的子程序和函数库,如数据采集等,利用这些函数和子程序,用户可快速建立起自己的采集控制系统,但是在很多系统中,从采集的数据到输出的控制信号之间需要经过大量和复杂的数学计算,而这时用传统程序语言(如C语言)的文字编程方式则显得更简洁、高效[16]。CIN(CodeInterfaceNode)是LabVIEW调用外部语言代码的一种方法,在块图表表单中CIN表现为一个具有输入输出端口的图标,用可将需要调用的C代码编译成LabVIEW所能识别的代码格式后和此节点相连。当程序执行到此节点时,LabVIEW将会自动调用与此节点相关联的外部代码,并向CIN传递特定的数据结构,用户可以向CIN传递任意复合的数据结构[17],由于LabVIEW中数据的存储格式遵循了C语言的数据存储格式,二者完全相同,所以可以通过LabVIEW和C语言的混合编程实现子VI调用SQLite数据库,实现对数据库的读写操作等。结论SQLite数据库在性能上有很多独特优势,尤其实性好,空间占用少,安全可靠成本低,对于嵌入式系统开发方面是很好的数据平台;但SQLite是引擎式数据库,不适合用来做C/S开发,频繁并行读写时,会发生数据冲突,因此不能多个进程同时运作,但是只要扬长避短,取其精华,SQLite则是理想的嵌入式数据库产品。LabVIEW和C语言接口的方法使用方便,可以根据实际应用的需要,充分利用C语言及其编译器的优势来扩展LabVIEW的功能,从而提高了LabVIEW的数据处理能力,同时也能极大地增强LabVIEW与其他应用程序之间的数据共享能力,具有较为理想的发展前景。参考文献BastidaH,PonceP,RamírezR,etal.ModelandControlforCoupledTanksUsingLabVIEW[C]//Mechatronics,ElectronicsandAutomotiveEngineering(ICMEAE),2013InternationalConferenceon.IEEE,2013:127-133.魏海燕,杨建新,郁鼎鑫等.基于LabVIEW的虚拟仪器开发;《机械工程师》.2000,(04):50-51.倪天龙,张贤高,王培.数据库SQLite在嵌入式系统中的应用[J].单片机与嵌入式系统应用,2005,(10):35-37.唐敏,宋杰.嵌入式数据库SQLite的原理与应用[J].电脑知识与技术,2008,(04):600-601.林静,林振宇,郑福仁.LabVIEW虚拟仪器程序设计从入门到精通.人民邮电出版社,2010,(7):37-39.管希萌,刘瑶,徐丽仙,田永晔.嵌入式数据库SQLite应用研究.《扬州教育学院学报》2008,(03):18-21.JunyanL,ShiguoX,YijieL.ApplicationResearchofEmbeddedDatabaseSQLite[C].//InformationTechnologyandApplications,Ifita09,InternationalForumon.IEEE,2009:539-543.DavidZhang,OuShu-yun,"ApplicationofEmbeddedDatabase",SCMandapplicationofembeddedsystem,2008,7,pp.5-7.WanMa-ning,GuanYong-han,XiangJun,"ResearchonTypicalTechnologiesofembeddeddatabase-SQLiteandBerkeleyDB",InformationofMicrocomputer,2006,22(1-2),pp.91-93.李震,柯旭贵,汪云祥.虚拟仪器的发展历史、研究现状与展望[J].安徽工程科技学院学报,2005,18,(4):1-4.王京谦,万莅新.开源嵌入式数据库Berkeley和SQLite嵌入式数据库技术[J].单片机与嵌入式系统应用,2005,(2):57-59.杨磊.LabVIEW程序设计与应用.电子工业出版社,第二版,2005:74-75.GaryW.Johnso,RichardJennings."LabVIEWGraphicalProgramming",McGraw-HillProfessional.2001:117-120.张广斌,宫金林,陈爽.SQLite嵌入式数据库系统的研究与实现[J].单片机与嵌入式系统应用.2006,(06):11-13.包理群,吕登峰,侯志伟.嵌入式数据库在工业控制系统中的应用[J].计算机应用与软件,2014,(02):254-255.李俊,陈湘波.LabVIEW与C语言的混合编程[J].自动化与仪器仪表,2011,(05):62-64.蒯锐.LabVIEW中调用C语言研究与实现.计算机应用与软件.2007,(05):188-191.摘要近年来随着嵌入式系统迅速发展,SQLite数据库在数据整合管理方面给予了嵌入式系统强大的技术支持,本课题旨在设计开发嵌入式数据库SQLite与LabVIEW的接口程序。本文首先介绍了LabVIEW图形化开发环境和虚拟现实技术的现状与发展,针对其各自特点及优势进行了探讨,然后简明扼要的概括了SQLite数据库的特点及优势,并确定选题的研究意义;其次通过对LabVIEW各类控件及接口,C#语言编程技术及SQLite数据库的几种DLL文件的技术分析,提出了几种可以完成接口程序设计的方案,并结合自身实际情况及方案可完成度,总结出了设计开发接口程序的总体设计方案;接下来严格按照设计方案进度开始设计程序,经过前期的摸索,逐步实现了基础程序模块设计,从新建数据库开始,依次完成了创建表格、插入数据、修改表格内容、删除等基本操作,并最终实现数据库查询反馈等重要功能。课题最后使用LabVIEW将自行设计的程序生成了安装文件和可执行程序(EXE)供用户使用,实现用户对数据库的基本操作及维护,继而完成本课题预期目的,证明了该设计的可行性。关键词:嵌入式数据库;SQLite;虚拟仪器;LabVIEW

ABSTRACTInrecentyears,SQLitedatabasegaveembeddedsystemapowerfultechnicalsupportindataintegrationmanagementwiththerapiddevelopmentofembeddedsystem.ThecontentofthisdissertationinvolvesthedesignanddevelopmentoftheinterfaceprogrambetweenLabVIEWandSQLite.Firstly,thethesisintroducesLabVIEWgraphicaldevelopmentenvironment,thepresentsituationanddevelopmentofvirtualrealitytechnology,theircharacteristicsandadvantagesarediscussedrespectively,basedonwhichtheresearchpurportisdecided,ThensuccinctlysumsupthecharacteristicsandadvantagesofSQLitedatabase,andidentifyingtheresearchsignificanceofthistopic;Secondly,byanalyzingthetechnicalofvarioustypesofcontrolsandinterfacesforLabVIEW,C#languageprogrammingandDLLfilesofSQLitedatabase,severalschemesfordesigningtheinterfaceprogramaresummarized.Combinedwithmyownactualsituationandthecompletingdegreeofprograms,sumsupthedesignanddevelopmentoftheoveralldesignfortheinterfaceprogram.Next,starttoprogramthedesignprocessstrictlyaccordingtothedesignplan,aftertheearlyexploration,Graduallyachievethefoundationprogrammoduledesign,followedbycompletingthecreationofatable,insertthedata,modifytablecontents,deletingandotherbasicoperations,andultimatelytheimportantfunctionofthedatabasequeryfeedback.Finally,thethesisgenerateaself-designedprogramtotheinstallationfilesandexecutable(EXE)forusersbyusingLabVIEW,achievingthebasicoperationandmaintenanceofthedatabaseusersandthencompletingtheintendedpurposeofthisprojecttoprovethefeasibilityofthedesign.Keywords:embeddeddatabase,SQLite,virtualinstrument,LabVIEW目录前言 1第1章绪论 2第1.1节课题研究背景 2第1.2节LabVIEW和SQLite发展现状 31.2.1LabVIEW的发展 31.2.2SQLite现状 3第1.3节课题意义和主要内容 4第2章接口程序设计技术分析 5第2.1节SQLite接口技术分析 5第2.2节解析LabVIEW调用技术 5第2.3节接口程序设计框架 6第3章基础程序模块设计实现 8第3.1节LabVIEW访问SQLite数据库 83.1.1创建(或打开已有)数据库 83.1.2执行SQL语句 93.1.3LabVIEW和DLL之间参数配置说明 133.1.4对数据库进行基本操作 14第3.2节LabVIEW调用C#DLL文件访问SQLite数据库 173.2.1C#创建和调用DLL 173.2.2LabVIEW访问C#编写的DLL 21使用VS2010生成预定的DLL文件 21使用LabVIEW2014调用生成的dll 23建立工程子VI 24常见错误处理 28第4章接口程序设计实现及调试 30第4.1节生成可供调用的DLL文件 30第4.2节创建工程编写程序VI 324.2.1逐个编写子VI 324.2.2主程序功能实现 35第4.3节生成可执行文件 384.3.1生成前准备 384.3.2生成可执行程序 38结论 42参考文献 43致谢 45前言在计算机技术的飞速发展的当下,嵌入式系统成为当前IT行业的焦点之一,已被广泛应用于各个领域。更多的用户群也越来越希望能对嵌入式产品中的数据进行更有效的管理。嵌入式数据库便是一个非常有效的工具,它能够使用户在嵌入式产品中方便地插入、删除或修改数据,按照用户要求对数据进行排序查询,还具有如数据加密这样更实用的功能。嵌入式系统在国内的研发也是近年来才起步的,然而发展极为迅速。但随着应用领域的不断扩展,面临需要处理的数据量也在不断增加,文本式的数据管理模式渐渐呈现出局限性,成了系统研发的瓶颈,对数据的整合管理需求上升到数据库层面,嵌入式系统迫切需要数据库技术支持。SQLite是2000年开发出来的一种中小型嵌入式数据库,可以较为方便地运用于嵌入式系统中。它的源代码完全开放,可以免费用于任何用途,包括商业目的。把嵌入式数据库SQLite应用于嵌入式系统中进行数据维护管理,不仅可以使程序的运行效率大大提高,还会让源程序具有更好的可读性和可维护性。LabVIEW是一种程序开发环境,类似于C和BASIC开发环境,但是LabVIEW与其他计算机语言的显著区别是:其他计算机语言都是采用基于文本的语言产生代码,而LabVIEW使用的是图形化编辑语言G编写程序,产生程序是框图的形式,所以尝试用LabVIEW开发嵌入式数据库更加方便快捷,具有更加广阔的发展前景。通常的应用中,对数据的操作用到的都是数据库的最基本的功能,如建立表格、查询等等。精干高效的SQLite完全能够满足这些功能要求,并且它的API极其易于使用,只需要三个用来执行SQL和获得数据的函数。LabVIEW和C#语言接口的方法使用方便,可以根据实际应用的需要,充分利用C#语言及其优势来扩展LabVIEW的功能,与此同时混合编程的完成极大增强了LabVIEW同其他应用程序之间的数据传输与共享能力。根据上述现状,本课题设计了基于LabVIEW的SQLite数据库接口程序,通过充分认知LabVIEW中的与其他应用程序之间的API,搭建起调用SQLite数据库的DLL文件的子VI,继而使用DLL文件内已经封装的多个函数以LabVIEW为平台编写程序完成对数据库的基本操作,如建立表格、查询、修改、插入、删除、排序等等,通过上述程序能够很好地充分利用SQLite并实现数据库最强大的查询管理功能。第1章绪论第1.1节课题研究背景虚拟仪器是计算机、现代测试、仪器仪表等技术结合的产物,通过应用程序将计算机与功能模块硬件结合起来,采用交互式图形界面操作计算机来控制各种功能模块,完成对被测试量的采集、分析处理等任务,突破了传统仪器在功能单一和数据交换不易等方面的局限[1,2]。而随着嵌入式系统的广泛应用及用户对数据处理和管理需求的不断提高,嵌入式数据库技术与各种智能设备的紧密结合得到重视,嵌入式数据库除了具有传统数据库的主要功能,还具有嵌入式和支持移动技术两种特性,因此通常被用在掌上电脑、移动电话等嵌入式设备中[3,4]。通过LabVIEW与C混合编程的接口程序调用嵌入式数据库的技术不再受单一操作系统的限制,可以随时随地处理业务、传递信息,可以说,这种技术的发展能提高数据信息接入的普遍性,使人们可以随时随地获取信息,实现更为快捷的信息传递[5-7]。嵌入式系统的研发是近年来才起步的,然而其发展极为迅速,随着应用领域的不断扩展,面临需要处理的数据量也在不断增加,对数据的整合管理需求上升到数据库层面,嵌入式系统迫切需要数据库技术支持,而SQLite的问世则解决了以上难题。SQLite[8-11]没有外部依赖性,更容易地应用于嵌入式系统中,可以运行在所有主流操作系统中,它提供对SQL的大多数支持,包括多表、索引、事务、视图、触发和一系列的用户接口及驱动,SQLite的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了[12];SQLite的移植性很好,它的数据库文件在其所支持的所有操作系统、硬件体系结构和字节顺序上都是兼容的二进制且;作为程序库,SQLite提供完整的最简单最易用的API,不仅具有很好的文档而且很直观,它的设计有助于从多方面定制SQLite,例如可以通过C#语言实现自己定制的SQL函数,更重要的是开源社区创建了很多种语言和程序库用来与SQLite交互[13-15],例如C#、LabVIEW等。以上的一些特性使其成为强大而灵活的关系型数据库前端,简单而紧凑的B-tree后端。此外,提供的源代码模块清晰,注释完整,并且易理解、易定制,方便获取,可以根据需要重编译应用于其他平台,例如LabVIEW等。第1.2节LabVIEW和SQLite发展现状1.2.1LabVIEW的发展近些年,世界各国的许多大型自动测控和仪器公司均相继研发了不少的虚拟仪器开发平台,但最早和最具影响力的还是美国NI公司的图形化开发平台LabVIEW,而作为新兴技术,虚拟仪器在国内处于起步阶段,在数据处理软件如测量结果的频谱分析,快速傅里叶变换,各种数字滤波器等方面做出了一些成就。例如用LabVIEW编制的虚拟示波器的出现改变了原有示波器的整体设计思路,用软件代替了硬件,将传统仪器由硬件实现的数据分析与显示功能,改由功能强大的计算机及其显示器来完成,使工程技术人员可以用一部笔记本电脑到现场就可轻松完成信号的采集、处理及频谱分析和波形分析[16-18]。而LabVIEW本身使用的是图形化编辑语言G语言编写程序,以框图的形式生成程序,是目前应用最广、发展最快、功能最强的图形化软件开发集成环境。但虚拟仪器软件亦存在其不足,如不适于或不擅长于完成大量数据处理的任务;不能调用系统程序实现底层操作等,所以尝试通过LabVIEW调用开发嵌入式数据库更加方便快捷,既弥补了LabVIEW在这方面的不足,更充分利用了G语言编程方便快捷和SQLite开源灵活的特点,在数据处理,信息管理等方面具有更加广阔的发展前景。1.2.2SQLite现状SQLite嵌入式数据库提供了以源码发布的方式,要在众多的硬件平台进行移植,可以根据不同平台对源码进行交叉编译来实现。嵌入式数据库通常是与嵌入式操作系统及具体的应用集成在一起,无需独立运行数据库引擎,由程序直接调用相应的API就可实现对数据的存取操作。SQLite[19-21]是一个实现了内置的进程型链接库,它实现了自我包含,无服务器,零配置,事务型的SQL数据库引擎,其完全免费的源代码可以用于任何目的,包括商业软件的开发。在项目开发中,笔者发现SQLite是以API函数库的方式被软件开发人员所调用的。随着嵌入式数据库SQLite在嵌入式设备和桌面产品中日益广泛的使用,对于使用SQLite作为数据库管理系统的软件开发人员来说,能否准确的知道当前数据库的状况,能否方便的调试和跟踪数据库的执行,这对于减少数据库设计方面的错误和缩短软件产品的开发周期都是至关重要的。第1.3节课题意义和主要内容虚拟仪器能通过应用程序将计算机与功能模块硬件结合起来,采用交互式图形界面操作计算机来控制各种功能模块,完成对被测试量的采集、分析处理等任务,突破了传统仪器在功能单一和数据交换不易等方面的局限。嵌入式数据库除了具有传统数据库的主要功能,还具有可移植性、紧凑性、简单性、灵活性、可靠性和易用性等其他强大特性,更是一个非常有效的工具,它能够使用户在嵌入式产品中方便地插入、删除或修改数据,按照用户要求对数据进行排序查询,通过LabVIEW与C混合编程的接口程序调用嵌入式数据库的技术不再受单一操作系统的限制,可以随时随地处理业务、传递信息,这种技术的发展能提高数据信息接入的普遍性,使人们可以随时随地获取信息,实现更为快捷的信息传递。在本次课题中以LabVIEW为平台混合编程实现子VI调用SQLite数据库,此时就可通过在LabVIEW中调用C来实现,实践证明该方法高效易行,是增强LabVIEW整体功能的一条相当可靠的途径。事实证明,LabVIEW和嵌入式数据库的广泛应用一定是未来嵌入式领域发展的一个重要方向,而SQLite以其体积小巧、功能强大、接口方便、开源免费等优势成为嵌入式数据库领域的新宠。因此,嵌入式数据库SQLite必将拥有广阔的市场和极度良好的发展空间。本课题的主要任务是设计LabVIEW与嵌入式数据库的接口程序,通过LabVIEW与C的混合编程更好的展示虚拟仪器与数据库在编程和数据管理方面的强大功能。主要内容:1. 查阅大量国内外关于LabVIEW和嵌入式数据库的理论研究和应用方面的文献,对课题进行全面系统地了解。2. 嵌入式数据库的LabVIEW接口程序具体设计,主要包括:研究SQLite数据库的配置与操作;研究如何使用C#语言操作SQLite数据库;以LabVIEW为平台编程实现子VI调用sqlite3.dll文件操作数据库;利用C#语言编程生成符合SQL语言并能实现对数据库进行操作的DLL文件,由LabVIEW平台编程实现VI调用操作数据库;程序完成以上功能后,将程序生成可执行文件或者进一步地生成安装文件。第2章接口程序设计技术分析第2.1节SQLite接口技术分析SQLite是一个小型的C程序库,实现了独立的、可嵌入的、零配置的SQL数据库引擎,其特性包括事务操作是原子的,一致的,孤立的,并且持久的(ACID特性),它不像常见的客户-服务器范例,但在大多数常见操作上比主流的客户-服务器数据库引擎更快;SQLite引擎不是个程序与之通信的独立进程,而是连接到程序中成为它的一个主要部分。所以主要的通信协议是在编程语言内的直接API调用,这在消耗总量、延迟时间和整体简单性上有积极的作用,在设计具体的API函数之前,先简要说明一下很多API函数中都用到的两个重要的参数类型:sqlite3*和sqlite3stmt*,从数据库打开开始,SQLite就要为sqlite3*这个类型准备内存,直到数据库关闭为止。当数据库打开时,sqlite3*类型的变量就代表了需要操作的数据库;sqlite3stmt*数据类型记录了一条已经把SQL语句声明解析了并用SQLite本身标记记录的SQL语句。整个数据库(定义、表、索引和数据本身)都在宿主主机上存储在一个单一的dll文件中,该文件的源代码在SQLiteHomePage主页上是可以免费下载到的,不需要进行安装和管理,内部封装简单,易于使用的API函数,并且可用于任何用途,它的简单的设计是通过在开始一个事务的时候锁定整个数据文件而完成的,内建TCL绑定,另外提供可用于许多其它语言的绑定,这也为本课题提供了方便,可于LabVIEW平台上直接通过自带的调用库函数节点(CallLibraryFunctionNode)调用。第2.2节解析LabVIEW调用技术LabVIEW是一种用图标代替文本行创建应用程序的图形化编程语言。传统文本编程语言根据语句和指令的先后顺序决定程序执行顺序,而LabVIEW则采用数据流编程方式,程序框图中节点之间的数据流向决定了VI及函数的执行顺序。LabVIEW提供很多外观与传统仪器类似的控件,可用来方便地创建用户界面。用户界面在LabVIEW中被称为前面板。使用图标和连线,可以通过编程对前面板上的对象进行控制。这就是图形化源代码。LabVIEW的图形化源代码在某种程度上类似于流程图,因此又被称作程序框图代码。但是现有的LabVIEW版本本身并不具备数据库访问功能,不能像VB、VC++、Delphi、PowerBuilder那样非常方便的进行数据库程序的开发。因此以LabVIEW编制的虚拟仪器系统需要其它辅助的方法来进行数据库访问。利用NI公司的附加工具包中的数据库接口工具包LabVIEWSQLToolkit进行数据库访问。该工具包集成了一系列的高级功能模块,这些模块封装了大多数的数据库操作和一些高级的数据库访问功能。它的优点是易于理解,操作简单,用户可以不学习SQL语法。缺点是需要另外购买且价格昂贵,无疑会增加系统成本。利用LabVIEW的ActiveX功能,调用MicrosoftADO对象,利用SQL语言实现数据库的访问。使用这种方法需要用户对MicrosoftADO以及SQL语言有较深的了解。通过第三方开发的免费工具包LabSQL访问。LabSQL利用MicrosoftADO以及SQL语言来完成数据库访问,将复杂的底层ADO及SQL操作封装成一系列的LabSQLVis以供用户使用。通过调用动态链接库DLL(DynamicLinkLibrary)访问。先利用其它语言如VisualC++编写DLL,再利用LabVIEW的调用库函数节点CLFN(CallingLibraryFunctionNode)调用此DLL访问数据库。但这种方法需要从底层进行复杂的编程才能实现,对非专业编程人员来讲是不现实的。利用中间文件存取数据。先将数据存入文件之中,待测量结束后再用专门的工具将数据导入到数据库之中。这种方法需要磁盘文件作为中介,而且不具有实时性,不方便使用。针对上面提到的五种访问数据库的特点,结合SQLite的特点,拟采用C#编写DLL文件实现对数据库的访问。第2.3节接口程序设计框架通过上两节内容的分析,本课题拟采用以下设计方法实现程序设计:首先以LabVIEW开发平台编写程序,程序VI包括3个部分:程序前面板、框图程序和图标/连接器。程序前面板用于用户设置输入数值和观察输出量,生成模仿传统仪器的控制面板;每一个程序前面板都对应着一段框图程序,框图程序用LabVIEW图形编程语言编写,类似传统程序的源代码,连接器是子程序SubVI被其它VI调用的接口。其次使用SQLite数据库提供了完整的API接口,本次课题通过LabVIEW的API接口功能即调用库函数节点(在程序框图界面右键选择互联接口>库与可执行程序>调用库函数节点)来实现对SQLite数据库的操作。图2•1是数据库的操作流程。图2·1:接口程序设计流程图LabVIEW采用的是自上而下的模块化编程方法,所生成的各个子程序有利于主程序的设计与实现。编辑完程序后,要在用户的终端机器运行,有必要将该程序生成可执行文件,或者进一步的生成安装文件,因此课题最终结果应创建应用程序(EXE),生成安装包和可执行文件。第3章基础程序模块设计实现第3.1节LabVIEW访问SQLite数据库3.1.1创建(或打开已有)数据库打开数据库用到的是sqlite3_open()。函数原型如下:intsqlite3_open(constchar*filename,/*Databasefilename(UTF-8)*/sqlite3**ppDb/*OUT:SQLitedbhandle*/);通过该函数开始数据库操作之前,需要输入的参数是数据库文件的完整路径,例如:c:\test.db。 sqlite3**返回的是数据库的操作句柄(引用),是一个32位有符号整型数据。函数返回值表示操作是否正确,如果返回SQLITE_OK(0)则表示操作正常。图3·1:LabVIEW中打开数据库节点图3·2:sqlite3_open参数配置3.1.2执行SQL语句SQLite执行一条SQL语句需要三个步骤,与之相关的函数为:sqlite3_prepare()、sqlite3_step()、sqlite3_finalize(),即编译SQL字节码、执行语句与销毁字节码,下面详细的展示了这几个函数的作用和用法。SQL语句声明(编译)SQLite中并不能直接识别SQL语句,在执行SQL操作前需要先将SQL语句编译成SQLite可识别的二进制字节码,为此SQLite提供了sqlite3_prepare()函数来执行SQL语句的编译。sqlite3_prepare()函数原型为:intsqlite3_prepare(sqlite3*db,/*Databasehandle*/constchar*zSql,/*SQLstatement,UTF-8encoded*/intnByte,/*MaximumlengthofzSqlinbytes.*/sqlite3_stmt**ppStmt,/*OUT:Statementhandle*/constchar**pzTail/*OUT:PointertounusedportionofzSql*/);函数返回的参数Stmt是已成功编译的二进制字节码,提供给后续的操作函数使用,如图3•4。图3·3:LabVIEW中编译SQL语句节点图3·4:sqlite3_prepare参数配置使用sqlite3_prepare()接口函数访问数据库是当前比较便捷的一种方法。注:输入参数中只有第一条SQL语句才会被接口函数编译。执行SQL语句在SQL声明准备好之后,需要调用sqlite3_step()函数来执行SQL语句。sqlite3_step()函数原型:intsqlite3_step(sqlite3_stmt*);图3·5:LabVIEW中执行SQL语句节点成功执行完sqlite3_step()后并不会返回SQLITE_OK(0),在执行INSERT、UPDATE、CREATETABLE、DELETE等数据库操作时,如果SQL语句执行成功或者正常sqlite3_step()函数将返回SQLITE_DONE(101),否则将返回错误代码。在执行SELETE操作时,如果SQL返回了查询结果,sqlite3_step()函数将返回SQLITE_ROW(100)。图3·6:sqlite3_step参数配置图3·7:LabVIEW中结束SQL语句节点图3·8:sqlite3_finalize参数配置结束SQL语句在关闭数据库之前,必须先将所有之前已经准备好的声明释放并销毁,在执行了sqlite3_prepare()函数之后,任何时候都可以通过调用sqlite3_finalize()函数将一个准备好的SQL声明销毁。sqlite3_finalize()函数原型:intsqlite3_finalize(sqlite3_stmt*);关闭数据库通过调用sqlite3_finalize()函数将SQL声明销毁之后,即可用sqlite3_close()函数关闭已打开的数据库,释放内存资源。sqlite3_close()函数原型:intsqlite3_close(sqlite3*);图3·9:LabVIEW中关闭SQLite数据库节点图3·10:sqlite3_close参数配置运用上述操作完成在LabVIEW中通过调用SQLite3中的函数创建数据表实例,图3•12和图3•13分别是该实例的程序框图和运行后的前面板的显示情况。图3·11:LabVIEW中创建数据表实例程序框图图3·12:运行后前面板显示情况3.1.3LabVIEW和DLL之间参数配置说明DLL和LabVIEW之间传递参数,最常用的三种数据类型是数值、数值型数组和字符串。C语言中经常把指针或者数据的地址在函数间传递,在32位操作系统中,可以使用int32数值来表示指针。因此,当需要在LabVIEW中传递指针数据时,可以使用I32或U32数值类型来表示这个地址类型的数据。但是,64位的程序中,数据的地址只能使用I64或U64来表示。这样,如果一个调用了DLL函数的VI,并且函数参数中有地址型数据,使用固定数据类型的数值来表示地址,就要准备两份代码。解决方法是使用LabVIEW中的新的数据类型Pointer-sizedInteger。这个数据类型的长度在不同的平台上会自动使用32位或64位长度。如果在C语言函数参数声明中有const关键字,可以选中Constant选项。布尔类型在DLL函数和LabVIEWVI之间传递没有专有的数据类型,是利用数值类型来传递的。输入时先把布尔值转变为数值,在传递给DLL函数;输出时

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论