摘 要:LabWindows/CVI是一个完全的标准C开发环境,用于开发虚拟仪器应用系统。Labwindows/CVI将源代码编辑、32位ANSI C编译、联结、调试以及标准ANSI C库等集成在一个交互式开发环境中。编程技术方面主要采用事件驱动方式与回调函数方式,编程方法简单易学。同时Labwindows/CVI对每一个函数都提供一个函数面板,可进行交互式编程,大大减少了源码语句的键入量,减少了程序语法错误,提高了工程设计的效率和可靠性。
关键字: LabWindows/CVI;ANSI C;事件驱动;回调函数;函数面板
一、LabWindows/CVI简介
LabWindows/CVI是一个完全的标准C开发环境,用于开发虚拟仪器应用系统。LabWindows/CVI提供内置式函数库用于完成数据采集、分析、和显示任务;它还提供简单的拖放式用户界面编辑器以及自动代码生成工具。利用这些功能,您可以在将代码加入到某项目之前,先对其进行互动式的测试。可以利用LabWindows/CVI定义和建立用户界面,生成或运行ActiveX组件,及开发多线程应用。如果把您掌握的C语言编程知识与LabWindows/CVI简单易用的特性结合在一起,您将以不可思议地速度开发出复杂的测量应用系统。
LabWindows/CVI的应用领域极其广泛,涵盖了军工,电讯,工业生产和航天等各种行业。
二、Labwindows/CVI的特点
LabWindows/CVI是一个完全集成式的开发环境,特别为建立以GPIB,PXI,VXI和插入式数据采集板卡为基础的测量系统而设计。该环境将互动性、简单易用的开发方式与ANSI C编译代码所特有的强大编程功能和灵活性有机地结合在一起。LabWindows/CVI提供了许多实用的特性,使您无需牺牲C代码的运行速度或源代码可管理性,便能引人注目地改进工作效率。
Labwindows/CVI将源代码编辑、32位ANSI C编译、联结、调试以及标准ANSI C库等集成在一个交互式开发环境中。因此,用户可以快速方便地编写、调试和修改应用程序,形成可执行文件在Windows和Sun Solaris操作系统中运行。
由于Labwindows/CVI的编程技术主要采用事件驱动方式与回调函数方式,编程方法简单易学,为用户在原来C语言开发的基础上建立新一代的虚拟仪器系统提供了完善的兼容性和很大的灵活性。
由于Labwindows/CVI对每一个函数都提供一个函数面板,采用它用户可进行交互式编程,大大减少了源码语句的键入量,减少了程序语法错误,提高了工程设计的效率和可靠性。
三、CVI中的事件一览
LabWindows/CVI所写的应用程序是基于事件驱动的。事件驱动的程序通过响应用户界面所发生的“事件”来执行代码、调用回调函数。这些事件可以是发生在面板上的对象或者是面板自身。使用LabWindows/CVI进行编程,可以生成事件驱动的代码。通过事件驱动代码,可以将用户界面中的控件连接到代码中的函数。每次对用户界面进行操作都会产生一个事件,LabWindows/CVI就会确定在何控件上发生了什么事件,如果对该控件有一个相应的回调函数,就会激活并运行该回调函数中的代码。
EVENT_LEFT_CLICK:
EVENT_LEFT_DOUBLE_CLICK:
EVENT_RIGHT_CLICK:
EVENT_RIGHT_DOUBLE_CLICK:
EVENT_KEYPRESS:
EVENT_GOT_FOCUS:
EVENT_LOST_FOCUS:
EVENT_DISCARD:
EVENT_CLOSE:
EVENT_PANEL_SIZE:
EVENT_PANEL_MOVE:
控件事件:
EVENT_COMMIT:
EVENT_LEFT_CLICK:
EVENT_LEFT_DOUBLE_CLICK:
EVENT_RIGHT_CLICK:
EVENT_RIGHT_DOUBLE_CLICK:
EVENT_KEYPRESS:
EVENT_GOT_FOCUS:
EVENT_LOST_FOCUS:
EVENT_DISCARD:
鼠标事件:
EVENT_RIGHT_CLICK
EVENT_RIGHT_DOUBLE_CLICK,
EVENT_LEFT_CLICK,
EVENT_LEFT_DOUBLE_CLICK
除此之外,还可以在程序里添加扩展的鼠标事件。
可以通过EnableExtendMouseEvents函数来响应
EVENT_MOUSE_MOVE,
EVENT_LEFT_MOUSE_UP,
EVENT_RIGHT_MOUSE_UP等事件。
然后使用DisableExtendedMouseEvents函数关闭该功能
四、回调函数类型
在CVI中完成软件交互的主要有控件,面板,菜单。对于不同的交互方式,CVI里对应了不同的回调函数。主要表现在回调函数的参数不一样。
控件回调函数:QuitCallback (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
面板回调函数:Test(int panel, int event, void *callbackData,
int eventData1, int eventData2)
菜单回调函数:MenuCallback(int menubar,int menuitem,void *callbackData,int panel)
五、函数面板
CVI中另一个最大的优点就是为每一个函数都提供一个函数面板,用户可以利用函数面板进行交互式编程,从而避免了记忆很多函数和手工输入很多源代码。同时在函数面板中也提供了详细的在线帮助,大大方便了程序的编写,提高了编程效率。
六、结束语
我们通过对Labwindows/CVI的简单介绍,以及应用特点的介绍和讲解,使大家对Labwindows/CVI区别于其它C语言开发环境的特点,以及明显的编程优势有了初步的了解,从而对CVI的认识和学习提供了一个良好的开端。
参考文献:
[1]张凤均等编著.Labwindows/CVI开发入门和进阶.北京航空航天大学出版.
[2]刘君华等编著.虚拟仪器编程语言:LabWindows/CVI教程.电子工业出版社.
[3]张毅刚 主编.虚拟仪器软件开发环境Lab Windows/CVI6.0编程指南.机械工业出版社
[4]zone.ni.com/devzone/cda/main.
[5]www.pansino.com.cn.