Table of Contents

Joins

CommandFusion software uses a method of data assignment and object identification called 'Joins'. Joins are basically a way of assigning a value to a particular GUI object (or multiple objects). You can think of a join as the ID of a GUI object such as a Button, Slider, etc.

Joins are divided into four data types:

  1. Digital
  2. Analog
  3. Serial
  4. List

Digital Joins

A digital join has two possible values, 0 or 1 (off or on, low of high, active or inactive). This boolean data type allows button interaction, such as detecting button press/release and toggling the button, as well as showing/hiding subpages and performing page flips.

Within guiDesigner, digital join numbers will appear on a blue background above the object the join is assigned to when 'View > Display Object Join Numbers' is enabled.

The image below gives shows how a basic digital join system can work. Please note that this is only showing one of many possible ways that digital joins can work.

In the system shown above we are turning a projector on and getting feedback from the projector which updates the button state. It would work as follows:

  1. The inactive button with a digital join of 20 is touched
  2. This sends a power toggle command, via the TCP socket to the projector
  3. The projector turns on and sends feedback data via the TCP socket
  4. The feedback data is processed to see if it is feedback data which relates to the power state of the projector
  5. If it is, then the feedback processing you programmed into iViewer captures the power state. If the power state is high (on) then it updates any object with a digital join of 20 to active, if the power state is low (off) then is updates the button state to inactive

Analog Joins

An analog join has an integer value ranging from 0 (zero) to 65535. This whole integer data type allows for gauge and slider interactions, such as setting a gauge level or sending a level when adjusting a slider.
It can also be used to adjust the Interval of Page Timers.

Within guiDesigner, analog join numbers will appear on a red background above the object the join is assigned to when 'View > Display Object Join Numbers' is enabled.

The image below gives shows how a basic analog join system can work. Please note that this is only showing one of many possible ways that analog joins can work.

In the system shown above we are adjusting the volume level on an AV Receiver and getting feedback from the Receiver which updates the slider value to reflect the current level. This means that if the level is changed from another GUI or on the unit directly, the level is updated automatically. It would work as follows:

  1. The slider with an analog of 20 is dragged to the desired level
  2. This sends a volume level command, via the TCP socket to the AV receiver
  3. The AV receiver adjusts its level as per the command sent and feedback data is replied via the TCP socket
  4. The feedback data is processed to see if it relates to the volume level of the AV Receiver
  5. If it does, then the feedback processing you programmed into iViewer captures the volume level. The slider is automatically updated to show the volume level that the AV Receiver is currently set to

Serial Joins

A serial join has a string value, with no length limitation set on the CommandFusion end (a Control System being used may have it's own string length restrictions however). This string data type allows showing dynamic text, dynamic images URLs, webview URLs, etc. A serial join value can also be set using Input Fields within iViewer.

Within guiDesigner, serial join numbers will appear on a black background above the object the join is assigned to when 'View > Display Object Join Numbers' is enabled.

The image below gives shows how a basic serial join system can work. Please note that this is only showing one of many possible ways that serial joins can work.

In the system shown above we are touching a button which sends a command to the AV Receiver to go to the next input. The AV Receiver would then send feedback to the GUI, automatically showing the name of the input on the button. It would work as follows:

  1. The button with a serial join of 20 is touched
  2. This sends a next input command, via the TCP socket to the AV receiver
  3. The AV Receiver switches its input as per the command sent and feedback data is replied via the TCP socket
  4. The feedback data is processed to see if it relates to the input name of the AV Receiver
  5. If it does, then the feedback processing you programmed into iViewer captures the input name. The button text updates to show the input name that the AV Receiver is currently set to

List Joins

A list join is used to identify a List object.

Within guiDesigner, list join numbers will appear on a purple (dark red in older versions of guiDesigner) background above the object the join is assigned to when 'View > Display Object Join Numbers' is enabled.

The image below gives shows how a basic list join system can work. Please note that this is only showing one of many possible ways that list joins can work.

In this example, the user is selecting an album. A list is then being populated with the album track information. It would work as follows:

  1. The user selects the album by pressing the “Select Album” button. This could be any way of selecting an album e.g. pressing an album cover
  2. iViewer requests the album track list from the media server
  3. iViewer then looks at the data returned from the media server and determines if it is a track item. (In this example we are loading one track item at a time, and tracks 1 and 2 have already been loaded)
  4. iViewer creates a new list item at the end of list join 20 (the list we are populating with track items)
  5. iViewer then sets serial join 1 to the track number of the next track. In this case it is track 3
  6. Then iViewer sets serial join 2 as the track name
  7. The process then starts again with the next track until there are no tracks remaining

Join Numbers

The actual number used can be in the range from 0 to 999999999. The same join number and join type can be assigned to multiple objects in your GUI, and they will all react to a change of the join value.

A join number of zero (0) is a special case, which means “no join assigned”. By default all objects are assigned a zero join.