512 Chapter6
Programming Fundamentals
Improving Measurement Speed
Programming Fundamentals
Use binary data format instead of ASCII
The ASCII data format is the instrument default since it is easier for
people to understand and is required by SCPI for *RST. However, data
input/output is faster using the binary formats.
:FORMat:DATA REAL,64 selects the 64-bit binary data format for all
your numerical data queries. You may need to swap the byte order if
you are using a PC rather than UNIX. NORMal is the default byte order.
Use :FORMat:BORDer SWAP to change the byte order so that the least
significant byte is sent first. (Real,32 which is smaller and somewhat
faster, should only be used if you don’t need full resolution for your
data. Some frequency data may require full 64 bit resolution.)
When using the binary format, data is sent in a block of bytes with an
ASCII header. A data query would return the block of data in the
following format: #DNNN<nnn binary data bytes>
To parse the data:
• Read two characters (#D), where D tells you how many N characters
follow the D character.
• Read D characters, the resulting integer specifies the number of data
bytes sent.
• Read the bytes into a real array.
For example, suppose the header is #512320.
• The first character/digit in the header (5) tells you how many
additional digits there are in the header.
• The 12320 means 12 thousand, 3 hundred, 20 data bytes follow the
header.
• Divide this number of bytes by your current data format (bytes/data
point), 8 for real,64. For this example, there are 1540 data points in
the block of data.
Minimize the number of GPIB transactions.
When you are using the GPIB for control of your instrument, each
transaction requires driver overhead and bus handshaking, so
minimizing these transactions reduces the time used.
You can reduce bus transactions by sending multiple commands per
transaction. See the information on “Putting Multiple Commands on
the Same Line” in the SCPI Language Basics section.
If you are using the
MEASURE key measurements and are making the
same measurement multiple times with small changes in the
measurement setup, use the single READ command. It is faster then
using INITiate and FETCh.