输出动作,指的是由程序主动发出指令,对电路中某个通道进行控制,由硬件设备进行响应的过程。
IODevice& _device = IODeviceController::Instance()
.GetIODevice("PCI2312A");
// 指定通道输出
_device.SetDO(EKeys::OAxis_00, 1);
// 一次性控制多个通道
float _doStatus[16] = {1,1};
_device.SetDO(_doStatus);
IODevice& _device = IODeviceController::Instance()
.GetIODevice("PCI2312A");
// 指定输出动作
_device.SetDOOn("TurnOnLight"); // 等价于 _device.SetDO("TurnOnLight", 1);
_device.SetDOOff("TurnOnLight"); // 等价于 _device.SetDO("TurnOnLight", 0);
<IORoot>
<Device Name="Standard" Type="Standard" />
<Device Name="PCI2312A" Type="External" DllName="PCI2312A" Index="0">
<OAction Name="TurnOnLight">
<Key Name="OAxis_00"/>
<Key Name="OAxis_01"/>
<Key Name="OAxis_02" Scale="1" InvertEvent="False" />
</OAction>
</Device>
</IORoot>
正常调用输出时,为了避免频繁与设备进行指令交互,同一帧的输出指令会在帧循环结束一次性发送到指定设备,你可以通过同步输出立刻执行输出动作。
IODevice& _device = IODeviceController::Instance()
.GetIODevice("PCI2312A");
_device.SetDoOn("TurnOnLight");
// 同步输出
_device.DOImmediate();