fix tracking object bugs after collection

This commit is contained in:
2022-09-19 09:22:28 +02:00
parent a1ceef7de9
commit 21afed9739
5 changed files with 54 additions and 15 deletions

View File

@@ -318,4 +318,11 @@ X10193.88 Y-8892
-8892.02 10193.9 -996.5999999999985
-> z has wrong sign !
-> z has wrong sign !
!!!!!!!!!!! AFTER COLLECTION GRAPHICAL OVERLAY OBJECTS ARE SHIFTED !!!!!!!!!!!
!!!!!!!!!!! IF MOVING ON THE EPICS PANEL, THE OBJECTS GET OUT OF SYNC !!!!!!!!

View File

@@ -20,7 +20,7 @@ SPMG_GO = 3
class MotorTweak(QWidget, Ui_MotorTweak):
event_val = pyqtSignal(str, dict)
event_readback = pyqtSignal(str, float, dict)
event_rbv = pyqtSignal(str, float, dict)
event_soft_limit = pyqtSignal(str, dict)
event_high_hard_limit = pyqtSignal(str, dict)
event_low_hard_limit = pyqtSignal(str, dict)
@@ -202,7 +202,7 @@ class MotorTweak(QWidget, Ui_MotorTweak):
if field == 'VAL':
self.event_val.emit(self._pvname, kw)
elif field == 'RBV':
self.event_readback.emit(kw['alias'], kw['value'], kw)
self.event_rbv.emit(kw['alias'], kw['value'], kw)
elif field == 'LVIO':
self.event_soft_limit.emit(self._pvname, kw)
elif field == 'HLS':
@@ -382,3 +382,31 @@ class MotorTweak(QWidget, Ui_MotorTweak):
path.setFillRule(Qt.WindingFill)
path.addRoundedRect(x, y, w, h, rounding, rounding)
qp.drawPath(path)
if __name__ == "__main__":
logging.basicConfig(level=logging.DEBUG, format='%(levelname)s:%(module)s:%(lineno)d:%(funcName)s:%(message)s ')
_log.debug('start')
def cb_rbv(*args,**kwargs):
_log.debug(f'RBV{args} {kwargs}')
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel
app=QApplication(sys.argv)
mot_widget=MotorTweak()
#mot_widget.event_val.connect(cb_rbv)
mot_widget.event_rbv.connect(cb_rbv)
pfx='SAR-EXPMX'
mot_widget.connect_motor(f"{pfx}:MOT_FY", alias="fast_y", label="fast Y")
mot_widget.setGeometry(50, 50, 520, 100)
mot_widget.setWindowTitle("PyQt5 Example")
mot_widget.show()
sys.exit(app.exec_())

View File

@@ -34,7 +34,7 @@ class SimMotor:
class SimMotorTweak(QWidget, Ui_MotorTweak):
event_val = pyqtSignal(str, dict)
event_readback = pyqtSignal(str, dict)
event_rbv = pyqtSignal(str, dict)
event_soft_limit = pyqtSignal(str, dict)
event_high_hard_limit = pyqtSignal(str, dict)
event_low_hard_limit = pyqtSignal(str, dict)
@@ -162,7 +162,7 @@ class SimMotorTweak(QWidget, Ui_MotorTweak):
if field == 'VAL':
self.event_val.emit(m._rec_name, kw)
elif field == 'RBV':
self.event_readback.emit(m._rec_name, kw)
self.event_rbv.emit(m._rec_name, kw)
elif field == 'LVIO':
self.event_soft_limit.emit(m._rec_name, kw)
elif field == 'HLS':

View File

@@ -23,7 +23,7 @@ SPMG_GO = 3
class SmaractMotorTweak(QWidget, Ui_MotorTweak):
event_val = pyqtSignal(str, dict)
event_readback = pyqtSignal(str, dict)
event_rbv = pyqtSignal(str, dict)
event_soft_limit = pyqtSignal(str, dict)
event_high_hard_limit = pyqtSignal(str, dict)
event_low_hard_limit = pyqtSignal(str, dict)
@@ -184,7 +184,7 @@ class SmaractMotorTweak(QWidget, Ui_MotorTweak):
if field == 'VAL':
self.event_val.emit(self._pvname, kw)
elif field == 'RBV':
self.event_readback.emit(self._pvname, kw)
self.event_rbv.emit(self._pvname, kw)
elif field == 'LVIO':
self.event_soft_limit.emit(self._pvname, kw)
elif field == 'HLS':

View File

@@ -742,8 +742,8 @@ class WndSwissMx(QMainWindow, Ui_MainWindow):
#self.tweakers["fast_x"].event_readback.connect(lambda alias, value, kw: self.fast_x_position.emit(value))
#self.tweakers["fast_y"].event_readback.connect(lambda alias, value, kw: self.fast_y_position.emit(value))
self.tweakers["fast_x"].event_val.connect(lambda rec_name, kw: self.track_objects())
self.tweakers["fast_y"].event_val.connect(lambda rec_name, kw: self.track_objects())
self.tweakers["fast_x"].event_rbv.connect(lambda rec_name, kw: self.track_objects())
self.tweakers["fast_y"].event_rbv.connect(lambda rec_name, kw: self.track_objects())
# layout.addStretch()
def cb_marker_moved(self,obj,*args,**kwargs):
@@ -1277,8 +1277,8 @@ class WndSwissMx(QMainWindow, Ui_MainWindow):
twk_fx=self.tweakers["fast_x"];twk_fy=self.tweakers["fast_y"]
# TODO: get_position() is delayed as it is the RBV. do same as for the zoom
# TODO: and return the last set_point
fx=twk_fx.get_val()
fy=twk_fy.get_val()
fx=twk_fx.get_rbv()
fy=twk_fy.get_rbv()
try:
grp=self._goTracked
grpTrc=self._goTrace
@@ -1295,7 +1295,10 @@ class WndSwissMx(QMainWindow, Ui_MainWindow):
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}")
try:
_log.debug(f"zoom:{zoom_old}->{zoom:d} fx:{fx_old:.3f}->{fx:.3f} fy:{fy_old:.3f}->{fy:.3f}")
except TypeError:
_log.debug(f"zoom:{zoom_old}->{zoom} fx:{fx_old}->{fx:.3f} fy:{fy_old}->{fy:.3f}")
if zoom_old!=zoom:
geo.interp_zoom(zoom)
@@ -1993,13 +1996,13 @@ Author Thierry Zamofing (thierry.zamofing@psi.ch)
v=geo.pos2pix((23, 0))
l=np.linalg.norm(v)
l=23
go=UsrGO.FixTargetFrame((fx-l/2,fx-l/2), (l, l), tpl='23.0x23.0')
go=UsrGO.FixTargetFrame((fx-l/2,fy-l/2), (l, l), tpl='23.0x23.0')
elif idx==3:
w,h=(.120*12, .120*8)
go=UsrGO.FixTargetFrame((fx-w/2,fx-h/2), (w, h), tpl='test')
go=UsrGO.FixTargetFrame((fx-w/2,fy-h/2), (w, h), tpl='test')
elif idx==4:
w,h=(30, 22)
go=UsrGO.Grid((fx-w/2,fx-h/2), (w, h), (30, 22), .1)
go=UsrGO.Grid((fx-w/2,fy-h/2), (w, h), (30, 22), .1)
else:
_log.error('index not handeled')
@@ -2064,6 +2067,7 @@ Author Thierry Zamofing (thierry.zamofing@psi.ch)
cfg = app._cfg
dt_misc = cfg.value(AppCfg.DT_MISC)
#_log.critical('abort for test');return # RET
geo = app._geometry
fn='/tmp/shapepath'
try: