The labscript_devices module contains the low-level hardware interfacing code that intermediates between the labscript API (converting labscript instructions into hardware instructions) as well as the BLACS GUI (which communicates directly with the hardware).

Each “device” is made up of four classes that handle the various tasks.

  • labscript_device (derives from Device)

    • Defines the interface between the labscript API and generates hardware instructions that can be saved to the shot h5 file.

  • BLACS_tab (derives from DeviceTab)

    • Defines the graphical tab that is present in the BLACS GUI. This tab provides graphical widgets for controlling hardware outputs and visualizing hardware inputs.

  • BLACS_worker (derives from Worker)

    • Defines the software control interface to the hardware. The BLACS_tab spawns a process that uses this class to send and receive commands with the hardware.

  • runviewer_parser

    • Defines a software interface that interprets hardware instructions in a shot h5 file and displays them in the runviewer GUI.

The labscript_suite provides an extensive list of device classes for commercially available hardware. Furthermore, it is simple to add local user devices to control instruments not already within the labscript-suite.