Getting started with device feedback
Feedback sequences are used to make support for two-way communication.
A feedback sequence can be created from the ribbon or by right clicking in the left menu.
For each feedback sequence you can choose to request for or listen for a reply from the device.
The difference between the two, is that when you request, it is like you asking a question to someone and then waiting for the answer, when you're listening, the device is continuously sending a stream of information you need to listen to.
If you are using "Request for", you must enter the command (question) to send to the device and how often to send it. It is highly recommended not to send to often; a minimum of 3000 ms should be low enough to keep the control system synchronized with the device.
After both (request/listen) you must enter the possible replies for the request. A reply is the answer from the device you're controlling.
There are basically 3 different options here:
- String where you must enter all the possible replies the device can reply to the request command. Add/remove replies from buttons in the ribbon. This mode should be used for basic sequences, like power, source etc.
- Number range where you have only one reply command, but where you should set the range of the replies. This mode should be used for level sequences.
- Time which is more or less the same as 'Number range', but here you must select a time format instead of the range. This mode should be used for e.g. lamp and filter.
It is also important to choose the sequence which the feedback should link to, so that the bridge between the feedback and sequence can be established, as shown below for a source:
Example: The projectors source is change by the user directly on the projector, the control system realizes this from the feedback and shows this change on the LED's or in the user interface. Also the remaining functions on the button, where the source is, will execute the remaining functions, e.g. drop the screen and turn on the amplifier.
When using the Listen for, often the information sent from the device, will be part of a larger transmission with many informations. The job is to filter all the irrelevant info and use what we need.
Below is an example for finding the lamp hours on a projector:
In this case a filter or lamp request used for projectors.
Example (Lamp):
The data we want to find is: "LAMP:1000" and the offset are set to 0. Off course we don't know the exact lamp time, but for now let's say it is 1000.
Data from projector |
F |
I |
L |
T |
E |
R |
: |
1 |
2 |
0 |
0 |
; |
L |
A |
M |
P |
: |
1 |
0 |
0 |
0 |
<CR> |
Data to compare |
L |
A |
M |
P |
: |
1 |
0 |
0 |
0 |
In this case, the commands do not match.
The data we want to find is: "LAMP:1000" and the offset byte is set to 12, because it is after the 12th byte we have to start reading.
Data from projector |
F |
I |
L |
T |
E |
R |
: |
1 |
2 |
0 |
0 |
; |
L |
A |
M |
P |
: |
1 |
0 |
0 |
0 |
<CR> |
Data to compare |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
L |
A |
M |
P |
: |
1 |
0 |
0 |
0 |
In this case, the commands match.
So to sum up, the offset can be usefull when the filter and lamp time is returned in the same string from the projector.
Value types
String:
The "Value format" can be one of the following:
Decimal: (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18)
Hexadecimal: (1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,10,11,12)
Hexadecimal (capital): (1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,10,11,12)
You can use the "Max number of bytes for value" to specify the number of bytes to use of the value.
E.g. if the answer from the projector is in the format hhhhmm, you can set this value to 4, to only use the hours. This function can also be usefull if the command is ended with <CR>.
You can use the "Thousand separator" if the value is separated with either comma (,) or dot (.).
E.g. if the answer from the projector is x,xxx hours, you can set this value to comma (,).
Binary:
In "Number of bytes for value" you specify the number of bytes that the value is represented in.
"The first selected byte" can be either LSB or MSB. LSB is also known as little-endian which means the first byte is the least significant byte and the last byte is the most significant byte.