ecmcFFTMainGui.py: Add callbacks for enable and mode. Add combo for mode.

This commit is contained in:
Anders Sandstrom
2020-10-08 19:04:04 +02:00
parent 460f8e935e
commit a7faed674d

View File

@@ -32,7 +32,7 @@ import threading
# FFT object pvs <prefix>Plugin-FFT<fftPluginId>-<suffixname>
# IOC_TEST:Plugin-FFT0-stat
# IOC_TEST:Plugin-FFT0-NFFT x
# IOC_TEST:Plugin-FFT0-Mode-RB
# IOC_TEST:Plugin-FFT0-Mode-RB x
# IOC_TEST:Plugin-FFT0-SampleRate-Act x
# IOC_TEST:Plugin-FFT0-Enable x
# IOC_TEST:Plugin-FFT0-Trigg x
@@ -53,12 +53,16 @@ class ecmcFFTMainGui(QtWidgets.QDialog):
self.fftPluginId = fftPluginId
# Callbacks through signals
self.comSignalSpectX = comSignal()
self.comSignalSpectX = comSignal()
self.comSignalSpectX.data_signal.connect(self.callbackFuncSpectX)
self.comSignalSpectY = comSignal()
self.comSignalSpectY = comSignal()
self.comSignalSpectY.data_signal.connect(self.callbackFuncSpectY)
self.comSignalRawData = comSignal()
self.comSignalRawData = comSignal()
self.comSignalRawData.data_signal.connect(self.callbackFuncrawData)
self.comSignalEnable = comSignal()
self.comSignalEnable.data_signal.connect(self.callbackFuncEnable)
self.comSignalMode = comSignal()
self.comSignalMode.data_signal.connect(self.callbackFuncMode)
self.pause = 0
@@ -90,6 +94,12 @@ class ecmcFFTMainGui(QtWidgets.QDialog):
self.triggBtn.setFixedSize(100, 50)
self.triggBtn.clicked.connect(self.triggBtnAction)
self.modeCombo = QComboBox()
self.modeCombo.setFixedSize(100, 50)
self.modeCombo.currentIndexChanged.connect(self.newModeIndexChanged)
self.modeCombo.addItem("CONT")
self.modeCombo.addItem("TRIGG")
# Pv names based on structure: <prefix>Plugin-FFT<fftPluginId>-<suffixname>
self.pvNameSpectY = self.buildPvName('Spectrum-Amp-Act') # "IOC_TEST:Plugin-FFT1-Spectrum-Amp-Act"
print("self.pvNameSpectY=" + self.pvNameSpectY)
@@ -125,19 +135,24 @@ class ecmcFFTMainGui(QtWidgets.QDialog):
self.NFFT = self.pvNFFT.get()
self.mode = self.pvMode.get()
self.modeStr = "NO_MODE"
self.triggBtn.setEnabled(False) # Only enable if mode = TRIGG = 2
if self.mode == 1:
self.modeStr = "CONT"
self.modeStr = "CONT"
self.modeCombo.setCurrentIndex(self.mode-1) # Index starta t zero
if self.mode == 2:
self.modeStr = "TRIGG"
self.triggBtn.setEnabled(True)
self.modeStr = "TRIGG"
self.triggBtn.setEnabled(True)
self.modeCombo.setCurrentIndex(self.mode-1) # Index starta t zero
# Fix layout
self.setGeometry(300, 300, 900, 700)
self.setWindowTitle("ecmc FFT Main plot: prefix=" + self.pvPrefixStr + " , fftId=" + str(self.fftPluginId) +
", source=" + self.sourceStr + ", rate=" + str(self.sampleRate) +
", nfft=" + str(self.NFFT) + ", mode=" + self.modeStr)
", nfft=" + str(self.NFFT))
layoutVert = QVBoxLayout()
layoutVert.addWidget(self.toolbar)
layoutVert.addWidget(self.canvas)
@@ -146,6 +161,7 @@ class ecmcFFTMainGui(QtWidgets.QDialog):
layoutControl.addWidget(self.pauseBtn)
layoutControl.addWidget(self.enableBtn)
layoutControl.addWidget(self.triggBtn)
layoutControl.addWidget(self.modeCombo)
frameControl = QFrame(self)
frameControl.setFixedHeight(70)
@@ -236,9 +252,18 @@ class ecmcFFTMainGui(QtWidgets.QDialog):
self.pvSpectX.add_callback(self.onChangePvSpectX)
self.pvSpectY.add_callback(self.onChangePvSpectY)
self.pvRawData.add_callback(self.onChangePvrawData)
self.pvEnable.add_callback(self.onChangePvEnable)
self.pvMode.add_callback(self.onChangePvMode)
QCoreApplication.processEvents()
###### Pv monitor callbacks
def onChangePvMode(self,pvname=None, value=None, char_value=None,timestamp=None, **kw):
self.comSignalMode.data_signal.emit(value)
def onChangePvEnable(self,pvname=None, value=None, char_value=None,timestamp=None, **kw):
self.comSignalEnable.data_signal.emit(value)
def onChangePvSpectX(self,pvname=None, value=None, char_value=None,timestamp=None, **kw):
self.comSignalSpectX.data_signal.emit(value)
@@ -248,30 +273,34 @@ class ecmcFFTMainGui(QtWidgets.QDialog):
def onChangePvrawData(self,pvname=None, value=None, char_value=None,timestamp=None, **kw):
self.comSignalRawData.data_signal.emit(value)
def pauseBtnAction(self):
self.pause = not self.pause
if self.pause:
self.pauseBtn.setStyleSheet("background-color: red")
else:
self.pauseBtn.setStyleSheet("background-color: green")
# Retrigger plots with newest values
self.comSignalSpectY.data_signal.emit(self.spectY)
self.comSignalRawData.data_signal.emit(self.rawdataY)
###### Signal callbacks
def callbackFuncMode(self, value):
if value < 1 or value> 2:
self.modeStr = "NO_MODE"
print('callbackFuncMode: Error Invalid mode.')
return
self.mode = value
self.modeCombo.setCurrentIndex(self.mode-1) # Index starta t zero
if self.mode == 1:
self.modeStr = "CONT"
self.triggBtn.setEnabled(False) # Only enable if mode = TRIGG = 2
if self.mode == 2:
self.modeStr = "TRIGG"
self.triggBtn.setEnabled(True)
return
def enableBtnAction(self):
self.enable = not self.enable
self.pvEnable.put(self.enable)
def callbackFuncEnable(self, value):
self.enable = value
if self.enable:
self.enableBtn.setStyleSheet("background-color: green")
else:
self.enableBtn.setStyleSheet("background-color: red")
return
def triggBtnAction(self):
self.pvTrigg.put(True)
return
def callbackFuncSpectX(self, value):
if(np.size(value)) > 0:
self.spectX = value
@@ -294,6 +323,37 @@ class ecmcFFTMainGui(QtWidgets.QDialog):
self.plotRaw()
return
###### Widget callbacks
def pauseBtnAction(self):
self.pause = not self.pause
if self.pause:
self.pauseBtn.setStyleSheet("background-color: red")
else:
self.pauseBtn.setStyleSheet("background-color: green")
# Retrigger plots with newest values
self.comSignalSpectY.data_signal.emit(self.spectY)
self.comSignalRawData.data_signal.emit(self.rawdataY)
return
def enableBtnAction(self):
self.enable = not self.enable
self.pvEnable.put(self.enable)
if self.enable:
self.enableBtn.setStyleSheet("background-color: green")
else:
self.enableBtn.setStyleSheet("background-color: red")
return
def triggBtnAction(self):
self.pvTrigg.put(True)
return
def newModeIndexChanged(self,index):
if index==0 or index==1:
self.pvMode.put(index+1)
return
###### Plotting
def plotSpect(self):
if self.pause:
return