虚拟仪器设计与应用CVI复习资料.docx

上传人:b****7 文档编号:9448695 上传时间:2023-02-04 格式:DOCX 页数:17 大小:99.92KB
下载 相关 举报
虚拟仪器设计与应用CVI复习资料.docx_第1页
第1页 / 共17页
虚拟仪器设计与应用CVI复习资料.docx_第2页
第2页 / 共17页
虚拟仪器设计与应用CVI复习资料.docx_第3页
第3页 / 共17页
虚拟仪器设计与应用CVI复习资料.docx_第4页
第4页 / 共17页
虚拟仪器设计与应用CVI复习资料.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

虚拟仪器设计与应用CVI复习资料.docx

《虚拟仪器设计与应用CVI复习资料.docx》由会员分享,可在线阅读,更多相关《虚拟仪器设计与应用CVI复习资料.docx(17页珍藏版)》请在冰豆网上搜索。

虚拟仪器设计与应用CVI复习资料.docx

虚拟仪器设计与应用CVI复习资料

要求:

1、设置电源开关键,电源打开,LED灯亮,系统开始工作;否则,系统不工作。

若电源未开,直接点击“OK”键,系统弹出错误报警对话框。

2、当电源打开后,定时器开始工作,定时间隔为1s。

每隔一秒,电表的示数增加一度。

电表示数的范围是0-20。

当示数增加到20度后,定时器关闭,电表停止不动,直至再次按下“OK”键重新计数。

3、“QUIT”按钮用于在任意时刻退出整个面板的工作。

#include

#include

#include"sfeef.h"

staticintpanelHandle,t;

doubletimer;

intmain(intargc,char*argv[])

{

if(InitCVIRTE(0,argv,0)==0)

return-1;/*outofmemory*/

if((panelHandle=LoadPanel(0,"sfeef.uir",PANEL))<0)

return-1;

DisplayPanel(panelHandle);

RunUserInterface();

DiscardPanel(panelHandle);

return0;

}

intCVICALLBACKQuitCallback(intpanel,intcontrol,intevent,

void*callbackData,inteventData1,inteventData2)

{

switch(event)

{

caseEVENT_COMMIT:

QuitUserInterface(0);

break;

}

return0;

}

intCVICALLBACKKaishi(intpanel,intcontrol,intevent,

void*callbackData,inteventData1,inteventData2)

{

switch(event)

{

caseEVENT_COMMIT:

if(t==0)

MessagePopup("错误","电源没开");

else

SetCtrlAttribute(panelHandle,PANEL_TIMER,ATTR_ENABLED,0);

break;

}

return0;

}

intCVICALLBACKTime(intpanel,intcontrol,intevent,

void*callbackData,inteventData1,inteventData2)

{

switch(event)

{

caseEVENT_TIMER_TICK:

timer++;

SetCtrlVal(panelHandle,PANEL_NUMERICGAUGE,timer);

if(timer==20)

{timer=0;

SetCtrlAttribute(panelHandle,PANEL_TIMER,ATTR_ENABLED,0);

}

break;

}

return0;

}

intCVICALLBACKDianyuan(intpanel,intcontrol,intevent,

void*callbackData,inteventData1,inteventData2)

{

switch(event)

{

caseEVENT_COMMIT:

GetCtrlVal(panelHandle,PANEL_BINARYSWITCH,&t);

SetCtrlVal(panelHandle,PANEL_LED,t);

break;

}

return0;

}

设计一窗口闪烁程序,使其每0.5秒闪烁一次。

表3-1主要控件基本属性列表

控件类型

ConstantName

属性设置

面板

Panel

PANEL

命令按钮

CommandButton

QUITBUTTON

CallbackFunction

QuitCallback

Lable

__Quit

双态按钮

ToggleButton

TOGGLEBUTTON

CallbackFunction

FlashCB

InitialState

off

Lable

控制按钮

定时器控件

Timer

 

TIMER

CallbackFunction

FlashTimerCB

Interval(seconds)

0.5

Lable

Timer

#include

#include

#include"wyf.h"

#include

staticintpanelHandle;

inthwnd;

intmain(intargc,char*argv[])

{

if(InitCVIRTE(0,argv,0)==0)

return-1;/*outofmemory*/

if((panelHandle=LoadPanel(0,"wyf.uir",PANEL))<0)

return-1;

DisplayPanel(panelHandle);

hwnd=GetCVIWindowHandle();

RunUserInterface();

DiscardPanel(panelHandle);

return0;

}

intCVICALLBACKQuitCallback(intpanel,intcontrol,intevent,

void*callbackData,inteventData1,inteventData2)

{

switch(event)

{

caseEVENT_COMMIT:

QuitUserInterface(0);

break;

}

return0;

}

intCVICALLBACKFlashCB(intpanel,intcontrol,intevent,

void*callbackData,inteventData1,inteventData2)

{intp;

switch(event)

{

caseEVENT_COMMIT:

GetCtrlVal(panelHandle,PANEL_TOGGLEBUTTON,&p);

SetCtrlAttribute(panelHandle,PANEL_TIMER,ATTR_ENABLED,p);

break;

}

return0;

}

intCVICALLBACKFlashTimerCB(intpanel,intcontrol,intevent,

void*callbackData,inteventData1,inteventData2)

{

switch(event)

{

caseEVENT_TIMER_TICK:

FlashWindow((HWND)hwnd,1);

break;

}

return0;

}

表2-1添加控件的基本属性列表

控件类型

ConstantName

属性设置

 

命令按钮

CommandButton

SAVE

CallbackFunction

SaveCB

Lable

__Save

LOAD

CallbackFunction

LoadCB

Lable

__Load

设计波形发生器,将产生的波形数据存储到文件中,并能够从文件中回读显示(要求用ANSIC库stdio.h中的文件打开和读写函数)。

#include

#include

#include

#include"wyf.h"

staticintpanelHandle;

doubledatapoints[100];

intmain(intargc,char*argv[])

{

if(InitCVIRTE(0,argv,0)==0)

return-1;/*outofmemory*/

if((panelHandle=LoadPanel(0,"wyf.uir",PANEL))<0)

return-1;

DisplayPanel(panelHandle);

RunUserInterface();

DiscardPanel(panelHandle);

return0;

}

intCVICALLBACKQuitCallback(intpanel,intcontrol,intevent,

void*callbackData,inteventData1,inteventData2)

{

switch(event)

{

caseEVENT_COMMIT:

QuitUserInterface(0);

break;

}

return0;

}

intCVICALLBACKSaveCB(intpanel,intcontrol,intevent,

void*callbackData,inteventData1,inteventData2)

{size_tnum;

FILE*fp;

switch(event)

{

caseEVENT_COMMIT:

fp=fopen("test.dat","wb");/*为输出打开一个二进制文件*/

num=fwrite(datapoints,sizeof(double),100,fp);/*写文件*/

fclose(fp);/*关闭文件*/

break;

}

return0;

}

intCVICALLBACKLoadCB(intpanel,intcontrol,intevent,

void*callbackData,inteventData1,inteventData2)

{

inti;

doubledata[100];

charfileName[MAX_PATHNAME_LEN];

switch(event)

{

caseEVENT_COMMIT:

i=FileSelectPopup("",".dat","","",VAL_LOAD_BUTTON,0,0,1,0,fileName);

if(i==1)

{

size_tnum;

FILE*fp;

fp=fopen(fileName,"rb");

num=fread(data,sizeof(double),100,fp);

fclose(fp);

DeleteGraphPlot(panelHandle,PANEL_GRAPH,-1,VAL_IMMEDIATE_DRAW);

PlotY(panelHandle,PANEL_GRAPH,data,100,VAL_DOUBLE,VAL_FAT_LINE,VAL_EMPTY_SQUARE,VAL_SOLID,1,VAL_RED);

}

break;

}

return0;

}

intCVICALLBACKxiao(intpanel,intcontrol,intevent,

void*callbackData,inteventData1,inteventData2)

{inti;

inttrace_color,shape;

if(event==EVENT_COMMIT){

GetCtrlVal(panelHandle,PANEL_RINGSLIDE,&shape);

switch(shape){

case0:

for(i=0;i<100;i++)

datapoints[i]=50*sin((((2*3.1415926536)/100)*i))+50;

break;

case1:

for(i=0;i<33;i++)

datapoints[i]=33.0;

for(i=33;i<67;i++)

datapoints[i]=67.0;

for(i=67;i<100;i++)

datapoints[i]=33.0;

break;

case2:

for(i=0;i<25;i++){

datapoints[i]=i*4;

datapoints[i+25]=100-(i*4);

datapoints[i+50]=i*4;

datapoints[i+75]=100-(i*4);

}

break;

case3:

for(i=0;i<100;i++)

datapoints[i]=rand()/32767.0*100.0;

break;

}

GetCtrlVal(panelHandle,PANEL_COLORNUM,&trace_color);

DeleteGraphPlot(panelHandle,PANEL_GRAPH,-1,VAL_IMMEDIATE_DRAW);

PlotY(panelHandle,PANEL_GRAPH,datapoints,100,VAL_DOUBLE,VAL_THIN_LINE,VAL_EMPTY_SQUARE,VAL_SOLID,1,trace_color);

}

return0;

}

编写一个函数发生器,要求:

能够通过用户界面选择产生正弦波、三角波、锯齿波、方波等函数波形用曲线图控件绘制用户选择的波形

表4-1主要控件的基本属性列表

控件类型

ConstantName

属性设置

面板

Panel

PANEL

命令按钮

CommandButton

QUITBUTTON

CallbackFunction

QuitCallback

Lable

__Quit

曲线图控件

Graph

GRAPH1

Lable

波形显示

 

下拉列表控件

Ring

 

WAVEFORM

CallbackFunction

WaveFormChoose

Label

波形选择

 

Label/Value

Pairs

Label

Value

0

Label

正弦波

Value

1

Label

三角波

Value

2

Label

锯齿波

Value

3

Label

方波

Value

4

#include

#include

#include

#include"wyf.h"

staticintpanelHandle,type=100,index=50,delay=30,width=10;

staticintn=2000,tablesize=100,t;

doublep=0.0,waveTable[100],x[2000];

doubleamphase=1.0,f=0.001,amp=5.0,first=1.0,last=100.0;

intmain(intargc,char*argv[])

{

if(InitCVIRTE(0,argv,0)==0)

return-1;/*outofmemory*/

if((panelHandle=LoadPanel(0,"wyf.uir",PANEL))<0)

return-1;

DisplayPanel(panelHandle);

RunUserInterface();

DiscardPanel(panelHandle);

return0;

}

intCVICALLBACKboxingxuanze(intpanel,intcontrol,intevent,

void*callbackData,inteventData1,inteventData2)

{

switch(event)

{

caseEVENT_COMMIT:

GetCtrlVal(panelHandle,PANEL_BOXINGXUANZE,&t);

switch(t)

{

case0:

DeleteGraphPlot(panelHandle,PANEL_BOXINGXIANSHI,-1,VAL_IMMEDIATE_DRAW);

break;

case1:

SinePattern(type,amp,0.0,2,waveTable);

break;

case2:

Triangle(type,amp,waveTable);

break;

case3:

SawtoothWave(type,amp,0.02,&p,waveTable);

break;

case4:

Pulse(type,amp,delay,width,waveTable);

break;

}

{if(t)

DeleteGraphPlot(panelHandle,PANEL_BOXINGXIANSHI,-1,VAL_IMMEDIATE_DRAW);

PlotY(panelHandle,PANEL_BOXINGXIANSHI,waveTable,type,VAL_DOUBLE,VAL_THIN_LINE,VAL_EMPTY_SQUARE,VAL_SOLID,1,VAL_RED);

}

break;}

return0;

}

intCVICALLBACKQuitCallback(intpanel,intcontrol,intevent,

void*callbackData,inteventData1,inteventData2)

{

switch(event)

{

caseEVENT_COMMIT:

QuitUserInterface(0);

break;

}

return0;

}

在本实验中,我们制作两数值型控件,当一控件值改变时,点击命令控件,另一控件值也随之改变。

同时,设计另一命令控件,当点击它时即可退出用户接口界面。

控件类型

ConstantName

属性设置

面板Panel

PANEL

数值控件Numeric

NUMERICGAUGE

数值控件Numeric

NUMERICTANK

命令按钮

CommandButton

QUITBUTTON

CallbackFunction

QuitCallback

Lable

__Quit

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1