# SCPI Tree

SCPI Basics

- Program Message Terminator
- Short or Long Forms
- White Space
- Combining Commands
- Adding Parameters to a Command
- String Arguments
- Numbers
- Infinity Representation
- Queries
- Endianness of Returned Binary Block Data
- NaN (Not A Number)
- Sequential and Overlapped Commands
- SCPI Tree

In accordance with IEEE 488.2, the instrument's commands are grouped into subsystems. Commands in each subsystem perform similar tasks. The command tree refers to the relationship of the commands to each other. You can view this relationship in the SCPI Remote Command Tree Viewer. The IEEE 488.2 common commands do not affect the position of the parser within the tree. A leading colon or a program message terminator (<NL> or EOI true on the last byte) places the parser at the root of the command tree. A leading colon is a colon that is the first character of a program header. Executing a subsystem command places you in that subsystem until a leading colon or a program message terminator is found.

The commands can be placed into two types: common commands and and subsystem commands. Common commands (defined by IEEE 488.2) control functions that are common to all IEEE 488.2 instruments. These commands are independent of the tree and do not affect the position of the parser within the tree. `*RST (Reset)` is an example of a common command. Subsystem commands are grouped together under a common node of the command tree, such as the `:SYSTem Subsystem` commands. Only one subsystem may be selected at a given time. When Infiniium 2026 is initially started, the command parser is set to the root of the command tree and no subsystem is selected.

Command headers are created by traversing down the command tree. A legal command header from the command tree would be `:TIMebase:XRANge`. It consists of the subsystem followed by a command separated by colons. The compound header contains no spaces. In the command tree, use the last mnemonic in the compound header as a reference point (for example, `XRANge`). Then find the last colon above that mnemonic (`TIMebase:`). That is the point where the parser resides. Any command below this point can be sent within the current program message without sending the mnemonics which appear above them (for example, `SCALe`). Use a colon to separate two commands in the same subsystem,

    :TIMebase:XRANge 300E-6;POSition 10E-12

The colon between `TIMebase` and `XRANge` is necessary because `:TIMebase:XRANge` specifies a command in the `:TIMebase` subsystem. The semicolon between the `XRANge` command and the `POSition` command is required to separate the two commands. The `POSition` command does not need `:TIMebase` preceding it because the `:TIMebase:XRANge` command sets the parser to the `:TIMebase` node in the tree.