CVS4 Component Video Switch
sponse string after a command is issued, and a Query Response will always follow an Acknowl-
edgement Response.
The Asynchronous Mode of Operation
In the Asynchronous mode the device sends a Query Response string anytime there is a state
change. For instance when an input is changed by the user by pressing a button on the front
panel, or using a remote control, or by the IR jack, or even if a serial command has been issued,
a Query Response string indicating an input change will be sent to the controller.
The advantage if this mode is the controller can be kept constantly in sync with the device
without having to send periodic polling commands. This disadvantages are: The controller must
be able to receive the Query Response strings in the background at unspecified times, and the
communications flow is slightly more complicated.
When issuing commands in the Asynchronous mode, the controller must be aware of any unso-
licited Query Responses that may be interjected into the communications flow.
For example:
LI?<CR>
Sent: Controller issues query command.
=O 1,3
Received: (unsolicited) Out 1 remapped to In 3.
+<CR><LF>
Received: Acknowledgment Response.
=P 0
Received: (unsolicited) Power turned off.
=LI 2,13<CR><LF>
Received: Query Response for LED intensities.
This represents a worst case scenario where unsolicited responses appear throughout the com-
munication sequence.
First the “
LI?<CR>
” command was issued by the controller.
While looking for an Acknowledgement or Error Response string, an unsolicited Query Response
is received, indicating the user has remapped Output 1 to Input 3, while the “
LI?<CR>
” com-
mand was being issued by the controller.
Next the Acknowledgment Response of the “
LI?<CR>
” command is received.
Next an unsolicited Query Response is received indicating the power has been turned off.
Finally the Query Response indicating the LED intensities is received.
The K.I.S.S.™ command structure was designed to make the above scenario very easy to deal
with. Since all Query Responses start with the ‘=’ character, it is easy to handle them asyn-
chronously, as they are received. This is best done by writing a new “Get Response” routine
that handles all Query Response internally (by looking for the ‘=’ character), and only passing
through non-query responses.
By using such a routine the above scenario becomes:
LI?<CR>
Sent: Controller issues command
+<CR><LF>
Received: Acknowledgement (or Error) Response
K.I.S.S.™
(Continued)