Helm supports various GPI/O devices, allowing panels to control external legacy equipment, and to receive status and tallies from external equipment.
Output Controls
Control of GPI/O Outputs is straightfoward. Each GPI device provides commands to turn outputs on and off, and to pulse outputs.
From Lua:
H.Device:SwitchOn(1) -- Switch output 1 on
H.Device:SwitchOff() - Switch output 2 off
H.Device:PulseOn(3, 100) - Pulse output 3 on for 100ms, then off
H.Device:PulseOff(3, 100) - Pulse output 3 off for 100ms, then back off
You can read the current state of the outputs using the OutputState property. This is a string of 1’s and 0’s – Note this is least-significant bit first, to allow for large GPI devices and easy indexing.
An OnOutputStateChange event occurs whenever the state changes. This will also occur when the panel starts up.
Input Events
Each input line has an associated OnInputXOn and OnInputXOff event, allowing scripts for a particular line to be easily isolated.
As above, there is also an InputState property, and an OnInputStateChange event .
To access individual ‘bits’ from the InputState or OutputState, the following Lua function may be used.
function bit(s,v)
return s:sub(v,v) == '1'
end
-- Example use, to check input 4.
if bit(H.BFE.InputState, 4) then H.LABEL.Text = "Pressed!"
