• 易迪拓培训,专注于微波、射频、天线设计工程师的培养
首页 > 测试测量 > 技术文章 > LabWindows/CVI虚拟仪器设计技术基本控件使用之:回调函数

LabWindows/CVI虚拟仪器设计技术基本控件使用之:回调函数

录入:edatop.com    点击:

一般在使用main 函数、WinMain 函数、DllMain 函数时,InitCVIRTE 函数的参数设置稍有不

同,其具体调用方式如下所示:

main 函数  
int main (int argc, char *argv[])   
{   
if (InitCVIRTE (0, argv, 0) == 0)   
return –1; /* out of memory */ //用户程序  
return 0;   
} WinMain 函数  
int __stdcall WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR  lpszCmdLine, int
nCmdShow)   
{   
if (InitCVIRTE (hInstance, 0, 0) == 0)   
return –1; /* out of memory */ //用户程序  
return 0;   
} DllMain 函数  
int __stdcall DllMain (void *hinstDLL, int fdwReason, void *lpvReserved)   


if (fdwReason == DLL_PROCESS_ATTACH)
{
if (InitCVIRTE (hinstDLL, 0, 0) == 0)
return 0;
//用户ATTACH 程序
}
else if (fdwReason == DLL_PROCESS_DETACH)
{
//用户DETACH 程序
CloseCVIRTE ();
}
return 1;

 

 

LabWindows/CVI 运行时库引擎主要用在程序发布,并安装在其他计算机上独立运行时。运行时库包括:User Interface Library、Advanced Analysis Library 、Formatting and I/O Library 、Utility Library、ANSI C Library 、RS-232 Library 、TCP Support Library 、Internet Library、Network Variable Library、DDE Support Library 、ActiveX Library 、DIAdem Connectivity Library 、TDM Streaming Library、.NET Library 等。

③ LoadPanel 函数装载用户界面文件(*.uir)或文本用户界面(*.tui)到内存中。装载后,面板不可见,需要调用DisplayPanel 函数来显示面板。

 

函数原型为:int LoadPanel (int Parent_Panel_Handle, char Filename[], int Panel_Resource_ID); Parent_Panel_Handle :父面板句柄。如果为0,则表示所装载的面板为顶层窗口;如果为面板句柄,则表示所装载的面板为该面板的子面板。

 

Filename[] :用户界面文件(*.uir )或文本用户界面(*.tui )的文件名。可以包含全部的路径名或只包含一个简单的文件名,如果为简单的文件名,则必须与工程文件在同一目录下。Panel_Resource_ID :面板常量名。

 

返回值:面板句柄。

④ DisplayPanel 函数将内存中装载的面板显示出来。函数原型为:

int DisplayPanel (int Panel_Handle); 

Panel_Handle :面板句柄。

⑤ RunUserInterface 函数

运行用户界面并响应回调函数事件。RunUserInterface 在程序开始后始终运行,直到调用

QuitUserInterface 函数时才返回。函数原型为:

int RunUserInterface (void); 

返回值:返回由用户在QuitUserInterface 函数的参数中设置的值。

 

⑥ QuitUserInterface 函数

QuitUserInterface 函数并不直接终止程序的运行,而是使RunUserInterface 函数返回一个特定值,并进入终止程序运行处理过程。

static int panelHandle;
int main (int argc, char *argv[])
{
int status;
if (InitCVIRTE (0, argv, 0) == 0)
return –1;
if ((panelHandle = LoadPanel (0, "sample.uir", PANEL)) < 0)
return –1;
DisplayPanel (panelHandle);
//返回值status 为10,即:QuitUserInterface 函数的参数设置值
status = RunUserInterface ();
DiscardPanel (panelHandle);
return 0;
}
//退出按钮
int CVICALLBACK QuitCallback (int panel, int control, int event, void *callbackData, int eventData1, int
eventData2)
{
switch (event)
{
case EVENT_COMMIT:
// QuitUserInterface 的参数值为10,即RunUserInterface 的返回值
QuitUserInterface (10);
break;
}
return 0;
}

⑦ DiscardPanel 函数释放面板资源,包含父面板下的子面板。函数原型为:

int DiscardPanel (int Panel_Handle);

 Panel_Handle :面板句柄。

⑧ SetCtrlVal 函数设置控件值。函数原型为:

int SetCtrlVal (int Panel_Handle, int Control_ID, …);

Panel_Handle :面板句柄。

Control_ID:控件常量,通常在头文件中声明。…:设置值。

⑨ rand 函数产生0~32767 之间的伪随机数。函数原型为:

int rand (void);

返回值:伪随机数。

点击浏览:矢量网络分析仪、频谱仪、示波器,使用操作培训教程

上一篇:LabWindows/CVI虚拟仪器设计技术基本控件使用之:三态开关
下一篇:利用信号调节器的抗混淆滤波器 实现混合信号、多模态传感器调节

微波射频测量操作培训课程详情>>
射频和天线工程师培训课程详情>>

  网站地图