Function Global 与Action Engine

2015-08-24 09:17:07   来源:eefocus   

关键字: Function  Global  Action  Engine

Action Engine的概念在LV的书籍中是看不到,国外一些LV高手创造了这个概念.暂时翻译成动作器吧.

任何语言编程,都有数据封装的问题.在面向对象的编程语言中处处可见.LABVIEW8.X增加了一部分类的概念,对数据封装自然就容易多了.这是另外一个话题.

一个Action Engine,我的理解是一个黑匣子操作,它可以接受外部命令并自动自行相应的操作,命令的具体执行过程外部是看不到了,类似于类中的属性和方法的概念.

比如开车,作为一个司机,只需要用方向盘控制方向,用油门和档位来控制速度,具体是如何实现的,司机是并不关心的,所以具体实现过程对司机来说是不透明的,这就是动作器的含义.

就本质来说,是基于消息发送的机制.

windows就是典型的采用消息来发送命令的.

LRESULT SendMessage(
HWND hWnd, // 目标窗口句柄
UINT Msg, // 被发送的消息
WPARAM wParam, // 第一个消息参数
LPARAM lParam // 第二个消息参数
);

hWnd---是接受消息的窗口句柄  Msg----消息(命令), wParam 和lParam是要传递的数据.

实际所谓Action Engine也是基于这个原理的.


举一个实际应用问题来进一步说明.为了简单,消息只采用命令方式,不传递任何数据.

一般的数据采集卡都有一个8位的数字量输出,每一位对应一个外部的输出点,控制电机,方向阀等.

我们分别命名为:bit 0--->Relay 0,1--->Relay1 .....7---Relay 7,我们需要对其中每一位都有置0和置1的功能.

可编制如下的命令组:

Relay0 On

Relay0 Off

...

Port On (全部On)

Port Off(全部Off)

Keep(可以改变,但不输出)

显然我们需要一个Enum类型的数据来描述上述命令,强烈建议使用自定义控件中的strict tyep def,这样如果需要修改,程序中任何地方都可以自动更新.



我们需要用Function Global方法保存一个U8数据来做代表这个8位输出口.


[1] [2]
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

推荐阅读

编辑:什么鱼
本文引用地址: http://www.eeworld.com.cn/Test_and_measurement/2015/0824/article_12886.html
[发表评论]
[加入收藏]
[打印本页]
[关闭窗口]
[返回顶部]
[RSS订阅]
小广播
每日新闻
最热点击
本周热门资源推荐
EEWORLD独家
论坛精华
精选博文