IEEE488.2

Every SCPI interface is based on the IEEE488.2 protocol. This Python implementation separates the protocol into two layers:

  • IEEE488.2: IEEE488.2 API that implements the protocol based on the transport layer.

  • Transport: Transport layers responsible for lowest level of communcation (e.g. Ethernet).”

IEEE488.2

class ieee488_2.ieee488_2.ieee488_2(transport_inst: <module 'ieee488_2.transport' from '/home/docs/checkouts/readthedocs.org/user_builds/qblox-qblox-instruments/checkouts/v0.2.0/ieee488_2/transport.py'>)

Bases: object

Class that implements the IEEE488.2 interface.

__init__(transport_inst: <module 'ieee488_2.transport' from '/home/docs/checkouts/readthedocs.org/user_builds/qblox-qblox-instruments/checkouts/v0.2.0/ieee488_2/transport.py'>) None

Creates IEEE488.2 interface object.

Parameters

transport_inst (transport) – Transport class responsible for the lowest level of communication (e.g. ethernet).

Transport

class ieee488_2.transport.transport

Bases: object

Abstract base class for data transport to instruments.

close() None

Abstract method to close instrument.

write(cmd_str: str) None

Abstract method to write command to instrument.

Parameters

cmd_str (str) – Command

write_binary(data: bytes) None

Abstract method to write binary data to instrument.

Parameters

data (bytes) – Binary data

read_binary(size: int) bytes

Abstract method to read binary data from instrument.

Parameters

size (int) – Number of bytes

Returns

Binary data array of length “size”.

Return type

bytes

readline() str

Abstract method to read data from instrument.

Returns

String with data.

Return type

str

class ieee488_2.transport.ip_transport(host: str, port: int = 5025, timeout: float = 10.0, snd_buf_size: int = 524288)

Bases: ieee488_2.transport.transport

Class for data transport of IP socket.

__init__(host: str, port: int = 5025, timeout: float = 10.0, snd_buf_size: int = 524288) None

Create IP socket transport class.

Parameters
  • host (str) – Instrument IP address.

  • port (int) – Instrument port.

  • timeout (float) – Instrument call timeout in seconds.

  • snd_buf_size (int) – Instrument buffer size for transmissions to instrument.

close() None

Close IP socket.

write(cmd_str: str) None

Write command to instrument over IP socket.

Parameters

cmd_str (str) – Command

write_binary(data: bytes) None

Write binary data to instrument over IP socket.

Parameters

data (bytes) – Binary data

read_binary(size: int) bytes

Read binary data from instrument over IP socket.

Parameters

size (int) – Number of bytes

Returns

Binary data array of length “size”.

Return type

bytes

readline() str

Read data from instrument over IP socket.

Returns

String with data.

Return type

str

class ieee488_2.transport.file_transport(out_file_name: str, in_file_name: str = '')

Bases: ieee488_2.transport.transport

Class implementing file I/O to support driver testing.

__init__(out_file_name: str, in_file_name: str = '') None

Create file transport class.

Parameters
  • out_file_name (str) – Output file name/path to write all commands to.

  • in_file_name (str) – Input file name/path to read all command responses from.

close() None

Close file descriptors.

write(cmd_str: str) None

Write command to file.

Parameters

cmd_str (str) – Command

write_binary(data: bytes) None

Write binary data to file.

Parameters

data (bytes) – Binary data

read_binary(size: int) bytes

Read binary data from file.

Parameters

size (int) – Number of bytes

Returns

Binary data array of length “size”.

Return type

bytes

readline() str

Read data from file.

Returns

String with data.

Return type

str

class ieee488_2.transport.pulsar_dummy_transport(cfg_format: str)

Bases: ieee488_2.transport.transport

Class to replace Pulsar device with dummy device to support software stack testing without hardware. The class implements all mandatory, required and Pulsar specific SCPI calls. Call reponses are largely artifically constructed to be inline with the call’s functionality (e.g. *IDN? returns valid, but artificial IDN data.) To assist development, the Q1ASM assembler has been completely implemented. Please have a look at the call’s implentation to know what to expect from its response.

__init__(cfg_format: str) None

Create Pulsar dummy transport class.

Parameters

cfg_format (str) – Configuration format based on struct.pack format used to calculate configration transaction size.

close() None

Close and resets Pulsar dummy transport class.

write(cmd_str: str) None

Write command to Pulsar dummy. Stores command in command history (see ieee488_2.transport.pulsar_dummy_transport.get_cmd_hist()).

Parameters

cmd_str (str) – Command

write_binary(data: bytes) None

Write binary data to Pulsar dummy. Stores command in command history (see ieee488_2.transport.pulsar_dummy_transport.get_cmd_hist()).

Parameters

data (bytes) – Binary data

read_binary(size: int) bytes

Read binary data from Pulsar dummy.

Parameters

size (int) – Number of bytes

Returns

Binary data array of length “size”.

Return type

bytes

readline() str

Read data from Pulsar dummy.

Returns

String with data.

Return type

str

get_cmd_hist() list

Get list of every executed command since the initialization or reset of the class.

Returns

List of executed command strings including arguments (does not include binary data argument).

Return type

list