online changes

This commit is contained in:
e20216 2022-07-21 14:25:46 +02:00
parent d3acfad694
commit 3b971336ee
2 changed files with 29 additions and 18 deletions

View File

@ -288,13 +288,13 @@ class GalilSetpointSignal(GalilSignalBase):
while self.controller.is_thread_active(0): while self.controller.is_thread_active(0):
time.sleep(0.1) time.sleep(0.1)
########################################## if self.parent.axis_Id_numeric == 2:
# HERE ADD CHECK OF ANGLE INTERF RUNNING angle_status = self.parent.device_manager.devices[
# if(rt_feedback_status_lamni_anlge()) { self.parent.rt
# _lgalil_put_confirmed( 0,"angintf=1") ].obj.controller.feedback_status_angle_lamni()
# }
if angle_status:
self.controller.socket_put_confirmed("angintf=1")
self.controller.socket_put_confirmed(f"naxis={self.parent.axis_Id_numeric}") self.controller.socket_put_confirmed(f"naxis={self.parent.axis_Id_numeric}")
self.controller.socket_put_confirmed(f"ntarget={target_val:.3f}") self.controller.socket_put_confirmed(f"ntarget={target_val:.3f}")

View File

@ -11,11 +11,11 @@ from ophyd_devices.utils.socket import (
raise_if_disconnected, raise_if_disconnected,
SocketSignal, SocketSignal,
) )
import logging from bec_utils import bec_logger
from ophyd.utils import ReadOnlyError from ophyd.utils import ReadOnlyError
from ophyd.status import wait as status_wait from ophyd.status import wait as status_wait
logger = logging.getLogger("rtlamni") logger = bec_logger.logger
def threadlocked(fcn): def threadlocked(fcn):
"""Ensure that thread acquires and releases the lock.""" """Ensure that thread acquires and releases the lock."""
@ -216,8 +216,8 @@ class RtLamniController(Controller):
current_position_in_scan=int(return_table[2]) current_position_in_scan=int(return_table[2])
return (mode,number_of_positions_planned,current_position_in_scan) return (mode,number_of_positions_planned,current_position_in_scan)
def start_scan(self, posx, posy) -> int: def start_scan(self):
interferometer_feedback_not_running = int((self.controller.socket_put_and_receive("J2")).split(",")[0]) interferometer_feedback_not_running = int((self.socket_put_and_receive("J2")).split(",")[0])
if interferometer_feedback_not_running == 1: if interferometer_feedback_not_running == 1:
logger.info("Cannot start scan because feedback loop is not running or there is an interferometer error.") logger.info("Cannot start scan because feedback loop is not running or there is an interferometer error.")
#here exception #here exception
@ -227,23 +227,34 @@ class RtLamniController(Controller):
logger.info("Cannot start scan because no target positions are planned.") logger.info("Cannot start scan because no target positions are planned.")
#hier exception #hier exception
# start a point-by-point scan (for cont scan in flomni it would be "sa") # start a point-by-point scan (for cont scan in flomni it would be "sa")
self.controller.socket_put_and_receive("sd") self.socket_put_and_receive("sd")
def start_readout(self):
readout = threading.Thread(target=self.read_positions_from_sampler)
readout.start()
def kickoff(self):
time.sleep(0.3)
self.start_scan()
while self.get_scan_status()[0]!=0:
time.sleep(0.1)
self.start_readout()
def read_positions_from_sampler(self): def read_positions_from_sampler(self):
number_of_samples_to_read = 1 #number of valid samples, will be updated upon first data read number_of_samples_to_read = self.get_scan_status()[1] #number of valid samples, will be updated upon first data read
read_counter = 0 read_counter = 0
average_stdeviations_x_st_fzp = 0 average_stdeviations_x_st_fzp = 0
average_stdeviations_y_st_fzp = 0 average_stdeviations_y_st_fzp = 0
average_lamni_angle = 0
while number_of_samples_to_read > read_counter: while number_of_samples_to_read > read_counter:
#fprintf(dname,"DataPoint TotalPoints Target_x Average_x_st_fzp Stdev_x_st_fzp Target_y Average_y_st_fzp Stdev_y_st_fzp Average_cap1 Stdev_cap1 Average_cap2 Stdev_cap2 Average_cap3 Stdev_cap3 Average_cap4 Stdev_cap4 Average_cap5 Stdev_cap5 Average_angle_interf_ST Stdev_angle_interf_ST\n") #fprintf(dname,"DataPoint TotalPoints Target_x Average_x_st_fzp Stdev_x_st_fzp Target_y Average_y_st_fzp Stdev_y_st_fzp Average_cap1 Stdev_cap1 Average_cap2 Stdev_cap2 Average_cap3 Stdev_cap3 Average_cap4 Stdev_cap4 Average_cap5 Stdev_cap5 Average_angle_interf_ST Stdev_angle_interf_ST\n")
# 0 1 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 # 0 1 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
return_table = (self.socket_put_and_receive(f"r{read_counter}")).split(",") return_table = (self.socket_put_and_receive(f"r{read_counter}")).split(",")
logger.info(f"{return_table}")
average_stdeviations_x_st_fzp=average_stdeviations_x_st_fzp+double(return_table[5]) average_stdeviations_x_st_fzp=average_stdeviations_x_st_fzp+float(return_table[5])
average_stdeviations_y_st_fzp=average_stdeviations_y_st_fzp+return_table[8] average_stdeviations_y_st_fzp=average_stdeviations_y_st_fzp+float(return_table[8])
average_lamni_angle = average_lamni_angle+return_table[19] average_lamni_angle = average_lamni_angle+float(return_table[19])
number_of_samples_to_read = int(return_table[1])
read_counter=read_counter+1 read_counter=read_counter+1
logger.info(f"LamNI statistics: Average of all standard deviations: x {average_stdeviations_x_st_fzp/number_of_samples_to_read}, y {average_stdeviations_y_st_fzp/number_of_samples_to_read}, angle {average_lamni_angle/number_of_samples_to_read}.") logger.info(f"LamNI statistics: Average of all standard deviations: x {average_stdeviations_x_st_fzp/number_of_samples_to_read}, y {average_stdeviations_y_st_fzp/number_of_samples_to_read}, angle {average_lamni_angle/number_of_samples_to_read}.")