Crestron
SIMPL+
Software
SIMPL+ program. The value of any output is the value of the signal as seen by the
outside SIMPL program at that instant. This is critical considering that SIMPL+ does
not necessarily “propagate” outputs to the SIMPL program each time they are
changed in the program. As a general rule, assume that analog and serial outputs are
propagated at the time they are assigned new values. However, digital signals are not
propagated until a task switch occurs.
This explains reading values of analog and digital outputs, but why is it that string
outputs cannot be read? The reason has to do with the nature of serial signals in
SIMPL. Namely that these signals do not actually store strings in them, but rather
point to locations in memory where a string exists. Since the data stored at a
particular location in memory can change at some later time, there is no guarantee
that the string data is still there. As a result, SIMPL+ does not allow a string output
to be examined.
Examine the following code example.
DIGITAL_OUTPUT d_out;
ANALOG_OUTPUT a_out;
STRING_OUTPUT s_out;
PUSH someEvent
{
d_out = 1; // set this digital output to ‘on’
a_out = 2000; // set this analog output to 2000
s_out = "hello"; // set this string output to "hello"
if (d_out = 1) // this WILL NOT be true until the
Print ("d_out is on\n"); // next task-switch
if (a_out = 2000)
// this WILL be true
Print ("a_out = 2000");
if (s_out = "hello")
// this WILL NOT be true due to the
Print ("s_out is hello"); // nature of serial signals
ProcessLogic(); // force a task-switch
if (d_out = 1) // NOW this is true
Print ("d_out is on\n");
}
Function Main()
// initialization
{
d_out=0;
a_out = 0;
}
Programming Guide – DOC. 5789A
SIMPL+
•
15