- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
LabWindows/CVI虚拟仪器设计技术基本控件使用之:回调函数
一般在使用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虚拟仪器设计技术基本控件使用之:三态开关
下一篇:利用信号调节器的抗混淆滤波器
实现混合信号、多模态传感器调节