A Command always consists of a single word, which can be followed by one or more parameters. Commands always start with an Asterisk ( * ) or a letter from A to Z and may never contain more than 32 characters. Only letters from A to Z and numbers from 0 to 9 are allowed in Command names. Commands are not case-sensitive, which means that you may mix any combination of upper-case and lower-case characters when sending a Command.
New commands should only be given after receiving a Prompt from the Slave, which indicates that the Slave is ready and waiting for new Commands.
Two Command types exist: Query Commands and Non Query Commands.
Query Commands always end with a question mark (for example *ERROR?, or READ?).
Query Commands may send zero or more lines of data back to the Master.
Each data line is ended by a Carriage Return character.
Finally, when no more data lines have to be sent, the Slave will send a => or a !> status Prompt to signal the completion of the Command.
Non Query Commands will never send any data back to the Master. Non Query Commands never end with a question mark (for example: *HOLD, or SELECT). The only thing sent to the Master in response to a Non Query Command is either a => or a !> status Prompt indicating the completion of the Command.
A Non Query Command may take some time to execute.
It is up to the Slave whether the user is allowed to abort a long running Command by sending an ESC character to the bus or not.
System Commands are very much like normal Commands with only one extra privilege:
They are the only Commands that can be executed when the Slave is selected by the Broadcast address.
A fixed set of System Commands is defined for the SB-Bus. Some of them are to be implemented in all Slaves, others are optional. All System Commands are described in the System Commands chapter.
The last Command is executed again if you simply send a Carriage Return character to the bus on an empty line.
This causes the last Command to be repeated, including all of its parameters.
In the event that the last Command resulted in a Syntax Error, we may assume that repeating it will trigger the Syntax Error again.
When no previous Commands were given, for instance when the Slave just got switched on, an Error will be reported. The *ERROR? System Command will then answer with a "NOTHING TO REPEAT ERROR".