mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-06-05 01:20:41 +02:00
allowing pyctbgui to work for xilinx ctb (#1079)
* allowing pyctbgui to work for xilinx ctb * slowadc and adc enable (only 10g) allowed for xilinx ctb
This commit is contained in:
parent
e6e260d8ca
commit
0e45ae189d
@ -14,6 +14,8 @@ from pyctbgui.utils.defines import Defines
|
|||||||
import pyctbgui.utils.pixelmap as pm
|
import pyctbgui.utils.pixelmap as pm
|
||||||
from pyctbgui.utils.recordOrApplyPedestal import recordOrApplyPedestal
|
from pyctbgui.utils.recordOrApplyPedestal import recordOrApplyPedestal
|
||||||
|
|
||||||
|
from slsdet import detectorType
|
||||||
|
|
||||||
if typing.TYPE_CHECKING:
|
if typing.TYPE_CHECKING:
|
||||||
from pyctbgui.services import AcquisitionTab, PlotTab
|
from pyctbgui.services import AcquisitionTab, PlotTab
|
||||||
|
|
||||||
@ -30,6 +32,7 @@ class AdcTab(QtWidgets.QWidget):
|
|||||||
self.acquisitionTab: AcquisitionTab | None = None
|
self.acquisitionTab: AcquisitionTab | None = None
|
||||||
self.legend: LegendItem | None = None
|
self.legend: LegendItem | None = None
|
||||||
self.logger = logging.getLogger('AdcTab')
|
self.logger = logging.getLogger('AdcTab')
|
||||||
|
self.tengiga = True
|
||||||
|
|
||||||
def setup_ui(self):
|
def setup_ui(self):
|
||||||
self.plotTab = self.mainWindow.plotTab
|
self.plotTab = self.mainWindow.plotTab
|
||||||
@ -42,6 +45,12 @@ class AdcTab(QtWidgets.QWidget):
|
|||||||
self.legend.clear()
|
self.legend.clear()
|
||||||
# subscribe to toggle legend
|
# subscribe to toggle legend
|
||||||
self.plotTab.subscribeToggleLegend(self.updateLegend)
|
self.plotTab.subscribeToggleLegend(self.updateLegend)
|
||||||
|
|
||||||
|
if self.det.type == detectorType.XILINX_CHIPTESTBOARD:
|
||||||
|
self.view.checkBoxADC0_15Inv.setDisabled(True)
|
||||||
|
self.view.checkBoxADC16_31Inv.setDisabled(True)
|
||||||
|
self.view.lineEditADCInversion.setDisabled(True)
|
||||||
|
self.view.labelADCInversion.setDisabled(True)
|
||||||
|
|
||||||
def initializeAllAnalogPlots(self):
|
def initializeAllAnalogPlots(self):
|
||||||
self.mainWindow.plotAnalogWaveform = pg.plot()
|
self.mainWindow.plotAnalogWaveform = pg.plot()
|
||||||
@ -67,7 +76,8 @@ class AdcTab(QtWidgets.QWidget):
|
|||||||
|
|
||||||
def connect_ui(self):
|
def connect_ui(self):
|
||||||
for i in range(Defines.adc.count):
|
for i in range(Defines.adc.count):
|
||||||
getattr(self.view, f"checkBoxADC{i}Inv").stateChanged.connect(partial(self.setADCInv, i))
|
if self.det.type == detectorType.CHIPTESTBOARD:
|
||||||
|
getattr(self.view, f"checkBoxADC{i}Inv").stateChanged.connect(partial(self.setADCInv, i))
|
||||||
getattr(self.view, f"checkBoxADC{i}En").stateChanged.connect(partial(self.setADCEnable, i))
|
getattr(self.view, f"checkBoxADC{i}En").stateChanged.connect(partial(self.setADCEnable, i))
|
||||||
getattr(self.view, f"checkBoxADC{i}Plot").stateChanged.connect(partial(self.setADCEnablePlot, i))
|
getattr(self.view, f"checkBoxADC{i}Plot").stateChanged.connect(partial(self.setADCEnablePlot, i))
|
||||||
getattr(self.view, f"pushButtonADC{i}").clicked.connect(partial(self.selectADCColor, i))
|
getattr(self.view, f"pushButtonADC{i}").clicked.connect(partial(self.selectADCColor, i))
|
||||||
@ -77,15 +87,17 @@ class AdcTab(QtWidgets.QWidget):
|
|||||||
self.view.checkBoxADC0_15Plot.stateChanged.connect(partial(self.setADCEnablePlotRange, 0, Defines.adc.half))
|
self.view.checkBoxADC0_15Plot.stateChanged.connect(partial(self.setADCEnablePlotRange, 0, Defines.adc.half))
|
||||||
self.view.checkBoxADC16_31Plot.stateChanged.connect(
|
self.view.checkBoxADC16_31Plot.stateChanged.connect(
|
||||||
partial(self.setADCEnablePlotRange, Defines.adc.half, Defines.adc.count))
|
partial(self.setADCEnablePlotRange, Defines.adc.half, Defines.adc.count))
|
||||||
self.view.checkBoxADC0_15Inv.stateChanged.connect(partial(self.setADCInvRange, 0, Defines.adc.half))
|
|
||||||
self.view.checkBoxADC16_31Inv.stateChanged.connect(
|
|
||||||
partial(self.setADCInvRange, Defines.adc.half, Defines.adc.count))
|
|
||||||
self.view.lineEditADCInversion.editingFinished.connect(self.setADCInvReg)
|
|
||||||
self.view.lineEditADCEnable.editingFinished.connect(self.setADCEnableReg)
|
self.view.lineEditADCEnable.editingFinished.connect(self.setADCEnableReg)
|
||||||
|
if self.det.type == detectorType.CHIPTESTBOARD:
|
||||||
|
self.view.checkBoxADC0_15Inv.stateChanged.connect(partial(self.setADCInvRange, 0, Defines.adc.half))
|
||||||
|
self.view.checkBoxADC16_31Inv.stateChanged.connect(
|
||||||
|
partial(self.setADCInvRange, Defines.adc.half, Defines.adc.count))
|
||||||
|
self.view.lineEditADCInversion.editingFinished.connect(self.setADCInvReg)
|
||||||
|
|
||||||
def refresh(self):
|
def refresh(self):
|
||||||
self.updateADCNames()
|
self.updateADCNames()
|
||||||
self.updateADCInv()
|
if self.det.type == detectorType.CHIPTESTBOARD:
|
||||||
|
self.updateADCInv()
|
||||||
self.updateADCEnable()
|
self.updateADCEnable()
|
||||||
|
|
||||||
# ADCs Tab functions
|
# ADCs Tab functions
|
||||||
@ -196,9 +208,11 @@ class AdcTab(QtWidgets.QWidget):
|
|||||||
return decoder.decode(analog_array, pm.moench04_analog())
|
return decoder.decode(analog_array, pm.moench04_analog())
|
||||||
|
|
||||||
def getADCEnableReg(self):
|
def getADCEnableReg(self):
|
||||||
retval = self.det.adcenable
|
if self.det.type == detectorType.CHIPTESTBOARD:
|
||||||
if self.det.tengiga:
|
self.tengiga = self.det.tengiga
|
||||||
retval = self.det.adcenable10g
|
retval = self.det.adcenable10g
|
||||||
|
if not self.tengiga:
|
||||||
|
retval = self.det.adcenable
|
||||||
self.view.lineEditADCEnable.editingFinished.disconnect()
|
self.view.lineEditADCEnable.editingFinished.disconnect()
|
||||||
self.view.lineEditADCEnable.setText("0x{:08x}".format(retval))
|
self.view.lineEditADCEnable.setText("0x{:08x}".format(retval))
|
||||||
self.view.lineEditADCEnable.editingFinished.connect(self.setADCEnableReg)
|
self.view.lineEditADCEnable.editingFinished.connect(self.setADCEnableReg)
|
||||||
@ -207,8 +221,8 @@ class AdcTab(QtWidgets.QWidget):
|
|||||||
def setADCEnableReg(self):
|
def setADCEnableReg(self):
|
||||||
self.view.lineEditADCEnable.editingFinished.disconnect()
|
self.view.lineEditADCEnable.editingFinished.disconnect()
|
||||||
try:
|
try:
|
||||||
mask = int(self.mainWindow.lineEditADCEnable.text(), 16)
|
mask = int(self.view.lineEditADCEnable.text(), 16)
|
||||||
if self.det.tengiga:
|
if self.tengiga:
|
||||||
self.det.adcenable10g = mask
|
self.det.adcenable10g = mask
|
||||||
else:
|
else:
|
||||||
self.det.adcenable = mask
|
self.det.adcenable = mask
|
||||||
@ -239,7 +253,7 @@ class AdcTab(QtWidgets.QWidget):
|
|||||||
def setADCEnable(self, i):
|
def setADCEnable(self, i):
|
||||||
checkBox = getattr(self.view, f"checkBoxADC{i}En")
|
checkBox = getattr(self.view, f"checkBoxADC{i}En")
|
||||||
try:
|
try:
|
||||||
if self.det.tengiga:
|
if self.tengiga:
|
||||||
enableMask = manipulate_bit(checkBox.isChecked(), self.det.adcenable10g, i)
|
enableMask = manipulate_bit(checkBox.isChecked(), self.det.adcenable10g, i)
|
||||||
self.det.adcenable10g = enableMask
|
self.det.adcenable10g = enableMask
|
||||||
else:
|
else:
|
||||||
@ -265,7 +279,7 @@ class AdcTab(QtWidgets.QWidget):
|
|||||||
for i in range(start_nr, end_nr):
|
for i in range(start_nr, end_nr):
|
||||||
mask = manipulate_bit(checkBox.isChecked(), mask, i)
|
mask = manipulate_bit(checkBox.isChecked(), mask, i)
|
||||||
try:
|
try:
|
||||||
if self.det.tengiga:
|
if self.tengiga:
|
||||||
self.det.adcenable10g = mask
|
self.det.adcenable10g = mask
|
||||||
else:
|
else:
|
||||||
self.det.adcenable = mask
|
self.det.adcenable = mask
|
||||||
@ -344,7 +358,7 @@ class AdcTab(QtWidgets.QWidget):
|
|||||||
def setADCInvReg(self):
|
def setADCInvReg(self):
|
||||||
self.view.lineEditADCInversion.editingFinished.disconnect()
|
self.view.lineEditADCInversion.editingFinished.disconnect()
|
||||||
try:
|
try:
|
||||||
self.det.adcinvert = int(self.mainWindow.lineEditADCInversion.text(), 16)
|
self.det.adcinvert = int(self.view.lineEditADCInversion.text(), 16)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
QtWidgets.QMessageBox.warning(self.mainWindow, "ADC Inversion Fail", str(e), QtWidgets.QMessageBox.Ok)
|
QtWidgets.QMessageBox.warning(self.mainWindow, "ADC Inversion Fail", str(e), QtWidgets.QMessageBox.Ok)
|
||||||
pass
|
pass
|
||||||
@ -395,7 +409,12 @@ class AdcTab(QtWidgets.QWidget):
|
|||||||
self.updateADCInv()
|
self.updateADCInv()
|
||||||
|
|
||||||
def saveParameters(self) -> list[str]:
|
def saveParameters(self) -> list[str]:
|
||||||
return [
|
if self.det.type == detectorType.CHIPTESTBOARD:
|
||||||
f"adcenable {self.view.lineEditADCEnable.text()}",
|
return [
|
||||||
f"adcinvert {self.view.lineEditADCInversion.text()}",
|
f"adcenable {self.view.lineEditADCEnable.text()}",
|
||||||
]
|
f"adcinvert {self.view.lineEditADCInversion.text()}",
|
||||||
|
]
|
||||||
|
else:
|
||||||
|
return [
|
||||||
|
f"adcenable {self.view.lineEditADCEnable.text()}"
|
||||||
|
]
|
||||||
|
@ -7,7 +7,7 @@ import zmq
|
|||||||
from PyQt5 import QtWidgets, uic
|
from PyQt5 import QtWidgets, uic
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
from slsdet import readoutMode, runStatus
|
from slsdet import readoutMode, runStatus, detectorType
|
||||||
from pyctbgui.utils.defines import Defines
|
from pyctbgui.utils.defines import Defines
|
||||||
from pyctbgui.utils.numpyWriter.npy_writer import NumpyFileManager
|
from pyctbgui.utils.numpyWriter.npy_writer import NumpyFileManager
|
||||||
from pyctbgui.utils.numpyWriter.npz_writer import NpzFileWriter
|
from pyctbgui.utils.numpyWriter.npz_writer import NpzFileWriter
|
||||||
@ -49,20 +49,37 @@ class AcquisitionTab(QtWidgets.QWidget):
|
|||||||
self.adcTab = self.mainWindow.adcTab
|
self.adcTab = self.mainWindow.adcTab
|
||||||
self.plotTab = self.mainWindow.plotTab
|
self.plotTab = self.mainWindow.plotTab
|
||||||
self.toggleStartButton(False)
|
self.toggleStartButton(False)
|
||||||
|
if self.det.type == detectorType.XILINX_CHIPTESTBOARD:
|
||||||
|
self.view.labelRunF.setDisabled(True)
|
||||||
|
self.view.labelADCF.setDisabled(True)
|
||||||
|
self.view.labelADCPhase.setDisabled(True)
|
||||||
|
self.view.labelADCPipeline.setDisabled(True)
|
||||||
|
self.view.labelDBITF.setDisabled(True)
|
||||||
|
self.view.labelDBITPhase.setDisabled(True)
|
||||||
|
self.view.labelDBITPipeline.setDisabled(True)
|
||||||
|
self.view.spinBoxRunF.setDisabled(True)
|
||||||
|
self.view.spinBoxADCF.setDisabled(True)
|
||||||
|
self.view.spinBoxADCPhase.setDisabled(True)
|
||||||
|
self.view.spinBoxADCPipeline.setDisabled(True)
|
||||||
|
self.view.spinBoxDBITF.setDisabled(True)
|
||||||
|
self.view.spinBoxDBITPhase.setDisabled(True)
|
||||||
|
self.view.spinBoxDBITPipeline.setDisabled(True)
|
||||||
|
|
||||||
def connect_ui(self):
|
def connect_ui(self):
|
||||||
# For Acquistions Tab
|
# For Acquistions Tab
|
||||||
self.view.comboBoxROMode.currentIndexChanged.connect(self.setReadOut)
|
self.view.comboBoxROMode.currentIndexChanged.connect(self.setReadOut)
|
||||||
self.view.spinBoxRunF.editingFinished.connect(self.setRunFrequency)
|
|
||||||
self.view.spinBoxTransceiver.editingFinished.connect(self.setTransceiver)
|
self.view.spinBoxTransceiver.editingFinished.connect(self.setTransceiver)
|
||||||
self.view.spinBoxAnalog.editingFinished.connect(self.setAnalog)
|
self.view.spinBoxAnalog.editingFinished.connect(self.setAnalog)
|
||||||
self.view.spinBoxDigital.editingFinished.connect(self.setDigital)
|
self.view.spinBoxDigital.editingFinished.connect(self.setDigital)
|
||||||
self.view.spinBoxADCF.editingFinished.connect(self.setADCFrequency)
|
|
||||||
self.view.spinBoxADCPhase.editingFinished.connect(self.setADCPhase)
|
if self.det.type == detectorType.CHIPTESTBOARD:
|
||||||
self.view.spinBoxADCPipeline.editingFinished.connect(self.setADCPipeline)
|
self.view.spinBoxRunF.editingFinished.connect(self.setRunFrequency)
|
||||||
self.view.spinBoxDBITF.editingFinished.connect(self.setDBITFrequency)
|
self.view.spinBoxADCF.editingFinished.connect(self.setADCFrequency)
|
||||||
self.view.spinBoxDBITPhase.editingFinished.connect(self.setDBITPhase)
|
self.view.spinBoxADCPhase.editingFinished.connect(self.setADCPhase)
|
||||||
self.view.spinBoxDBITPipeline.editingFinished.connect(self.setDBITPipeline)
|
self.view.spinBoxADCPipeline.editingFinished.connect(self.setADCPipeline)
|
||||||
|
self.view.spinBoxDBITF.editingFinished.connect(self.setDBITFrequency)
|
||||||
|
self.view.spinBoxDBITPhase.editingFinished.connect(self.setDBITPhase)
|
||||||
|
self.view.spinBoxDBITPipeline.editingFinished.connect(self.setDBITPipeline)
|
||||||
|
|
||||||
self.view.checkBoxFileWriteRaw.stateChanged.connect(self.setFileWrite)
|
self.view.checkBoxFileWriteRaw.stateChanged.connect(self.setFileWrite)
|
||||||
self.view.checkBoxFileWriteNumpy.stateChanged.connect(self.setFileWriteNumpy)
|
self.view.checkBoxFileWriteNumpy.stateChanged.connect(self.setFileWriteNumpy)
|
||||||
@ -77,16 +94,19 @@ class AcquisitionTab(QtWidgets.QWidget):
|
|||||||
|
|
||||||
def refresh(self):
|
def refresh(self):
|
||||||
self.getReadout()
|
self.getReadout()
|
||||||
self.getRunFrequency()
|
|
||||||
self.getTransceiver()
|
self.getTransceiver()
|
||||||
self.getAnalog()
|
self.getAnalog()
|
||||||
self.getDigital()
|
self.getDigital()
|
||||||
self.getADCFrequency()
|
|
||||||
self.getADCPhase()
|
if self.det.type == detectorType.CHIPTESTBOARD:
|
||||||
self.getADCPipeline()
|
self.getRunFrequency()
|
||||||
self.getDBITFrequency()
|
self.getADCFrequency()
|
||||||
self.getDBITPhase()
|
self.getADCPhase()
|
||||||
self.getDBITPipeline()
|
self.getADCPipeline()
|
||||||
|
self.getDBITFrequency()
|
||||||
|
self.getDBITPhase()
|
||||||
|
self.getDBITPipeline()
|
||||||
|
|
||||||
self.getFileWrite()
|
self.getFileWrite()
|
||||||
self.getFileName()
|
self.getFileName()
|
||||||
self.getFilePath()
|
self.getFilePath()
|
||||||
@ -697,23 +717,39 @@ class AcquisitionTab(QtWidgets.QWidget):
|
|||||||
self.socket.subscribe("")
|
self.socket.subscribe("")
|
||||||
|
|
||||||
def saveParameters(self) -> list[str]:
|
def saveParameters(self) -> list[str]:
|
||||||
return [
|
if self.det.type == detectorType.CHIPTESTBOARD:
|
||||||
f'romode {self.view.comboBoxROMode.currentText().lower()}',
|
return [
|
||||||
f'runclk {self.view.spinBoxRunF.value()}',
|
f'romode {self.view.comboBoxROMode.currentText().lower()}',
|
||||||
f'adcclk {self.view.spinBoxADCF.value()}',
|
f'runclk {self.view.spinBoxRunF.value()}',
|
||||||
f'adcphase {self.view.spinBoxADCPhase.value()}',
|
f'adcclk {self.view.spinBoxADCF.value()}',
|
||||||
f'adcpipeline {self.view.spinBoxADCPipeline.value()}',
|
f'adcphase {self.view.spinBoxADCPhase.value()}',
|
||||||
f'dbitclk {self.view.spinBoxDBITF.value()}',
|
f'adcpipeline {self.view.spinBoxADCPipeline.value()}',
|
||||||
f'dbitphase {self.view.spinBoxDBITPhase.value()}',
|
f'dbitclk {self.view.spinBoxDBITF.value()}',
|
||||||
f'dbitpipeline {self.view.spinBoxDBITPipeline.value()}',
|
f'dbitphase {self.view.spinBoxDBITPhase.value()}',
|
||||||
f'fwrite {int(self.view.checkBoxFileWriteRaw.isChecked())}',
|
f'dbitpipeline {self.view.spinBoxDBITPipeline.value()}',
|
||||||
f'fname {self.view.lineEditFileName.text()}',
|
f'fwrite {int(self.view.checkBoxFileWriteRaw.isChecked())}',
|
||||||
f'fpath {self.view.lineEditFilePath.text()}',
|
f'fname {self.view.lineEditFileName.text()}',
|
||||||
f'findex {self.view.spinBoxAcquisitionIndex.value()}',
|
f'fpath {self.view.lineEditFilePath.text()}',
|
||||||
f'frames {self.view.spinBoxFrames.value()}',
|
f'findex {self.view.spinBoxAcquisitionIndex.value()}',
|
||||||
f'triggers {self.view.spinBoxTriggers.value()}',
|
f'frames {self.view.spinBoxFrames.value()}',
|
||||||
f'period {self.view.spinBoxPeriod.value()} {self.view.comboBoxPeriod.currentText().lower()}',
|
f'triggers {self.view.spinBoxTriggers.value()}',
|
||||||
f'asamples {self.view.spinBoxAnalog.value()}',
|
f'period {self.view.spinBoxPeriod.value()} {self.view.comboBoxPeriod.currentText().lower()}',
|
||||||
f'dsamples {self.view.spinBoxDigital.value()}',
|
f'asamples {self.view.spinBoxAnalog.value()}',
|
||||||
f'tsamples {self.view.spinBoxTransceiver.value()}',
|
f'dsamples {self.view.spinBoxDigital.value()}',
|
||||||
]
|
f'tsamples {self.view.spinBoxTransceiver.value()}',
|
||||||
|
]
|
||||||
|
else:
|
||||||
|
return [
|
||||||
|
f'romode {self.view.comboBoxROMode.currentText().lower()}',
|
||||||
|
f'fwrite {int(self.view.checkBoxFileWriteRaw.isChecked())}',
|
||||||
|
f'fname {self.view.lineEditFileName.text()}',
|
||||||
|
f'fpath {self.view.lineEditFilePath.text()}',
|
||||||
|
f'findex {self.view.spinBoxAcquisitionIndex.value()}',
|
||||||
|
f'frames {self.view.spinBoxFrames.value()}',
|
||||||
|
f'triggers {self.view.spinBoxTriggers.value()}',
|
||||||
|
f'period {self.view.spinBoxPeriod.value()} {self.view.comboBoxPeriod.currentText().lower()}',
|
||||||
|
f'asamples {self.view.spinBoxAnalog.value()}',
|
||||||
|
f'dsamples {self.view.spinBoxDigital.value()}',
|
||||||
|
f'tsamples {self.view.spinBoxTransceiver.value()}',
|
||||||
|
]
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@ from pathlib import Path
|
|||||||
from PyQt5 import QtWidgets, uic
|
from PyQt5 import QtWidgets, uic
|
||||||
from pyctbgui.utils.defines import Defines
|
from pyctbgui.utils.defines import Defines
|
||||||
|
|
||||||
from slsdet import dacIndex
|
from slsdet import dacIndex, detectorType
|
||||||
|
|
||||||
|
|
||||||
class DacTab(QtWidgets.QWidget):
|
class DacTab(QtWidgets.QWidget):
|
||||||
@ -19,7 +19,14 @@ class DacTab(QtWidgets.QWidget):
|
|||||||
dac = getattr(dacIndex, f"DAC_{i}")
|
dac = getattr(dacIndex, f"DAC_{i}")
|
||||||
getattr(self.view, f"spinBoxDAC{i}").setValue(self.det.getDAC(dac)[0])
|
getattr(self.view, f"spinBoxDAC{i}").setValue(self.det.getDAC(dac)[0])
|
||||||
|
|
||||||
if self.det.highvoltage == 0:
|
if self.det.type == detectorType.XILINX_CHIPTESTBOARD:
|
||||||
|
self.view.checkBoxHighVoltage.setDisabled(True)
|
||||||
|
self.view.spinBoxHighVoltage.setDisabled(True)
|
||||||
|
self.view.labelHighVoltage.setDisabled(True)
|
||||||
|
self.view.labelADCVppDacName.setDisabled(True)
|
||||||
|
self.view.labelADCVpp.setDisabled(True)
|
||||||
|
self.view.comboBoxADCVpp.setDisabled(True)
|
||||||
|
elif self.det.highvoltage == 0:
|
||||||
self.view.spinBoxHighVoltage.setDisabled(True)
|
self.view.spinBoxHighVoltage.setDisabled(True)
|
||||||
self.view.checkBoxHighVoltage.setChecked(False)
|
self.view.checkBoxHighVoltage.setChecked(False)
|
||||||
|
|
||||||
@ -30,9 +37,11 @@ class DacTab(QtWidgets.QWidget):
|
|||||||
getattr(self.view, f"checkBoxDAC{i}").stateChanged.connect(partial(self.setDACTristate, i))
|
getattr(self.view, f"checkBoxDAC{i}").stateChanged.connect(partial(self.setDACTristate, i))
|
||||||
getattr(self.view, f"checkBoxDAC{i}mV").stateChanged.connect(partial(self.getDAC, i))
|
getattr(self.view, f"checkBoxDAC{i}mV").stateChanged.connect(partial(self.getDAC, i))
|
||||||
|
|
||||||
self.view.comboBoxADCVpp.currentIndexChanged.connect(self.setADCVpp)
|
if self.view.comboBoxADCVpp.isEnabled():
|
||||||
self.view.spinBoxHighVoltage.editingFinished.connect(self.setHighVoltage)
|
self.view.comboBoxADCVpp.currentIndexChanged.connect(self.setADCVpp)
|
||||||
self.view.checkBoxHighVoltage.stateChanged.connect(self.setHighVoltage)
|
if self.view.checkBoxHighVoltage.isEnabled():
|
||||||
|
self.view.spinBoxHighVoltage.editingFinished.connect(self.setHighVoltage)
|
||||||
|
self.view.checkBoxHighVoltage.stateChanged.connect(self.setHighVoltage)
|
||||||
|
|
||||||
def refresh(self):
|
def refresh(self):
|
||||||
self.updateDACNames()
|
self.updateDACNames()
|
||||||
@ -40,8 +49,10 @@ class DacTab(QtWidgets.QWidget):
|
|||||||
self.getDACTristate(i)
|
self.getDACTristate(i)
|
||||||
self.getDAC(i)
|
self.getDAC(i)
|
||||||
|
|
||||||
self.getADCVpp()
|
if self.view.comboBoxADCVpp.isEnabled():
|
||||||
self.getHighVoltage()
|
self.getADCVpp()
|
||||||
|
if self.view.checkBoxHighVoltage.isEnabled():
|
||||||
|
self.getHighVoltage()
|
||||||
|
|
||||||
def updateDACNames(self):
|
def updateDACNames(self):
|
||||||
for i, name in enumerate(self.det.getDacNames()):
|
for i, name in enumerate(self.det.getDacNames()):
|
||||||
@ -165,6 +176,8 @@ class DacTab(QtWidgets.QWidget):
|
|||||||
unit = " mV" if inMV else ""
|
unit = " mV" if inMV else ""
|
||||||
commands.append(f"dac {i} {value}{unit}")
|
commands.append(f"dac {i} {value}{unit}")
|
||||||
|
|
||||||
commands.append(f"adcvpp {self.view.comboBoxADCVpp.currentText()} mV")
|
if self.view.comboBoxADCVpp.isEnabled():
|
||||||
commands.append(f"highvoltage {self.view.spinBoxHighVoltage.value()}")
|
commands.append(f"adcvpp {self.view.comboBoxADCVpp.currentText()} mV")
|
||||||
|
if self.view.checkBoxHighVoltage.isEnabled():
|
||||||
|
commands.append(f"highvoltage {self.view.spinBoxHighVoltage.value()}")
|
||||||
return commands
|
return commands
|
||||||
|
@ -4,7 +4,7 @@ from pathlib import Path
|
|||||||
from PyQt5 import QtWidgets, uic
|
from PyQt5 import QtWidgets, uic
|
||||||
from pyctbgui.utils.defines import Defines
|
from pyctbgui.utils.defines import Defines
|
||||||
|
|
||||||
from slsdet import dacIndex
|
from slsdet import dacIndex, detectorType
|
||||||
|
|
||||||
|
|
||||||
class PowerSuppliesTab(QtWidgets.QWidget):
|
class PowerSuppliesTab(QtWidgets.QWidget):
|
||||||
@ -18,7 +18,8 @@ class PowerSuppliesTab(QtWidgets.QWidget):
|
|||||||
self.updateVoltageNames()
|
self.updateVoltageNames()
|
||||||
for i in Defines.powerSupplies:
|
for i in Defines.powerSupplies:
|
||||||
self.getVoltage(i)
|
self.getVoltage(i)
|
||||||
self.getCurrent(i)
|
if self.det.type == detectorType.CHIPTESTBOARD:
|
||||||
|
self.getCurrent(i)
|
||||||
|
|
||||||
def connect_ui(self):
|
def connect_ui(self):
|
||||||
for i in Defines.powerSupplies:
|
for i in Defines.powerSupplies:
|
||||||
@ -38,6 +39,12 @@ class PowerSuppliesTab(QtWidgets.QWidget):
|
|||||||
if retval == 0:
|
if retval == 0:
|
||||||
checkBox.setChecked(False)
|
checkBox.setChecked(False)
|
||||||
spinBox.setDisabled(True)
|
spinBox.setDisabled(True)
|
||||||
|
if self.det.type == detectorType.XILINX_CHIPTESTBOARD:
|
||||||
|
label = getattr(self.view, f"labelI{i}")
|
||||||
|
label.setDisabled(True)
|
||||||
|
if self.det.type == detectorType.XILINX_CHIPTESTBOARD:
|
||||||
|
self.view.spinBoxVChip.setDisabled(True)
|
||||||
|
|
||||||
|
|
||||||
def updateVoltageNames(self):
|
def updateVoltageNames(self):
|
||||||
retval = self.det.getPowerNames()
|
retval = self.det.getPowerNames()
|
||||||
@ -56,7 +63,10 @@ class PowerSuppliesTab(QtWidgets.QWidget):
|
|||||||
spinBox.editingFinished.disconnect()
|
spinBox.editingFinished.disconnect()
|
||||||
checkBox.stateChanged.disconnect()
|
checkBox.stateChanged.disconnect()
|
||||||
|
|
||||||
retval = self.det.getMeasuredPower(voltageIndex)[0]
|
if self.det.type == detectorType.XILINX_CHIPTESTBOARD:
|
||||||
|
retval = self.det.getPower(voltageIndex)[0]
|
||||||
|
else:
|
||||||
|
retval = self.det.getMeasuredPower(voltageIndex)[0]
|
||||||
# spinBox.setValue(retval)
|
# spinBox.setValue(retval)
|
||||||
if retval > 1:
|
if retval > 1:
|
||||||
checkBox.setChecked(True)
|
checkBox.setChecked(True)
|
||||||
@ -68,8 +78,9 @@ class PowerSuppliesTab(QtWidgets.QWidget):
|
|||||||
|
|
||||||
spinBox.editingFinished.connect(partial(self.setVoltage, i))
|
spinBox.editingFinished.connect(partial(self.setVoltage, i))
|
||||||
checkBox.stateChanged.connect(partial(self.setVoltage, i))
|
checkBox.stateChanged.connect(partial(self.setVoltage, i))
|
||||||
|
|
||||||
self.getVChip()
|
if self.det.type == detectorType.CHIPTESTBOARD:
|
||||||
|
self.getVChip()
|
||||||
|
|
||||||
# TODO: handle multiple events when pressing enter (twice)
|
# TODO: handle multiple events when pressing enter (twice)
|
||||||
|
|
||||||
@ -91,7 +102,8 @@ class PowerSuppliesTab(QtWidgets.QWidget):
|
|||||||
# TODO: (properly) disconnecting and connecting to handle multiple events (out of focus and pressing enter).
|
# TODO: (properly) disconnecting and connecting to handle multiple events (out of focus and pressing enter).
|
||||||
spinBox.editingFinished.connect(partial(self.setVoltage, i))
|
spinBox.editingFinished.connect(partial(self.setVoltage, i))
|
||||||
self.getVoltage(i)
|
self.getVoltage(i)
|
||||||
self.getCurrent(i)
|
if self.det.type == detectorType.CHIPTESTBOARD:
|
||||||
|
self.getCurrent(i)
|
||||||
|
|
||||||
def getCurrent(self, i):
|
def getCurrent(self, i):
|
||||||
label = getattr(self.view, f"labelI{i}")
|
label = getattr(self.view, f"labelI{i}")
|
||||||
|
@ -4,7 +4,7 @@ from pathlib import Path
|
|||||||
from PyQt5 import uic, QtWidgets
|
from PyQt5 import uic, QtWidgets
|
||||||
|
|
||||||
from pyctbgui.utils.defines import Defines
|
from pyctbgui.utils.defines import Defines
|
||||||
from slsdet import dacIndex
|
from slsdet import dacIndex, detectorType
|
||||||
|
|
||||||
|
|
||||||
class SlowAdcTab(QtWidgets.QWidget):
|
class SlowAdcTab(QtWidgets.QWidget):
|
||||||
@ -17,7 +17,8 @@ class SlowAdcTab(QtWidgets.QWidget):
|
|||||||
self.det = None
|
self.det = None
|
||||||
|
|
||||||
def setup_ui(self):
|
def setup_ui(self):
|
||||||
pass
|
if self.det.type == detectorType.XILINX_CHIPTESTBOARD:
|
||||||
|
self.view.pushButtonTemp.setDisabled(True)
|
||||||
|
|
||||||
def connect_ui(self):
|
def connect_ui(self):
|
||||||
for i in range(Defines.slowAdc.count):
|
for i in range(Defines.slowAdc.count):
|
||||||
@ -28,7 +29,8 @@ class SlowAdcTab(QtWidgets.QWidget):
|
|||||||
self.updateSlowAdcNames()
|
self.updateSlowAdcNames()
|
||||||
for i in range(Defines.slowAdc.count):
|
for i in range(Defines.slowAdc.count):
|
||||||
self.updateSlowAdc(i)
|
self.updateSlowAdc(i)
|
||||||
self.updateTemperature()
|
if self.det.type == detectorType.CHIPTESTBOARD:
|
||||||
|
self.updateTemperature()
|
||||||
|
|
||||||
def updateSlowAdcNames(self):
|
def updateSlowAdcNames(self):
|
||||||
for i, name in enumerate(self.mainWindow.det.getSlowADCNames()):
|
for i, name in enumerate(self.mainWindow.det.getSlowADCNames()):
|
||||||
|
@ -817,7 +817,7 @@ Only pressing enter on spinbox will set DAC (with this condition).</string>
|
|||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="18" column="0">
|
<item row="18" column="0">
|
||||||
<widget class="QLabel" name="label_125">
|
<widget class="QLabel" name="labelADCVppDacName">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>ADC_VPP</string>
|
<string>ADC_VPP</string>
|
||||||
</property>
|
</property>
|
||||||
|
@ -118,7 +118,7 @@
|
|||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="4">
|
<item row="1" column="4">
|
||||||
<widget class="QLabel" name="label_70">
|
<widget class="QLabel" name="labelRunF">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Run Clock Frequency (MHz):</string>
|
<string>Run Clock Frequency (MHz):</string>
|
||||||
</property>
|
</property>
|
||||||
@ -218,7 +218,7 @@
|
|||||||
</property>
|
</property>
|
||||||
<layout class="QGridLayout" name="gridLayout_6">
|
<layout class="QGridLayout" name="gridLayout_6">
|
||||||
<item row="2" column="3">
|
<item row="2" column="3">
|
||||||
<widget class="QLabel" name="label_74">
|
<widget class="QLabel" name="labelDBITF">
|
||||||
<property name="minimumSize">
|
<property name="minimumSize">
|
||||||
<size>
|
<size>
|
||||||
<width>200</width>
|
<width>200</width>
|
||||||
@ -231,7 +231,7 @@
|
|||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="2" column="0">
|
<item row="2" column="0">
|
||||||
<widget class="QLabel" name="label_71">
|
<widget class="QLabel" name="labelADCF">
|
||||||
<property name="sizePolicy">
|
<property name="sizePolicy">
|
||||||
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
|
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
|
||||||
<horstretch>0</horstretch>
|
<horstretch>0</horstretch>
|
||||||
@ -278,7 +278,7 @@
|
|||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="4" column="3">
|
<item row="4" column="3">
|
||||||
<widget class="QLabel" name="label_76">
|
<widget class="QLabel" name="labelDBITPipeline">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>DBIT Pipeline:</string>
|
<string>DBIT Pipeline:</string>
|
||||||
</property>
|
</property>
|
||||||
@ -338,21 +338,21 @@
|
|||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="4" column="0">
|
<item row="4" column="0">
|
||||||
<widget class="QLabel" name="label_73">
|
<widget class="QLabel" name="labelADCPipeline">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>ADC Pipeline:</string>
|
<string>ADC Pipeline:</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="3" column="0">
|
<item row="3" column="0">
|
||||||
<widget class="QLabel" name="label_72">
|
<widget class="QLabel" name="labelADCPhase">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>ADC Clock Phase (a.u.):</string>
|
<string>ADC Clock Phase (a.u.):</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="3" column="3">
|
<item row="3" column="3">
|
||||||
<widget class="QLabel" name="label_75">
|
<widget class="QLabel" name="labelDBITPhase">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>DBIT Clock Phase (a.u.):</string>
|
<string>DBIT Clock Phase (a.u.):</string>
|
||||||
</property>
|
</property>
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
<string>Form</string>
|
<string>Form</string>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QFrame" name="frame_7">
|
<widget class="QFrame" name="frame_ADC">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
@ -3142,7 +3142,7 @@
|
|||||||
</property>
|
</property>
|
||||||
<layout class="QGridLayout" name="gridLayout_20">
|
<layout class="QGridLayout" name="gridLayout_20">
|
||||||
<item row="0" column="0">
|
<item row="0" column="0">
|
||||||
<widget class="QLabel" name="label_67">
|
<widget class="QLabel" name="labelADCInversion">
|
||||||
<property name="font">
|
<property name="font">
|
||||||
<font>
|
<font>
|
||||||
<pointsize>10</pointsize>
|
<pointsize>10</pointsize>
|
||||||
@ -3188,7 +3188,7 @@
|
|||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="0" column="3">
|
<item row="0" column="3">
|
||||||
<widget class="QLabel" name="label_68">
|
<widget class="QLabel" name="labelADCEnable">
|
||||||
<property name="font">
|
<property name="font">
|
||||||
<font>
|
<font>
|
||||||
<pointsize>10</pointsize>
|
<pointsize>10</pointsize>
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
<string>Form</string>
|
<string>Form</string>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QFrame" name="frame_4">
|
<widget class="QFrame" name="frame_slowadcs">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
|
@ -1056,7 +1056,7 @@ int getPower(enum DACINDEX ind) {
|
|||||||
|
|
||||||
// dac powered off
|
// dac powered off
|
||||||
if (dacValues[ind] == LTC2620_D_GetPowerDownValue()) {
|
if (dacValues[ind] == LTC2620_D_GetPowerDownValue()) {
|
||||||
LOG(logWARNING, ("Power V%s powered down\n", powerNames[pwrIndex]));
|
LOG(logWARNING, ("Power V%s is powered down\n", powerNames[pwrIndex]));
|
||||||
return LTC2620_D_GetPowerDownValue();
|
return LTC2620_D_GetPowerDownValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user