labwindowscvi测试应用程序编程
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-教程

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教程

第一章 : 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 面板的设计,准备了许多专业控件,如:曲线图控件、带状图控件、表头、旋钮和指示灯等,以适应测控系统软件开发的需求,利用这些控件可以设计出专业的测控程序界面。
CVI驱动程序编写入门

CVI驱动程序编写入门仪器驱动程序有一个VPP规范(VXI即插即用),这个VPP规范中介绍仪器驱动的架构,使用的接口及前面板规范,函数原形规范等等。
看过这个规范的朋友可能知道,VPP就是对CVI开发仪器驱动的规范。
在开始编写驱动之前,请先安装NI-Visa、labwindows8.0下面介绍如何用CVI编写仪器驱动•生成仪器驱动程序工程文件(.prj)•设计函数树和函数面板(.fp, .c, .h)•完成驱动程序每个函数的代码(.c)•编译调试,生成动态链接库1 新建工程文件双击labWindows/CVI程序文件,打开CVI。
在“File”下拉菜单中选择“New”,再选择“Project”创建工程,弹出如图1-1对话框图1-1 创建工程在对话框中有两个单选项,前一个指在当前工作区创建工程,后一个指新建一个工作区创建工程。
通常选则后一个,这样在一个工作区对应一个工程,简单明了。
其他保持默认。
单击确定,创建工程完成。
2 设计函数树和函数面板这是最关键的一步,创建.fp、.c、.h等文件是仪器驱动中必不可少的文件,其中.fp 是仪器驱动的核心。
先介绍.fp创建过程。
在“File”下拉菜单中选择“New”,再选“Function Tree”,如图1-2图1-2 创建fp文件在右边白色区域,单击右键并点击”create Instrument”,弹出如下对话框,如图1-3图1-3 仪器节点“Name”指当前函数树的名字,”prefix”指函数名的前趋,在后面创建的.h文件中每一个函数名以zyosc开头,后面再跟实际函数名。
填写完后单击ok,如图1-4图1-4 函数树创建蓝色阴影部分的有这样的提示“create class or function panel window”,意思是在此可以创建类和函数前面板。
这里的类指用户如何划分函数,根据用户的需要将某些函数规为一类。
通常情况我们将错误消息、错误查询、复位,自检和版本查询等函数规为通用函数,具体操作硬件的部分的函数规为功能函数。
LabwindowsCVI串口程序

Labwindows/CVI串口程序最近对自己这篇文章再次查看了一下,感觉写得比较粗略,因此在此对其进行一些修改和详细讲解下。
希望对大家有用!串口的相关函数:1、打开串口函数OpenComConfig,相关定义如下:int OpenComConfig (int portNumber, char deviceName[], long baudRate, int parity, int dataBits, int stopBits, int inputQueueSize, int outputQueueSize);int portNumber 需要开启的串口号char deviceName[] 将要打开的串口号的名称,比如串口号1,名称为”COM1”long baudRate 设置串口读数的速度,波特率:110, 150, 300, 600, 1,200, 2,400, 4,800, 9,600, 14,400, 19,200, 28,800, 38,400, 56,000, 57,600, 115,200, 128,000, and 256,000,默认值为9600。
int parity 选择串口的校验模式,Default Value: 0—no parityValid Values:0 = no parity,1 = odd parity,2 = even parity,3 = mark parity,4 = space parityint dataBits 数据位数Default Value: 7 data bitsValid Values: 5,6,7 or 8 data bitsint stopBits 停止位Default Value: 1 stop bit Valid Values: 1 or 2 stop bits int inputQueueSize 串口输入的数据量,一般选择的4,096int outputQueueSize 串口输出的数据量,一般选择的4,096函数的返回值来判定串口的状态。
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的数据库与Matlab混合编程及实现

第5卷 第4期信息与电子工程Vo1.5,No.4 2007年8月INFORMATION AND ELECTRONIC ENGINEERING Aug.,2007文章编号:1672-2892(2007)04-0253-04基于LabWindows/CVI的数据库与Matlab混合编程及实现蒋 薇,夏连胜(中国工程物理研究院 流体物理研究所,四川 绵阳 621900)摘要:为了在Windows/CVI环境下实现基于数据库的复杂算法,讨论了LabWindows/CVI与Matlab混合编程以及LabWindows/CVI对数据库进行访问的几种方法,并在多脉冲电子束测控系统中运用三者混合编程,实现了大量现场数据的计算、管理等功能。
关键词:LabWindows/CVI;Matlab;数据库;多脉冲电子束;测控系统中图分类号:TP206+.1 文献标识码:AMixed Programme and Implementation Based on LabWindows/CVI Databaseand MatlabJIANG Wei,XIA Lian-sheng(Institute of Fluid Physics,China Academy of Engineering Physics,Mianyang Sichuan 621900,China)Abstract: Several methods of mixed programme based on LabWindows/CVI and Matlab are discussed.Some kinds of solution about accessing between LabWindows/CVI and database are also described.The controllingand measuring system of multi-pulsed current beam is designed and implemented under the truss ofLabWindows/CVI+database+Matlab.It can provide a way to implement some complex algorithms basing ondatabase in LabWindows/CVI.Key words: LabWindows/CVI;Matlab;database;multi-pulsed current beam;controlling and measuring system1引言NI公司的LabWindows/CVI(以下简称CVI)开发平台集成了从一般用户应用程序开发所需的界面编程到测试应用开发所需的各种仪器控制、数据获取、信息处理以及对数据库和网络应用开发的软件包,适用于自动测试、自动控制、测试仪器通信、测试硬件控制以及信号分析处理的软件开发。
@+labwindows+cvi测试技术及工程应用 2-1

- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ATS
1.图形化应用程序的基本框架
UESTC ----ATS
ATS
2.有波形显示界面的ui程序
该程序在图形控件中显示波形,通过点击波形 更新按钮可以更新波形显示,点击清除波形按 钮可以清除波形显示 关注按钮处理函数
Page 8
UESTC ----ATS
ATS
3.并发程序设计——定时器
UESTC-ATS
自动测试系统
第八章测试应用软件开发环境
Page1
UESTC ----ATS
ATS
本章要点
Labwindows CVI简介 测试应用程序举例
图形化应用程序的基本框架 有波形显示界面的ui程序设计 并发程序设计——定时器 并发程序设计——多线程程序 分析库应用举例 带波形显示的visa应用
怎样才能实现波形的动态更新呢?简单的方法 就是通过定时器,通过设定时间间隔,定时完 成波形的刷新。 在程序面板中添加定时器,设定定时器的时间 间隔,并设置定时器时间到时的回调函数,在 回调函数中添加需要定时完成的工作,就能实 现程序的并发执行。
Page 9
UESTC ----ATS
ATS
4.多线程程序
UESTC ----ATS
ATS
Labwindows CVI简介
LabWindows/CVI开发环境构成
四个编辑窗口
工作区窗口 用户界面编辑窗口 代码编辑窗口 函数面板编辑窗口
主要文件类型
工作区文件(*.cws)、工程文件、源文件、头文件、 函数面板文件
PageБайду номын сангаас4
临界区
EnterCriticalSection(&cs); PlotPoint(PANEL,PANEL_GRAPH,XData[i],YDat[ i],VAL_SMALL_SOLID_SQUARE, VAL_RED); LeaveCriticalSection(&cs);
Page 12
UESTC ----ATS
UESTC ----ATS
ATS
Labwindows CVI简介
如何创建一个应用?
创建工作区,工程 添加源文件 添加用户接口资源文件
Page 5
UESTC ----ATS
ATS
Labwindows CVI简介
Page 6
UESTC ----ATS
所有人机交互的都通过面板,控件,菜单来实 现。控件和菜单都置于面板上,在程序中要载 入面板通过函数LoadPanel()来实现; 程序中对用户操作的响应通过回调函数来实现 ,要关闭程序则在主回调函数中实现。 通过调用RunUserInterface ()函数,使整个 程序运行起来,该函数负责接收用户的控制信 息,并调用各控件或菜单的回调函数。 程序执行完毕,需要释放资源。
Page 2
UESTC ----ATS
ATS
Labwindows CVI简介
LabWindows/CVI是一个基于ANSI C的,用于开 发仪器控制,自动测试,数据采集等应用程序 的集成化的软件开发平台 特点
友好的界面编辑方式 可灵活使用的编程工具 功能强大的软件包
Page 3
Page 14
ATS
5.分析库应用举例
CVI提供了丰富的分析库
信号的产生 数字滤波 频谱分析 统计分析 线性代数 ……
Page 13
UESTC ----ATS
ATS
6.带波形显示的visa应用
该程序通过GPIB 接口程控TDS2012 对校准波形进行 测量,并将测得 数据读回,回显 到波形显示区。
定时器的缺点 多线程的特点 线程的设置
UI线程 工作线程
该用例线程设置
用户线程 波形刷新线程
Page 10
UESTC ----ATS
ATS
4.多线程程序
Page 11
UESTC ----ATS
ATS
4.多线程程序
挂起线程按钮处理,关闭程序时会出现问题? 解决的方法