Specifications
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 










