DAQ+GUI: Work in progress

This commit is contained in:
2025-06-26 12:12:36 +02:00
parent 467d754a4f
commit 1d9c8133c1
12 changed files with 151 additions and 73 deletions
+26 -11
View File
@@ -9,7 +9,7 @@ from aaredaqlib.coordinate import SmargonCoordinate, Coordinate
from aaredaqlib.models import DAQStatusModel, SampleShortInfoList, SampleShortInfo, SampleCameraSettings, \
AutofocusSettings
from aaredaqlib.raster_grid import RasterGridRequest, CompletedRasterGrid
from aaredaqlib.rotation_scan import RotationScanRequest
from aaredaqlib.rotation_scan import RotationScanRequest, CompletedRotationScan
SPREADHSEET_FREQUENCY = 25 # Every 5 seconds
@@ -22,7 +22,7 @@ class DAQWorker(QObject):
automated_scan_done = Signal(int, bool) # sample ID, success
run_number_incremented = Signal()
raster_scan_completed = Signal(CompletedRasterGrid)
standard_scan_completed = Signal(str)
standard_scan_completed = Signal(CompletedRotationScan)
def __init__(self, base_url: str | None, token: str, parent=None):
super().__init__(parent)
@@ -195,18 +195,25 @@ class DAQWorker(QObject):
def move_smargon(self, coord: SmargonCoordinate):
self.generic_put("beamline/smargon", coord.model_dump_json())
def handle_rotation_scan_response(self, reply: QNetworkReply):
try:
response_data = self.handle_response(reply)
parsed_response = CompletedRotationScan.model_validate_json(response_data)
self.standard_scan_completed.emit(parsed_response)
except Exception as e:
print(e)
self.http_error.emit(str(e))
@Slot(RotationScanRequest)
def standard_scan(self, r: RotationScanRequest):
self.run_number_incremented.emit()
self.generic_post("scan/rotation", r.model_dump_json())
request = QNetworkRequest(QUrl(f"{self.__base_url}/scan/rotation/result"))
request = QNetworkRequest(QUrl(f"{self.__base_url}/scan/rotation"))
request.setRawHeader(b"Authorization", f"Bearer {self.__token}".encode("utf-8"))
request.setRawHeader(b"Content-Type", b"application/json")
body = r.model_dump_json()
reply = self.__net_manager.post(request, QByteArray(body.encode("utf-8")))
if r.file_prefix is not None:
reply.finished.connect(lambda: self.standard_scan_completed.emit(r.file_prefix))
reply.finished.connect(lambda: self.handle_rotation_scan_response(reply))
def handle_raster_scan_response(self, reply: QNetworkReply):
try:
@@ -252,10 +259,10 @@ class DAQWorker(QObject):
@Slot()
def load_spreadsheet(self):
if self.__base_url is None:
print(f"GET /tell/spreadsheet")
print(f"GET /sample/spreadsheet")
return
request = QNetworkRequest(QUrl(f"{self.__base_url}/tell/spreadsheet"))
request = QNetworkRequest(QUrl(f"{self.__base_url}/sample/spreadsheet"))
request.setRawHeader(b"Authorization", f"Bearer {self.__token}".encode("utf-8"))
reply = self.__net_manager.get(request)
reply.finished.connect(lambda: self.handle_spreadsheet_response(reply))
@@ -318,12 +325,20 @@ class DAQWorker(QObject):
@Slot()
def unmount(self):
self.generic_post("tell/unmount")
self.generic_post("sample/unmount")
@Slot(SampleShortInfo)
def mount(self, s: SampleShortInfo):
self.generic_post(f"tell/mount?dbid={s.db_id}")
self.generic_post(f"sample/mount?dbid={s.db_id}")
@Slot(SampleShortInfo)
def sample_manual(self, s: SampleShortInfo):
self.generic_post(f"sample/manual", s.model_dump_json())
@Slot()
def sample_clear(self):
self.generic_post("sample/clear")
@Slot()
def cancel(self):
self.generic_post("scan/cancel")
self.generic_post("scan/cancel")