fix in trace and app config

This commit is contained in:
2022-09-09 18:14:59 +02:00
parent 31c5df6cb5
commit e215f3abea
2 changed files with 44 additions and 29 deletions

View File

@@ -33,6 +33,7 @@ class MyJsonEncoder(json.JSONEncoder):
class AppCfg(QSettings):
GBL_FLD_SCR_SHOT="global/folder_screenshot"
GBL_DEV_PREFIX="global/device_prefix" #SAR-EXPMX
GBL_MISC="global/miscellaneous"
GEO_OPT_CTR='geometry/opt_ctr'
GEO_PIX2POS='geometry/pix2pos'
@@ -154,7 +155,8 @@ class AppCfg(QSettings):
t=type(val)
if key in (AppCfg.GEO_PIX2POS,AppCfg.GEO_CAM_TRF):
val=json.dumps(val, cls=MyJsonEncoder)
elif key in (AppCfg.GEO_CAM_PARAM,
elif key in (AppCfg.GBL_MISC,
AppCfg.GEO_CAM_PARAM,
AppCfg.DFT_POS_DET,AppCfg.DFT_POS_PST,AppCfg.DFT_POS_COL,AppCfg.DFT_POS_BKLGT,
AppCfg.DT_MISC):
val=json.dumps(val, cls=MyJsonEncoder)
@@ -174,7 +176,8 @@ class AppCfg(QSettings):
elif key in (AppCfg.GEO_CAM_TRF,):
val=json.loads(val)#, object_hook=MyJsonDecoder)
val=np.array(val)
elif key in (AppCfg.GEO_CAM_PARAM,
elif key in (AppCfg.GBL_MISC,
AppCfg.GEO_CAM_PARAM,
AppCfg.DFT_POS_DET,AppCfg.DFT_POS_PST,AppCfg.DFT_POS_COL,AppCfg.DFT_POS_BKLGT,
AppCfg.DT_MISC):
if val is not None:
@@ -183,6 +186,8 @@ class AppCfg(QSettings):
else:
if key==AppCfg.DT_MISC:
val={'show_plots': True, 'vel_scl': 1.0, 'pt2pt_time': 10.0,'sync_mode':1,'sync_flag':3,'verbose':0xff}
elif key==AppCfg.GBL_MISC:
val={'img_trace':4}
else:
val={}
elif key in (AppCfg.GEO_BEAM_SZ,AppCfg.GEO_BEAM_POS,):
@@ -220,13 +225,14 @@ class WndParameter(QMainWindow):
#GEO_PIX2POS
#GEO_BEAM_POS
#GEO_CAM_PARAM
gbl_misc = cfg.value(AppCfg.GBL_MISC)
gbl_dev_prefix = cfg.value(AppCfg.GBL_DEV_PREFIX)
geo_beam_sz = cfg.value(AppCfg.GEO_BEAM_SZ)*1000
dft_pos_pst = cfg.value(AppCfg.DFT_POS_PST)
dft_pos_col = cfg.value(AppCfg.DFT_POS_COL)
dft_pos_bklgt = cfg.value(AppCfg.DFT_POS_BKLGT)
dft_pos_det = cfg.value(AppCfg.DFT_POS_DET)
geo_cam_param = cfg.value(AppCfg.GEO_CAM_PARAM)
gbl_dev_prefix = cfg.value(AppCfg.GBL_DEV_PREFIX)
dt_host = cfg.value(AppCfg.DT_HOST)
dt_misc = cfg.value(AppCfg.DT_MISC)
@@ -264,6 +270,17 @@ verbose bits:
'''
params=[
{'name':'various', 'type':'group','expanded':False, 'children':[
{'name':AppCfg.GBL_DEV_PREFIX, 'title':'device prefix', 'type':'group', 'expanded':False, 'children':[
{'name':'deltatau motors', 'value':gbl_dev_prefix[0], 'type':'str'},
{'name':'smaract motors', 'value':gbl_dev_prefix[1], 'type':'str'},
]},
{'name':AppCfg.GBL_MISC, 'title':'miscellaneous', 'type':'group', 'children':[
{'name':'img_trace', 'value':gbl_misc['img_trace'], 'type':'int', 'tip':tip_sync_flag},
#{'name':'verbose', 'value':gbl_misc['verbose'], 'type':'int', 'tip':tip_verbose},
]},
# {'name':AppCfg.GEO_CAM_TRF, 'value':cfg.value(AppCfg.GEO_CAM_TRF), 'type':'str'},
]},
{'name':'geometry','type':'group','expanded':False,'children':[
{'name': AppCfg.GEO_BEAM_SZ, 'title':'size of the beam', 'type':'group', 'children':[
{'name':'width', 'type':'float', 'value':geo_beam_sz[0], 'step':0.1,'suffix':' um'},
@@ -310,10 +327,6 @@ verbose bits:
{'name':'set_in', 'title':'use current position as "in"', 'type':'action'},
{'name':'set_out', 'title':'use current position as "out"', 'type':'action'},
]},
{'name': AppCfg.GBL_DEV_PREFIX, 'title':'device prefix', 'type':'group','expanded':False, 'children':[
{'name':'deltatau motors', 'value':gbl_dev_prefix[0],'type':'str' },
{'name':'smaract motors', 'value':gbl_dev_prefix[1],'type':'str' },
]},
{'name':'Delta Tau Parameters', 'type':'group','expanded':False, 'children':[
{'name':AppCfg.DT_HOST ,'title':'host name (host[:port:port_gather])','value':dt_host ,'type':'str'} ,
{'name':AppCfg.DT_MISC, 'title':'miscellaneous', 'type':'group', 'children':[
@@ -325,9 +338,6 @@ verbose bits:
{'name':'verbose', 'value':dt_misc['verbose'], 'type':'int', 'tip':tip_verbose},
]},
]},
#{'name':'miscellaneous', 'type':'group','expanded':False, 'children':[
# {'name':AppCfg.GEO_CAM_TRF, 'value':cfg.value(AppCfg.GEO_CAM_TRF), 'type':'str'},
#]},
#{'name':'Save/Restore functionality', 'type':'group','expanded':False, 'children':[
# {'name':'Save State', 'type':'action'},
# {'name':'Restore State', 'type':'action', 'children':[
@@ -428,7 +438,7 @@ verbose bits:
cfg.setValue(par_nm, v)
elif nm in (AppCfg.DT_HOST):
cfg.setValue(nm, param.value())
elif par_nm==AppCfg.DT_MISC:
elif par_nm in (AppCfg.GBL_MISC,AppCfg.DT_MISC):
d=dict(map(lambda x:(x.name(),x.value()), parent.children()))
cfg.setValue(par_nm, d)
else:

View File

@@ -410,10 +410,6 @@ class WndSwissMx(QMainWindow, Ui_MainWindow):
#bm.setTransform(tr) # assign transform
grp.addItem(obj)
#--- camera tracong images ---
self._goTrace=grp=pg.ItemGroup() # the transformation is the same as for tracked objects
grp.setZValue(-20) #lower than other objects
self.vb.addItem(grp)
@@ -1079,16 +1075,7 @@ class WndSwissMx(QMainWindow, Ui_MainWindow):
#create trace
img=pg.ImageItem(self._goImg.image)
img.setZValue(100)
trImg=self._goImgGrp.transform()
trTrk=self._goTracked.transform()
tr=trImg*trTrk.inverted()[0] #TODO: check if oder correct !!!
#tr.scale(.5,.5)
img.setTransform(tr)
self._goTrace.addItem(img)
self.add_camera_trace()
_log.debug(f'dist to beam ({pFix[0]:>0.6g} {pFix[1]:>0.6g}mm)')
fx_motor=self.tweakers["fast_x"]
@@ -1096,9 +1083,6 @@ class WndSwissMx(QMainWindow, Ui_MainWindow):
fx_motor.move_rel(pFix[0])
fy_motor.move_rel(pFix[1])
self._goTrace.setTransform(self._goTracked.transform())
#fx_motor.move_abs(fx_motor.get_val()+pFix[0])
#fy_motor.move_abs(fy_motor.get_val()+pFix[1])
@@ -1280,6 +1264,7 @@ class WndSwissMx(QMainWindow, Ui_MainWindow):
fy=twk_fy.get_val()
try:
grp=self._goTracked
grpTrc=self._goTrace
zoom_old,fx_old,fy_old=grp._state
except AttributeError: # at initialization
self._goTracked=grp=pg.ItemGroup()
@@ -1287,12 +1272,17 @@ class WndSwissMx(QMainWindow, Ui_MainWindow):
self.vb.addItem(grp)
grp._state=(zoom,fx,fy)
zoom_old=fx_old=fy_old=None
#--- camera tracing images ---
self._goTrace=grpTrc=pg.ItemGroup() # the transformation is the same as for tracked objects
grpTrc.setZValue(-20) #lower than other objects
self.vb.addItem(grpTrc)
_log.debug(f"zoom:{zoom_old}->{zoom} fx:{fx_old}->{fx} fy:{fy_old}->{fy}")
if zoom_old!=zoom:
geo.interp_zoom(zoom)
bm=self._goBeamMarker
grp=self._goTracked
opt_ctr=geo._opt_ctr
A=np.asarray(geo._pix2pos.I)
# trf=cfg.value(AppCfg.GEO_CAM_TRF)
@@ -1304,6 +1294,21 @@ class WndSwissMx(QMainWindow, Ui_MainWindow):
A[1, 0], A[1, 1], 0,
p[0], p[1], 1) # translate dx,dy
grp.setTransform(tr)
grpTrc.setTransform(tr)
def add_camera_trace(self):
# add up to tracelen image when moveing motors to new positions
tracelen=4
img=pg.ImageItem(self._goImg.image)
trImg=self._goImgGrp.transform()
trTrk=self._goTracked.transform()
tr=trImg*trTrk.inverted()[0] # TODO: check if oder correct !!!
img.setTransform(tr)
self._goTrace.addItem(img)
cld=self._goTrace.childItems()
if len(cld) > tracelen:
self.vb.removeItem(cld[0])
def cb_modify_app_param(self):
wnd=WndParameter(self)