原创 CVI的事件机制与回调函数

2011-3-27 13:38 4951 0 分类: 软件与OS

 


CVI的工作流程是基于事件的,用户动作产生事件,然后对事件进行相应的响应。我们来看下面一张图(该图源于CVI的帮助文档):


e10435c5-5a5c-4f68-97cf-1546cf9d7a88.jpg



左边的大方框为面板以及面板上各类控件的表示,右边的Source(.c)File里面有4个函数,下面三个是回调函数,也就是我们在编辑面板以及控件的属性时,给它们分配的回调函数。


 


直观来讲,当用户有了操作, CVI就会进行相应的响应并产生事件,然后根据事件调用回调函数,并执行回调函数中的用户代码。


 


右边最上面一个是main函数,CVI程序启动时,首先执行的是main函数。在main函数中进行必要的初始化,然后进入到事件循环中。在事件循环中,CVI不断的获取事件,然后根据事件进行相应的处理。


 


看看下面一张图(来自CVI的帮助文档):


e120fd9a-3b60-4a0a-a86e-33a7b5f5a535.jpg



注意到左边是面板,用来和用户进行交互,将用户的操作转换成相应的事件,并放到事件队列中。然后在事件循环中使用GetUserEvent()函数来获取事件,并调用相应的回调函数进行处理。


 


可以看到,面板只负责和用户交互,将用户的操作转换成事件,然后事件循环负责监控事件并将事件分派给相应的回调函数,而回调函数一般都由用户自行编写,以实现所需的功能。


 


在我们的第一个实例中,main函数中的代码如下:


int main (int argc, char *argv[])


{


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


                   return -1; /* out of memory */


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


                   return -1;


         DisplayPanel (panelHandle);


         RunUserInterface ();


         DiscardPanel (panelHandle);


         return 0;


}


 


注意到第5行中的LoadPanel函数,该函数将用户画好的面板装载到内在中,然后在第7行用DisplayPanel函数将它显示出来。这一切做好之后,就调用RunUserInterface函数了。这个函数是不会返回的,它里面实现了事件循环,即不断的获取事件、分派事件。


 


当然,用户有需要可以自行编写事件循环,自己处理事件以及分派工作。如果用户想自行编写,那么调用GetUserEvent函数。


 


 

文章评论0条评论)

登录后参与讨论
相关推荐阅读
KingsRover 2011-04-05 20:26
windows消息与CVI事件
  这里,主要讲一下windows消息和Labwindows/CVI的事件,这里全部都是个人的看法。如有雷同,十分荣幸。如有误解,欢迎指正。   我们都知道windows程序的运行是基于消息机制的,用...
KingsRover 2011-03-30 22:36
消息框的使用——MessagePopup
  我们重新建立一个工程,并画出如下简单的界面:双击面板的空白处,在弹出的对话框中做如下配置:配置好面板以后,双击“OK”按钮,在弹出的对话框中做如下配置:然后,Code>>Generat...
KingsRover 2011-03-26 15:20
关于常量名和ID
      这一篇文章里面,大胆的阐述了一些个人观点,欢迎读者朋友批评指正。   现在我们知道设置面板属性、控件属性时,都要设置它的常量名。那么常量名是什么?NI似乎并没有给予明确的说明。但是,通过对...
KingsRover 2011-03-26 14:48
对第一个实例的讲解
  首先,声明一下,本人英文不太好,很多地方翻译得会不够准确,有些地方的叫法可能也是不够合理的,但是这些并不影响我们应用LabWindows/CVI(后面简记为CVI)来编写我们的上位机。 一.面板属...
KingsRover 2011-03-20 14:52
第一个Labwindows/CVI实例
 Labwindows/CVI第一次启动,首先会进入如下所示的界面。如果不想以后首先进入到这里,那么取消左下角的“Show at Startup”。这里不去管它,点击标题栏中的叉号将其关闭,关闭后显示...
广告
EE直播间
更多
我要评论
0
0
广告
关闭 热点推荐上一条 /5 下一条