Engineering / User Graphical Interface for cRIO systems. Provides generic GUI classes as well as SALobj specific classes.
Under python/lsst/ts/criopy, the directories are:
- aircompressor widget for M1M3-ComCam air compressor
- gui generic GUI widgets
- actuatorsdisplay contains widgets to plot actuators
- custom_labels contains plenty of QLabel childs to be used building up user interface
- sal contains SAL bindend Labels. Please see SALComm for details
- timechart contains QtCharts.QChart subclasses to build up real-time graphs
- m1m3 widgets for M1M3 support system
- m1m3ts widgets for M1M3 thermal system
- vms graphs for ts_VMS
Applications are located in bin directory. Before running those, please make sure that required Python packages (in python directory) are available:
python3.8 -c "from lsst.ts.criopy.gui import *"
shall pass without error.
The following command shall install those commands and packages needed for running them for you.
pip install .
GUI/EUI for M1M3 static supports. Allows to perform various M1M3 operations, including FA bump testing and manual mirror positioning. Requires ts_m1m3support CSC running.
GUI/EUI for M1M3 thermal system. Allows TS monitoring and performing various M1M3 thermal system operations. Requires ts_m1m3thermal CSC running.
GUI/EUI for VMS (Vibration Monitoring System). Plots various graphs from VMS, including PSD/FFT/DFT. Requires ts_vms CSC running.
CLI for VMS logging. Can save VMS data as cvs or, with optional h5py, as HDF5.
- Python 3.8 or later
- numpy
- astropy
- PySide6 (QtCore, QtGui, QtCharts, QtWidgets)
- qasync
For SAL etc:
The GUI/EUI contains code which depends on ts_salobj and related infrastructure. Files in (and only in) python/lsst/ts/criopy/GUI directory are generics and don't depend on ts_salobj. All other code usually depends on ts_salobj, including code in GUI subdirectories (ActuatorsDisplay, SAL).
You shall be able to:
from lsst.ts.criopy.gui import *
to get access to common GUI widgets (UnitLabel & friends, various improved layouts,..).
make_idl_files.py MTM1M3 MTM1M3TS MTMount MTVMS
On systems with both PySide2 and PySide6 installed, qasync library needs QT_API environmental variable set to pyside6.
Heart of the application is SALComm. The module links ts_salobj callbacks with Qt Signals. Names of signals matches SAL events and telemetry topics. This allows for simple integration of DDS/SAL and GUI widgets. Widgets in need to receive SAL data accept SALComm as constructor parameter, and after setting up the widget SALComm provided Qt Signals are connected to slots in the widget.
Qt Slots are decorated with @Slot and usually not documented, as the only functions is to update widgets with data received from SAL/DDS. Please see PySide6 documentation and SALComm for details how this works.
It's perfectly fine to run GUIs from docker container. For that, a host machine must contain some X11 server. Docker container must be started with DISPLAY pointing to the X11 server display, such as this:
docker run -ti -e DISPLAY=127.0.0.1:0.0 <container>