注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Leo

笑:胸怀,傲:实力,才能笑傲江湖。

 
 
 

日志

 
 

LabVIEW事件结构  

2011-01-12 15:30:57|  分类: 大学留笔 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
使用LabVIEW图形化语言开发的应用程序界面是图形化用户操作界面,也称为:GUI(graphical user interface),它的作用是与操作者实现人机对话形式的互动操作。这种对界面操作的互动响应在LabVIEW 6.1发布之前,只能通过“轮询(polling)”的方式来实现。轮询的方式的缺点是:需占用一定的CPU资源(在没有事件发生时)和灵活性不好。在LabVIEW6.1引入事件结构(Event Structure)后,采用事件结构来设计、实现的GUI操作则变得更加灵活、方便,并且不占用CPU的资源,这与先前采用轮询的方式来查询事件的方式相比要合理的多。下面结合应用项目中的设计实例来介绍GUI设计中的事件驱动。
        有关事件结构的一些基本概念、原理及使用方法在LabVIEW Help及许多书中都作了详细的讲解,这里我就不作更多地介绍了。
         事件结构通常包括以下部分:
     1、Event cases——包含有若干个注册的事件源及同等数目的Event case层,在每个Event case层中包含对该事件响应的处理程序。
     2、While循环 ——用来检测连续不断产生的事件
       事件结构中的While循环,是用来确保检测到连续不断发生的事件。如果没有这个While循环,无论有多少事件发生只能对第一个发生的事件进行处理,处理完后程序将退出事件结构。

—————————————————————————————————————————

菜单选项事件结构实例

  Agilent VT1415A是C尺寸、单槽寄存器基VXI模块,可以提供64个通道的多功能输入/输出的闭环控制功能。 


第1步、创建一个项目:综合参数测量仪

      按照我的设计习惯,首先在桌面上创建一个新的文件夹,命名为《综合参数测量仪》。然后,打开、运行LabVIEW开发环境,并选择开发环境中的:新建》项目。
      此后,在“项目浏览器”就可以看到一个新建的项目:"未命名项目1"。单击项目浏览器:文件》保存,并将该项目命名为:“综合参数测量仪”后,存放到桌面上的《综合参数测量仪》文件夹中。
      此时,项目创建完毕。


第2步、创建一个主vi:综合参数测量仪.vi

[转载]LabVIEW事件结构

       打开刚刚新建的“综合参数测量仪”项目,然后用鼠标右击该项目中的”我的电脑“选择:新建》VI,即创建了一个新的vi。
      用鼠标点击新vi的:文件》保存( 命名为:综合参数测量仪.vi)。
      主vi即宣告创建完毕。如例图所示。



第3步、设置 “综合参数测量仪.vi”的属性

[转载]LabVIEW事件结构

      打开刚刚创建的“ 综合参数测量仪.vi”,用鼠标点击:文件》VI属性,该vi的属性对话框弹出,如例图所示。
      也就是设置主vi的属性。



[转载]LabVIEW事件结构

       在“类别”窗口选择属“窗口外观”,设定:“窗口标题”和“自定义”选项,见例图。



[转载]LabVIEW事件结构

       用鼠标点击上图中的“自定义”按键,进入“自定义窗口外观“对话框。按例所示的方式选择各单元参数设定后,连续点击”确定“按键后,退出”VI属性“设定对话框。



[转载]LabVIEW事件结构

       “综合参数测量仪.vi“的属性基本设定完毕,在该vi的程序框图上,先创建一个While循环,并放置“停止”按键来控制这个While循环。然后,点击前面版上的运行按钮,程序开始运行,如例图所示。
       此时看到“ 综合参数测量仪”的前面版的上部保留了一个菜单栏,但内容不是我们所期望的。现在,按我们所要求的菜单栏来进行新的设计。



第4步、编辑设计菜单栏

[转载]LabVIEW事件结构

       在该vi的前面板选择:编辑》运行时菜单,此时系统弹出“菜单编辑器”对话框,选择“自定义”、“用户项”则可以进行自定义的菜单设计。



[转载]LabVIEW事件结构

       下面就来设计运行时菜单,首先在上图所示的“菜单项名称”一栏添入第一个菜单项目:“直流电压测量”,然后,点击“+”按键。
       项目菜单创建完成,在预览栏目中显示出第一个菜单项“直流电压测量”。



[转载]LabVIEW事件结构

下面添置该项目下的子菜单(如果没有子菜单,那么重复上述步骤进入下一个项目菜单的设计)。
       点击“右移”键,进入子菜单选项,在“菜单项名称”一栏添入:
“60V电压测量”,点击“+”
“15V电压测量”,点击“+”
“4V电压测量”, 点击“+”
“1V电压测量”, 点击“+”
“125mV电压测量”,点击“+”。
       然后点击“左移”按键,准备下一个项目菜单的设计。如例图所示。



[转载]LabVIEW事件结构

       在“菜单项名称”一栏添入:“直流电流测量”。然后点击“+”键以及“右移”键,继续在“菜单项名称”一栏添入子菜单名:“25mA电流测量”。如图所示。



[转载]LabVIEW事件结构

点击“+”键及“左移键”后,在“菜单项名称”一栏添入:“电阻测量”。然后, 点击“+”键及“左键”,在“菜单项名称”一栏添入子菜单名:
“两线电阻测量”
“四线电阻测量”两个子菜单。

同样,设定主菜单为:RTD温度测量,子菜单为:
       三线RTD温度测量
       四线RTD温度测量
同样,设定主菜单为:热电偶温度测量,子菜单为:
       K型热电偶温度测量
       J型热电偶温度测量
       S型热电偶温度测量
同样,设定主菜单为:应变测量,子菜单为:
        1/4桥应变测量
        半桥应变测量
        全桥应变测量
       至此,菜单设计完成,见例图。



[转载]LabVIEW事件结构

       关闭“菜单编辑器”试运行一下程序,状态见例图。



第5步、结合事件结构设计菜单选项的程序

[转载]LabVIEW事件结构

       首先,在“ 综合参数测量仪”的程序框图中的While循环里,添加一个”事件“结构。
       从图中可以看出,目前该事件结构只有一个事件源:”超时“。
       用鼠标右键点击事件结构的边框,在弹出的快捷菜单上,选择:“添加事件分支…”,
       在编辑事件对话框中,事件源选择“控件、停止,鼠标按下事件”。
       单击“确定”按键,这时就多了一个“停止”事件源。
       此时,我们可以将“超时”事件删除。并该程序进行修改,首先将“停止”按键的图标移动到While循环外,然后在该事件结构中放入一个“真”的布尔常量,连接到While循环的停止端子上,如下图所示。



[转载]LabVIEW事件结构

      此时,在运行该程序后,用鼠标点击“停止”按钮,程序将会停止下来。看来程序已经响应了这个停止运行的“事件”发生。下面我们来设计有关”菜单事件“的程序单元。



[转载]LabVIEW事件结构

       用鼠标右键单击事件结构的边框,会弹出一个快捷菜单,选择:添加事件分支...后会弹出一个新的“事件编辑”对话框。在此对话框中:
       事件源选择:本VI;
       事件选择:菜单选择(用户),则创建了用户菜单的事件分支。

         在用户菜单的事件分支放置一个case结构,并将所有的子菜单名字写入case选择器标签中。同时,将“分支选择器”与“项标识符”相连。



[转载]LabVIEW事件结构

       此后,只要在子菜单的相应分支中放置事件处理程序(动态调用相应的子vi)既可实现菜单的事件处理。下面给出调用“60V电压测量“的简单例子。
       这里动态调用的子vi,与上一节中介绍的动态调用子vi相同。动态调用的过程也一致。就不多谈了。



[转载]LabVIEW事件结构

       调用“60V电压测量“子vi。该子vi的程序框图见例图(示意图,只有一个While循环和停止按键)。
       所有这些项目和子项目vi,都应保存在项目的目录下。


       结合应用项目的设计,运行时菜单事件设计方法已经基本示意完成了(包括子vi的动态调用),只是所有子菜单中的测量程序框图都没有给出,需要读者自行设计(如果有机会可能后边还会继续介绍)。


事件结构注意事项:

        事件结构最适合人机对话界面的设计,不适合在事件处理过程中运行复杂的程序。比如:我们通过事件结构来进行动态调用复杂的运行程序,此时主程序前面版被“关闭”,直到复杂应用程序运行完成后,返回到主程序才可以响应新的事件发生(事件响应和处理的“握手”关系,换句话说,程序处理时也同时屏蔽了其它菜单事件的响应)。这样可以避免事件的“记忆”和“堆积”。

  评论这张
 
阅读(6891)| 评论(3)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017