daplis_rtp.gui.synchronization_tab module

Synchronization tab — control two-board synchronized acquisition.

This tab drives two running instances of LinoSPAD_synchro.exe over TCP (one per board): it enables the external clock, verifies both boards are locked, and starts acquisition on both simultaneously. It is the GUI equivalent of the acquire.py command-line tool.

Saving is handled by each board’s own GUI: when a board acquires, if its AutoSave is on it writes to the folder configured there (SavePrefix). This tab therefore does not choose a save location — set it in each LinoSPAD_synchro instance.

Prerequisite: both board apps must already be running and “Listening” on their TCP ports (default 5555 / 5556) before using this tab. Use 25 MHz on the external clock (20 MHz never programs the DCM).

The TCP calls run in a background AcquisitionWorker (RUNHISTOGRAMS blocks until the acquisition finishes, so it must not run on the GUI thread).

class daplis_rtp.gui.synchronization_tab.AcquisitionWorker(boards, check_only, acq_timeout, parent=None)[source]

Bases: QThread

Run enable -> check -> acquire off the GUI thread.

Emits signals for logging, per-board clock status, and completion; never touches widgets directly. Saving is left to each board’s GUI (AutoSave).

__init__(boards, check_only, acq_timeout, parent=None)[source]
clock

str = …, revision: int = …, arguments: Sequence = …) -> PYQT_SIGNAL

types is normally a sequence of individual types. Each type is either a type object or a string that is the name of a C++ type. Alternatively each type could itself be a sequence of types each describing a different overloaded signal. name is the optional C++ name of the signal. If it is not specified then the name of the class attribute that is bound to the signal is used. revision is the optional revision of the signal that is exported to QML. If it is not specified then 0 is used. arguments is the optional sequence of the names of the signal’s arguments.

Type:

pyqtSignal(*types, name

clock_fail

str = …, revision: int = …, arguments: Sequence = …) -> PYQT_SIGNAL

types is normally a sequence of individual types. Each type is either a type object or a string that is the name of a C++ type. Alternatively each type could itself be a sequence of types each describing a different overloaded signal. name is the optional C++ name of the signal. If it is not specified then the name of the class attribute that is bound to the signal is used. revision is the optional revision of the signal that is exported to QML. If it is not specified then 0 is used. arguments is the optional sequence of the names of the signal’s arguments.

Type:

pyqtSignal(*types, name

done

str = …, revision: int = …, arguments: Sequence = …) -> PYQT_SIGNAL

types is normally a sequence of individual types. Each type is either a type object or a string that is the name of a C++ type. Alternatively each type could itself be a sequence of types each describing a different overloaded signal. name is the optional C++ name of the signal. If it is not specified then the name of the class attribute that is bound to the signal is used. revision is the optional revision of the signal that is exported to QML. If it is not specified then 0 is used. arguments is the optional sequence of the names of the signal’s arguments.

Type:

pyqtSignal(*types, name

log

str = …, revision: int = …, arguments: Sequence = …) -> PYQT_SIGNAL

types is normally a sequence of individual types. Each type is either a type object or a string that is the name of a C++ type. Alternatively each type could itself be a sequence of types each describing a different overloaded signal. name is the optional C++ name of the signal. If it is not specified then the name of the class attribute that is bound to the signal is used. revision is the optional revision of the signal that is exported to QML. If it is not specified then 0 is used. arguments is the optional sequence of the names of the signal’s arguments.

Type:

pyqtSignal(*types, name

run(self)[source]
class daplis_rtp.gui.synchronization_tab.Synchronization(parent=None)[source]

Bases: QWidget

Tab for controlling two-board synchronized acquisition over TCP.

BOARD_INFO = {0: ('Board 0  (dev 0 / #33)', 5555), 1: ('Board 1  (dev 1 / #21)', 5556)}
__init__(parent=None)[source]
daplis_rtp.gui.synchronization_tab.is_locked(status)[source]
daplis_rtp.gui.synchronization_tab.send_cmd(host, port, cmd, timeout=5)[source]

Send one newline-terminated command; return the response up to DONE.