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位输出口.