labwindowscvi测试应用程序编程
基于LabWindows_CVI的数据库应用程序开发

信息 、测试人员信息等 ,这些数据的维护和管理需要 统一的数据库机制来实现 。而 LabW indow s/CV I开 发环境提供了对数据库的支持能力 ,可以实现多种异 构数据库的访问和维护 。
摘要 : LabW indow s/CV I是测试领域优秀的开发软件 ,用于开发大型 、复杂的测试软件 ,能获得优良的测试性能 ,而 M i2 crosoft Access的数据库开发能力也十分强大 ,两者的结合可以使得需要测试大量指标和处理大量测试数据的自动测试 系统的开发变得更加容易 。本文以某电台信号处理模块的自动测试系统的开发为例 ,详细说明如何在 LabW indow s/CV I 中访问 M icrosoft Access制作的数据库 。结果表明 ,由此给自动测试系统在数据处理和数据存储方面提高了数倍效率 。 关键词 :应用程序开发 ; 数据库 ; LabW indow s/CV I; Access; 自动测试系统 中图分类号 : TP391 文献标识码 : A
本文不一一讲述每个表的制作 ,仅以发通道测试 数据表为例说明如何利用 M icrosoft Access制作数据 库 ,及如何在 LabW indow s/CV I的环境中对数据库进 行查询和访问 。
2 数据库制作
数据库是由组织好的数据集组成 。最新的数据 库管理系统 (DBMS)都将数据存为表的形式 。表的 结构通过记录和字段构成的二维形式来实现 (其中 : 记录称为行 ,字段称为列 ) 。数据库中每个表必须有 一个惟一的名字 ,表中每个字段也必须有一个惟一的 名字 [ 3 ] 。表中每个字段都有各自的数据类型 ,在编 写程序之前一定要搞清楚各字段的数据类型 ,才能在
@+labwindows+cvi测试技术及工程应用 2-3

//当数据产生完毕后,温度计控件值归零。
SetCtrlVal(panelHandle,PANEL_NUMERICfHERM,0.00);11当数据产生完毕后,设置LED的标题为“关”。
SetCtrlAttribute(panelHandle,PANEL_LED,.ATTR_LABEL_TEXT,“关”):else淄博木门/II关闭LED,即设置其值为0.SetCtrlVal(panelHandle,PANEL-LED,0);刀温度计控件值归零。
SetCtrlVal(panelHandle,PANEL-N1州ERICTHERM,0.00);11设置LED的标题为“关”。
setetr一^ttribute(P anelHandle,PANEL--LED,ATTReeLABEL--1毛xT,SetCtrlAttribute (panelHandle,PANELLED,ATM-LABEL-TEXT“关”(3)向回调函数框架中插入函数淄博阳光房大推拉/,①函数面板。
LabWindows/CVI的一大优点就是自带非常强大的函数库(User Interface Library).其中包含了用户界面函数库、高级分析函数库等,这给编程带来极大的方便。
从LabWindows/CVI7.0版本开始,在窗口的左下方会出现一个函数树,方便了编程者查找和调用函数面板。
函数面板的作用在于交互式执行函数,不需要在程序里手动添加函数。
进入函数库的方法有两种:一种是点击Library菜单选项,即可出现各种库函数;另一种方法是点击窗口的左下方中的函数树。
函数树是以多级结构方式组织的,函数按所实现的功能分为不同的类别。
编程者可以选择所需要的函数类别,逐级查找。
②利用函数面板向框架中添函数。
_这个实例中所用到的函数都是基本用户界面函数。
这个函数库中含有控制图形化用户界面的一组函数,。
包括的函数对象有菜单、面板、控件和位图等。
回调函数Acquire中首先要判断的是开关控件Binary Switch的状态是ON还是OFF。
LabWindows_CVI多线程技术在多功能显示器测试软件中的应用

LabWindows/CVI多线程技术在多功能显示器测试软件中的应用发布时间:2023-03-07T02:22:58.947Z 来源:《科学与技术》2022年21期作者:杨柳暄陈涛沈晓雪[导读] 多功能显示器测试软件模拟任务管理计算机与显示器进行422通讯,实时接收显示器发送的按键杨柳暄陈涛沈晓雪(苏州长风航空电子有限公司江苏苏州215151)[摘要]多功能显示器测试软件模拟任务管理计算机与显示器进行422通讯,实时接收显示器发送的按键信息,并且向显示器发送画面信息完成画面显示。
本文针对LabWindows/CVI的多线程机制进行了详细的介绍,并给出了其在多功能显示器测试中的应用。
测试结果表明,利用多线程技术能够更好地开发并行任务,加快系统的响应速度,提高执行效率。
关键词:多线程;多功能显示器测试;LabWindows/CVI;Application of LabWindows/CVI multi-threadtechnology in multi-function display test softwareYang Liuxuan Chen Tao Shen Xiaoxue(Suzhou Changfeng Avionics co.,LTD., Suzhou Jiangsu 215151,China)Abstract: The multi-function display test software simulates the task management computer to perform 422 communication with the display, receives the key information sent by the display in real time, and sends the screen information to the display to complete the screen display. This paper introduces the multi-thread mechanism of LabWindows/CVI in detail, and gives its application in the multi-function display test. The test results show that using multi-threading technology can better develop parallel tasks, speed up the response speed of the system, and improve execution efficiency.Key words: Multithread;Multifunction Display Test;LabWindows/CVI;1.引言在多功能显示器测试过程中,需要设计相应的测试软件。
LabWindows CVI教程

第一章 : LabWindows/CVI1.1 LabWindows/CVI1.1.1 LabWindows/CVI概述LabWindows/CVI是美国NI(National Instruments)公司开发的面向计算机测控领域的虚拟仪器软件开发平台,可以在多种操作系统(WindowsXP/Vista/7、Mac OS和Unix)下运行。
LabWindows/CVI 是为C 语言程序员提供的集成开发环境(IDE),在此开发环境中可以利用C语言及其提供的库函数来实现程序的设计、编辑、编译、链接、调试。
使用LabWindows/CVI 可以完成以下但不限于以下工作:·交互式的程序开发;·具有功能强大的函数库,用来创建数据采集和仪器控制的应用程序;·充分利用完备的软件工具进行数据采集、分析和显示;·利用向导开发IVI 仪器驱动程序和创建ActiveX 服务器;·为其它程序开发C 目标模块、动态连接库(DLL)、C 语言库。
图 1‐1 LabWindows/CVI界面LabWindows/CVI 的功能强大在于它提供了丰富的函数库。
利用这些库函数除可实现常规的程序设计外,还可实现更加复杂的数据采集和仪器控制系统的开发。
数据采集。
IVI库、GPIB/GPIB 488.2库、NI-DAQmx库、传统的NI-DAQ库、RS-232库、VISA库、VXI库以及NI-CAN库。
数据分析。
格式化IO库、分析库以及可选的高级分析库。
GUI库。
使用LabWindows/CVI 的用户界面编辑器可以创建并编辑图形用户界面(GUI),而使用LabWindows/CVI 的用户界面库函数可以在程序中创建并控制GUI。
此外,LabWindows/CVI为GUI 面板的设计,准备了许多专业控件,如:曲线图控件、带状图控件、表头、旋钮和指示灯等,以适应测控系统软件开发的需求,利用这些控件可以设计出专业的测控程序界面。
基于LabWindows_CVI的机载武器测试系统程序设计

软件工程技术计算机测量与控制.2009.17(6) Computer Measurement &Control#1221#收稿日期:2008211203; 修回日期:2008212210。
基金项目:军队重大科研项目(KJZ06119)。
作者简介:范惠林(19622),男,山东潍坊人,教授,博士生,主要从事机电系统控制与技术、航空军械检测与保障等方向的研究。
文章编号:167124598(2009)0621221204 中图分类号:T P273文献标识码:A基于LabWindows/CVI 的机载武器测试系统程序设计范惠林1,2,徐洪吉1,陈丹强2(1.长春理工大学,吉林长春 130022; 2.空军航空大学,吉林长春 130022)摘要:自动测试程序应用于基于VXI 总线的综合测试系统,检测某型飞机机载武器发射控制系统的完好性;采用LabWindows/CVI 技术开发平台,进行软件模块化和可视化设计,通过控制综合测试系统,自动测试程序实现了对机载武器发射控制系统的数据采集、信息处理、故障诊断;实际应用表明,该程序在稳定性、可靠性、维护性等方面性能优越,满足机载武器系统测试的需求。
关键词:自动测试程序;发射控制系统;测试系统;LabWindows/CVIProgram Design of Airborne Weapon Test S ystem Based on LabWindows/CVIFan H uilin 1,2,Xu H ongji 1,Chen Danqiang 2(1.Changchun U niversit y of Science and Technology,Changchun 130022,China;2.Aviation University of Air Force,Changchun 130022,China)Abstract:Automatic test pr ogram,ap plied in the synth etic test system b as ed on VXI b us,is designed for testing the airb orn e weapon laun ch an d control sy stem of one type ing LabWindows/CVI,th rough modularizin g and vis ualizing design,autom atic test pro 2gram controls synth etic test system to collect signals from the lau nch and control sy stem,process data and diagnose fault.Th e application proves this program has excellent performan ces in stability,reliability an d maintenance etc.It can satis fy th e testing n eeds of airborne weap 2on system.Key word s :automatic test prog ram;launch and control system;test system ;LabWin dows /CVI0 引言目前,现代飞机装备了新型空空导弹、空地导弹、制导炸弹、航空炸弹、航空火箭弹以及航空机关炮等,飞机机载武器发射控制系统越来越复杂,对机载武器测试系统提出了更高的要求,即测试系统功能全、测试速度快,可靠性高。
labwindows-CVI-教程

l a b w i n d o w s-C V I-教程本页仅作为文档封面,使用时可以删除This document is for reference only-rar21year.MarchLabWindows/CVI基础教程序言LabWindows/CVI是National Instruments公司推出的一套面向测控领域的软件开发平台。
它以ANSI C为核心,将功能强大,使用灵活的C语言平台与数据采集,分析和表达的测控专业工具有机地接和起来。
它的集成化开发平台,交互式编程方法,丰富的控件和库函数大大增强了C语言的功能,为熟悉C语言的开发人员建立检测系统,自动测量环境,数据采集系统,过程监控系统等提供了一个理想的软件开发环境。
本教程面向的是那些从未使用过LabWindows/CVI的读者,但是假设读者以有了C语言的基础并且熟悉Windows 2000/9x/NT操作系统。
在每一章节的学习中,作者都是通过一个具体的实例让读者迅速的掌握本章的知识点;而不是长篇大论,述及边枝细叶,反而使读者望而却步,只见树木,不见森林。
想信通过对本教程的学习,读者可迅速掌握LabWindows/CVI编程思想及步骤,为读者日后进一步学习打下基础。
本书约定:“File>>Page Setup>>Options”File 这一种黑色斜体字是指多级菜单名,按扭名,窗口名或者是关键性词汇。
“>>”是指打开一个多级菜单或对话框。
如:File>>Page Setup>>Options是指你首先打开File 菜单,然后选择Page Setup项,最后从弹出的对话框中选择Options 项。
“说明:通过这种方式你可以修改Panel顶端所显示的名字。
”该种字体所写的文字是值得读者注意并记忆的内容。
“该椭圆形框所框住的内容是读者需修改的地方。
第一部分 CVI快速入门本部分通过编制一个简单的LabWindows/CVI程序,使读者对CVI编程环境,思想及步骤有一初步的认识。
LabWindows_CVI采集卡编程说明

7.
定时器程序
在定时器程序中被调用 //开关量采集命令 void ReadDI(void) { char DiStr[50]; unsigned char Str1[3]; int i; i=Rbh_DI(2,&DIValue[0]);//从驱动程序得到开关量采集结果 //显示开关量采集结果,用十六进制方式表示,每个字节的 8 位,每位代表一个开关量 状态 sprintf (DiStr, "Byte0= %02x, Byte1=%02x", DIValue[0],DIValue[1]); SetCtrlVal (panelhandle, PANEL_DISTR, DiStr); }
//定义采集的参数 int NumBuf;//采集的通道数 int NumSamp; int BegChn; int NumChn; int FrqSamp; int FrqFilter; int AmpGain; //下面的参数从驱动程序中读出 char ADCard_Name[100]; //采集卡名称 int Maxchn; //最大通道数 int LowFreq; //最低的采样频率 int HighFreq; //最高的采样频率 int MinSampNum; //最少的每包采样点数 float VZero; //AD 转换结果的零点 AD 值 float VMax; //AD 转换结果的最大 AD 值 int MaxBinChn; //最大二进制开关量个数
6.
定时器程序
定时器程序是高速连续采集的关键程序,在本程序中显示三个功能: z 高速、连续模拟量采集与曲线显示、数字显示功能; z 开关量采集与现实功能 z 采集状态信号灯控制功能 //定时器功能 int CVICALLBACK TIMER_AD (int panel, int control, int event, void *callbackData, int eventData1, int eventData2) { int i; switch (event) { case EVENT_TIMER_TICK: if(!FlagStartAD)return 0; //如果定时器没有启动就退出 i=ReadADResult(); //采集模拟量 ReadDI(); //开关量采集 //下面控制 LED 灯,当启动采集时,该状态灯一亮一灭 if(swTimer==0){ swTimer=1; //亮灭标志置 1 SetCtrlVal(panel, PANEL_LED_AD, 0);//标志灯亮 }else { swTimer=0;//亮灭标志清零 SetCtrlVal(panel, PANEL_LED_AD, 1);//标志灯灭 } break; } return 0; }
@+labwindows+cvi测试技术及工程应用 2-1

- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Page 2
UESTC ----ATS
ATS
Labwindows CVI简介
LabWindows/CVI是一个基于ANSI C的,用于开 发仪器控制,自动测试,数据采集等应用程序 的集成化的软件开发平台 特点
友好的界面编辑方式 可灵活使用的编程工具 功能强大的软件包
Page 3
Page 11
UESTC ----ATS
ATS
3.并发程序设计——定时器
怎样才能实现波形的动态更新呢?简单的方法 就是通过定时器,通过设定时间间隔,定时完 成波形的刷新。 在程序面板中添加定时器,设定定时器的时间 间隔,并设置定时器时间到时的回调函数,在 回调函数中添加需要定时完成的工作,就能实 现程序的并发执行。
Page 19
UESTC ----ATS
ATS
4.多线程程序-线程间的同步
Page 20
UESTC ----ATS
ATS
Eg4.线程同步中变量定义
HANDLE threadwaveHandle; HANDLE threadwaveHandle1; HANDLE createwavehandle; HANDLE dispwavehandle; DWORD WINAPI ThreadWaveProc(PVOID pParam); DWORD WINAPI ThreadCreateWaveProc(PVOID pParam); CRITICAL_SECTION cs;
Page 7
ATS
1.图形化应用程序的基本框架
UESTC ----ATS
ATS
Eg1.程序代码
int CVICALLBACK MainCallback(int panel, int control, int event, void *callbackData, int eventData1, int eventData2); int main(int argc, char *argv[]) { int hpanel; if ((hpanel = LoadPanel (0, "gui.uir", PANEL)) < 0)// 载入面板 return -1; /* Display the panel and run the UI*/ /* panel already in the UIR Editor.*/ DisplayPanel (hpanel); // 显示面板 InstallMainCallback (MainCallback, 0, 1); // 安装主回调函数 RunUserInterface (); // 运行用户接口程序 /* Free resources and return */ DiscardPanel (hpanel);//释放资源 return 0; Page 8
Page 13
UESTC ----ATS
ATS
Eg3.定时器回调函数代码
int CVICALLBACK TimerProc(int panel, int control, int event, void *callbackData, int eventData1, int eventData2) { …… switch (event) { case EVENT_TIMER_TICK: SetCtrlAttribute(PANEL, PANEL_GRAPH,ATTR_REFRESH_GRAPH,0); DeleteGraphPlot (PANEL, PANEL_GRAPH, -1, VAL_DELAYED_DRAW); for(i=0;i<DISPDATALEN;i++) { PlotPoint (PANEL, PANEL_GRAPH, XData[i],YData[i], VAL_SMALL_SOLID_SQUARE, VAL_RED); } i = RefreshGraph( PANEL, PANEL_GRAPH); break;
Page 21
UESTC ----ATS
ATS
Eg4.线程同步中线程的创建
int main(int argc, char *argv[]) { …… InitializeCriticalSection(&cs); createwavehandle = CreateEvent(NULL,TRUE,FALSE,NULL); dispwavehandle = CreateEvent(NULL,TRUE,FALSE,NULL); threadwaveHandle = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)ThreadWaveProc, ptr,0,&id); /* 创建显示波形线程 */ threadwaveHandle1 = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)ThreadCreateWaveProc , ptr,0,&createid); /* 创建构造波形线程*/ …… }
Page 17
UESTC ----ATS
ATS
Eg4.线程处理函数
DWORD WINAPI ThreadWaveProc(PVOID pParam) {…… while(1) { SetCtrlAttribute(PANEL, PANEL_GRAPH,ATTR_REFRESH_GRAPH,0); DeleteGraphPlot (PANEL, PANEL_GRAPH, -1, VAL_DELAYED_DRAW); for(i=0;i<DISPDATALEN;i++) { PlotPoint (PANEL, PANEL_GRAPH, XData[i],YData[i], VAL_SMALL_SOLID_SQUARE, VAL_RED); } i = RefreshGraph( PANEL, PANEL_GRAPH); } return 0; } Page 18
UESTC-ATS
自动测试系统
测试应用软件开发环境
Page1
UESTC ----ATS
ATS
本章要点
Labwindows CVI简介 测试应用程序举例
图形化应用程序的基本框架 有波形显示界面的ui程序设计 并发程序设计——定时器 并发程序设计——多线程程序 分析库应用举例 带波形显示的visa应用
UESTC ----ATS
ATS
2.有波形显示界面的ui程序
该程序在图形控件中显示波形,通过点击波形 更新按钮可以更新波形显示,点击清除波形按 钮可以清除波形显示 关注按钮处理函数
Page 9
UESTC ----ATS
ATS
Eg2.波形刷新按钮处理函数代码
int CVICALLBACK RefreshWaveProc(int panel, int control, int event, void *callbackData, int eventData1, int eventData2) { …… if(event == EVENT_COMMIT) {SetCtrlAttribute(PANEL, PANEL_GRAPH,ATTR_REFRESH_GRAPH,0); //将绘图空间设置为刷新方式 DeleteGraphPlot (PANEL, PANEL_GRAPH, -1, VAL_DELAYED_DRAW); //清屏 for(i=0;i<DISPDATALEN;i++) { PlotPoint (PANEL, PANEL_GRAPH, XData[i],YData[i], VAL_SMALL_SOLID_SQUARE, VAL_RED); // 画点 } i = RefreshGraph( PANEL, PANEL_GRAPH); // 更新绘图控件并显示 } return 0;
Page 10
UESTC ----ATS
ATS
Eg2.波形清除按钮处理函数代码
int CVICALLBACK ClearWaveProc(int panel, int control, int event, void *callbackData, int eventData1, int eventData2) { int i; if(event == EVENT_COMMIT) { SetCtrlAttribute(PANEL, PANEL_GRAPH,ATTR_REFRESH_GRAPH,0); //将绘图空间设置为刷新方式 DeleteGraphPlot (PANEL, PANEL_GRAPH, -1, VAL_DELAYED_DRAW); //清屏 i = RefreshGraph( PANEL, PANEL_GRAPH);// 更新绘图控件并显示 } return 0; }
UESTC ----ATS
ATS
4.多线程程序
挂起线程按钮处理,关闭程序时会出现问题? 解决的方法
临界区
EnterCriticalSection(&cs); PlotPoint(PANEL,PANEL_GRAPH,XData[i],YDat[ i],VAL_SMALL_SOLID_SQUARE, VAL_RED); LeaveCriticalSection(&cs);
Page 12
UESTC ----ATS
ATS
Eg3.开始和停止按钮操作的实现
//使能定时器
//使定时器无效
SetCtrlAttribute(hpanel, PANEL_TIMER,ATTR_ENABLED,1); SetCtrlAttribute(hpanel, PANEL_TIMER,ATTR_ENABLED,0);