- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
VI的动态调用37
? VI的动态调用
1、为什么要动态调用VI?
?????? 在图形化程序设计时,一个vi中可以包含一个或若干个子vi。这些子vi通常是被直接放置在程序框图中。习惯上,称这些子vi为:静态链接子vi。当程序加载时,这些子vi也同时也被加载到内存中。这个过程不仅费时,还浪费内存,在应用程序较小时还问题不大,可是当应用程序较复杂时,有可能会带来不便。???? ? 为了解决这个问题,可以使用vi动态调用的方法。与静态链接的vi不同,动态调用vi只有在需要运行该vi时才会将其加载,并在操作结束后又可将其从内存中释放。如果VI调用程序较大,采用动态加载VI的方式可以节省加载时间和内存。?????? 有时候我们希望能够自由地、任意切换操作界面和测量程序界面,并且希望在任何时候,前面板上仅运行一个程序界面。这样就能够保证良好地、准确地实现“人机对话”。完成这样的操作,同样可以采用动态调用vi的方法。?????? 前面我们曾经讨论过,vi分为两种类型:通用型vi和严格类型vi ,动态调用时对于不同类型的vi其动态调用的方式也不会相同。
2、通用型vi的动态调用方式
????? 我用一个修改后的应用程序的实例来说明动态调用的过程(只有程序的外壳,仅用来说明动态调用的过程)。首先建立一个“力测量项目”假如:“力测量应用程序”运行时,将根据测量目的调用二个不同的vi,它们都被存放在下图所示的力测量项目文件夹中:力测量主程序.vi(打包时的主vi)应力测量.vi压力测量.vi动态调用subvi.vi(我将它作成个子vi,便于以它地方使用)
下面运行主程序“力值测量主程序”,其前面版图如下图。
?????? 通常在我的设计中,前面版右上部的三个按键通过vi的属性设定为:仅允许“最小化”有效。其它两个全部“灰化”,不可操作。?????? 现在,来看前面版,上面共有三个按键开关,分别是:[压力测量]、[拉力测量]和[退出测量]。两个图片分别表示压力传感器和拉力传感器。?????? 它的程序框图见下图,按键的响应处理采用事件结构,下一节将会讲到,这里先不讨论。
?????? 上图中的事件结构为:“压力测量”鼠标按下。拉力测量的事件结构与此图相近,只是将“文件名”换成“拉力测量.vi“。?????? 从程序框图中,可以清楚的看到,键处理程序及动态调用的程序很简单(使用了动态调用子vi)。?????? 下面看看“动态调用子vi”的前面版和程序框图。
。????? 从动态调用子vi的程序框图来说明动态调用的过程:1、首先创建一个本vi的“引用”????? 因为是“力测量住程序”vi在作动态调用,所以这个“引用”就是本vi的“引用”。????? 该“引用”直接链接到FP.State属性节点,并设定枚举常数为“Hidden”。此时,“力测量住程序”的前面板被隐藏、不可见(前面板是存在的,但不可见)。????? 该“引用”同时向后传递。????? 同时建立被动态调用的vi通道????? 按数据流的工作方式,同时也完成了被动态调用的vi通道的路径建立(被调用vi必须在该路径下存在,否则系统将报错)。2、创建被调用vi的“引用”并执行动态调用????? 通过内置函数“打开vi引用”,创建该路径下被调用vi的引用。通过该引用调用“FP.Open”方法,该方法中的“Activate设定为:真(F)。????? 这时意味着被调用vi的前面板被打开,屏幕上仅显示”压力测量“程序的前面板。????? 通过该引用调用“Run VI”方法,该方法中的“Wait Until Done设定为:真(F)。等待,直到被调用vi运行结束。????? 此时,”压力测量“程序运行............,直到操作者点击”压力测量“前面板上的”退出“按键后,执行下一步操作。3、动态调用结束????? 当操作者点击”压力测量“前面板上的”退出“按键后,程序作两个操作,一是:利用FP.State属性节点,将枚举常数设定为“Standard”。此时,“力测量住程序”的前面板被打开、可见。二是:利用调用“FP.Ope”方法,将”压力测量“前面板关闭。同时关闭所有的“引用”。?????? 动态调用结束,屏幕上看到的还是:“力测量住程序”的前面板。?????? 注意:这种动态调用的关系是一种“握手”的关系,也就是说:主vi实施动态调用,并等待被调用vi运行完毕后,再返回到主vi。还有一种动态调用是非“握手”的关系,就是直接关闭主vi,仅运行被调用vi,这种方式不太安全,这里就不展示了。??????
被调用的“压力测量”和“拉力测量”前面板见上图。它们的程序框图很简单见下图。
3、严格类型vi的动态调用方式
??????? 我看到许多书的例子都
文档评论(0)