|
@@ -667,6 +667,16 @@ class Ui_MainWindow(object):
|
|
|
self.status_bar.setObjectName(_fromUtf8("status_bar"))
|
|
|
self.verticalLayout_9.addWidget(self.status_bar)
|
|
|
|
|
|
+
|
|
|
+ self.status_bar_fr = QtGui.QStatusBar(self.centralwidget)
|
|
|
+ self.status_bar_fr.showMessage("Framerate display:")
|
|
|
+ self.status_bar_fr.setSizeGripEnabled(0)
|
|
|
+ self.status_bar_fr.setMaximumSize(QtCore.QSize(900, 100))
|
|
|
+ self.status_bar_fr.setObjectName(_fromUtf8("status_bar_fr"))
|
|
|
+ self.verticalLayout_9.addWidget(self.status_bar_fr)
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
self.textEdit = QtGui.QTextEdit(self.centralwidget)
|
|
|
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Minimum)
|
|
|
sizePolicy.setHorizontalStretch(0)
|
|
@@ -1052,6 +1062,7 @@ class Ui_MainWindow(object):
|
|
|
self.textEdit.append(u'\u26A0' + ' Data file does not exist!')
|
|
|
check_status()
|
|
|
led_update()
|
|
|
+ framerate_calc()
|
|
|
|
|
|
|
|
|
|
|
@@ -1073,6 +1084,7 @@ class Ui_MainWindow(object):
|
|
|
self.textEdit.append(u'\u26A0' + ' Data file does not exist!')
|
|
|
check_status()
|
|
|
led_update()
|
|
|
+ framerate_calc()
|
|
|
else:
|
|
|
self.pushButton_run.setStyleSheet("background-color : green")
|
|
|
self.pushButton_run.setText(_translate("MainWindow", "RUN", None))
|
|
@@ -1100,12 +1112,13 @@ class Ui_MainWindow(object):
|
|
|
self.spinBox_gott_gain.setValue(2)
|
|
|
self.spinBox_total_samples.setValue(1024)
|
|
|
self.spinBox_skip_samples.setValue(0)
|
|
|
- self.spinBox_int_trig.setValue(252)
|
|
|
+ self.spinBox_int_trig.setValue(92)
|
|
|
rst_slow_trigger_samples()
|
|
|
self.status_bar.showMessage('Board initialized', 1000)
|
|
|
self.textEdit.insertPlainText(subprocess.check_output(['./status.sh']))
|
|
|
check_status()
|
|
|
led_update()
|
|
|
+ framerate_calc()
|
|
|
|
|
|
def init_board_ex_rf():
|
|
|
self.textEdit.clear()
|
|
@@ -1120,13 +1133,54 @@ class Ui_MainWindow(object):
|
|
|
self.spinBox_gott_gain.setValue(2)
|
|
|
self.spinBox_total_samples.setValue(1024)
|
|
|
self.spinBox_skip_samples.setValue(0)
|
|
|
- self.spinBox_int_trig.setValue(252)
|
|
|
+ self.spinBox_int_trig.setValue(92)
|
|
|
rst_slow_trigger_samples()
|
|
|
self.status_bar.showMessage('Board initialized with external RF parameters', 1000)
|
|
|
self.textEdit.insertPlainText(subprocess.check_output(['./status.sh']))
|
|
|
check_status()
|
|
|
led_update()
|
|
|
+ framerate_calc()
|
|
|
+
|
|
|
|
|
|
+#######################################################################################################################
|
|
|
+
|
|
|
+ def framerate_calc():
|
|
|
+ acq_time = read_register("FRAME_RATE", hex = False)
|
|
|
+ acq_time = float(acq_time*0.2)
|
|
|
+ total_samples = read_register("FT_ACQ", hex = False)
|
|
|
+ framerate = float(total_samples / acq_time)
|
|
|
+ #self.status_bar_fr.showMessage('Framerate (Hz): '+framerate + ' : ' + value, 1000)
|
|
|
+ #self.status_bar_fr.showMessage('Framerate (Mfps):' +str(framerate), 1000)
|
|
|
+ self.textEdit.append('Framerate (Mfps):'+ str(framerate))
|
|
|
+ return framerate
|
|
|
+
|
|
|
+
|
|
|
+ def read_int_time_value():
|
|
|
+ integration_time_rd = read_register("INTEG_DURATION", hex = False)
|
|
|
+ integration_time_r = integration_time_rd * 8
|
|
|
+ return integration_time_r
|
|
|
+
|
|
|
+ def write_int_time_value():
|
|
|
+ integration_time_wr = self.spinBox_int_time.text()
|
|
|
+ integration_time_w = int(float(integration_time_wr) )// 8
|
|
|
+ integration_time_w = str(integration_time_w)
|
|
|
+ write_reg("INTEG_DURATION",integration_time_w)
|
|
|
+ return integration_time_w
|
|
|
+
|
|
|
+
|
|
|
+ def read_int_delay_value():
|
|
|
+ integration_delay_rd = read_register("INTEG_DELAY", hex = False)
|
|
|
+ integration_delay_r = integration_delay_rd * 8
|
|
|
+ return integration_delay_r
|
|
|
+
|
|
|
+ def write_int_delay_value():
|
|
|
+ integration_delay_wr = self.spinBox_int_delay.text()
|
|
|
+ integration_delay_w = int(float(integration_delay_wr) )// 8
|
|
|
+ integration_delay_w = str(integration_delay_w)
|
|
|
+ write_reg("INTEG_DELAY",integration_delay_w)
|
|
|
+ return integration_delay_w
|
|
|
+
|
|
|
+########################################################################################################################
|
|
|
def timescan():
|
|
|
self.textEdit.setText(timestamp())
|
|
|
if os.path.isfile('temp_bg.bin'):
|
|
@@ -1168,6 +1222,7 @@ class Ui_MainWindow(object):
|
|
|
self.textEdit.append(u'\u26A0' + ' Data file does not exist!')
|
|
|
check_status()
|
|
|
led_update()
|
|
|
+ framerate_calc()
|
|
|
|
|
|
def readout_background():
|
|
|
global background_data
|
|
@@ -1196,6 +1251,7 @@ class Ui_MainWindow(object):
|
|
|
self.textEdit.append(u'\u26A0' + ' Data file does not exist!')
|
|
|
check_status()
|
|
|
led_update()
|
|
|
+ framerate_calc()
|
|
|
|
|
|
|
|
|
def readout_unmodulated():
|
|
@@ -1225,6 +1281,7 @@ class Ui_MainWindow(object):
|
|
|
self.textEdit.append(u'\u26A0' + ' Data file does not exist!')
|
|
|
check_status()
|
|
|
led_update()
|
|
|
+ framerate_calc()
|
|
|
|
|
|
def poweroff():
|
|
|
self.textEdit.setText(timestamp())
|
|
@@ -1328,8 +1385,8 @@ class Ui_MainWindow(object):
|
|
|
self.status_bar.showMessage('Error!', 1000)
|
|
|
self.textEdit.insertPlainText(u'\u26A0' + ' Communication failed with FPGA board... Check FPGA, the PCI-Express connection and reboot')
|
|
|
else:
|
|
|
- self.spinBox_int_time.setValue(read_register("INTEG_DURATION"))
|
|
|
- self.spinBox_int_delay.setValue(read_register("INTEG_DELAY"))
|
|
|
+ self.spinBox_int_time.setValue(read_int_time_value())
|
|
|
+ self.spinBox_int_delay.setValue(read_int_delay_value())
|
|
|
self.spinBox_gott_gain.setValue(read_register("GOTT_GAIN"))
|
|
|
self.spinBox_total_samples.setValue(read_register("FT_TO_ACQ"))
|
|
|
self.spinBox_skip_samples.setValue(read_register("FT_SKIP"))
|
|
@@ -1346,19 +1403,19 @@ class Ui_MainWindow(object):
|
|
|
status_1 = read_register("STATUS_1", hex=True)
|
|
|
status_1 = int(status_1,16)
|
|
|
status_1 = '{:032b}'.format(status_1)
|
|
|
- if (status_1 == '0000000000000000000000000000000000000000'):
|
|
|
- self.status_bar.showMessage(u'Status: \u2713', 5000)
|
|
|
- else:
|
|
|
- self.status_bar.showMessage(u'Status: \u26A0 error detected!', 5000)
|
|
|
- self.textEdit.setTextColor(QtGui.QColor(255, 50, 0))
|
|
|
- if (status_1[0] != '0'):
|
|
|
- self.textEdit.append(u'\u26A0' + ' Fast trigger is too fast or integration time is too high!')
|
|
|
- if (status_1[6] != '0'):
|
|
|
- self.textEdit.append(u'\u26A0' + ' ADC fifos full! Problem with onboard DDR memory, turn on/off FPGA board and reboot the system.')
|
|
|
- if (status_1[8] != '0'):
|
|
|
- self.textEdit.append(u'\u26A0' + ' DDR fifo is full during data readout! Re-init, check PCIe connection')
|
|
|
- if (status_1[16] != '0'):
|
|
|
- self.textEdit.append(u'\u26A0' + ' Synchronization lost during operation! Check RF-CLK and re-init the system')
|
|
|
+ #if (status_1 == '0000000000000000000000000000000000000000'):
|
|
|
+ # self.status_bar.showMessage(u'Status: \u2713', 5000)
|
|
|
+ #else:
|
|
|
+ # self.status_bar.showMessage(u'Status: \u26A0 error detected!', 5000)
|
|
|
+ # self.textEdit.setTextColor(QtGui.QColor(255, 50, 0))
|
|
|
+ #if (status_1[0] != '0'):
|
|
|
+ # self.textEdit.append(u'\u26A0' + ' Fast trigger is too fast or integration time is too high!')
|
|
|
+ #if (status_1[6] != '0'):
|
|
|
+ # self.textEdit.append(u'\u26A0' + ' ADC fifos full! Problem with onboard DDR memory, turn on/off FPGA board and reboot the system.')
|
|
|
+ #if (status_1[8] != '0'):
|
|
|
+ # self.textEdit.append(u'\u26A0' + ' DDR fifo is full during data readout! Re-init, check PCIe connection')
|
|
|
+ #if (status_1[16] != '0'):
|
|
|
+ # self.textEdit.append(u'\u26A0' + ' Synchronization lost during operation! Check RF-CLK and re-init the system')
|
|
|
|
|
|
self.textEdit.setTextColor(QtGui.QColor(0, 0, 0))
|
|
|
return
|
|
@@ -1387,39 +1444,39 @@ class Ui_MainWindow(object):
|
|
|
self.led12.value=False
|
|
|
else:
|
|
|
# True = red = error
|
|
|
- if (status_led[4] != '1'):
|
|
|
- self.led1.value=True
|
|
|
- if (status_led[5] != '1'):
|
|
|
- self.led2.value=True
|
|
|
+ if (status_led[4] != '0'):
|
|
|
+ self.led12.value=True
|
|
|
+ if (status_led[5] != '0'):
|
|
|
+ self.led11.value=True
|
|
|
if (status_led[17] != '0'):
|
|
|
- self.led3.value=True
|
|
|
+ self.led10.value=True
|
|
|
if (status_led[18] != '0'):
|
|
|
- self.led4.value=True
|
|
|
+ self.led9.value=True
|
|
|
if (status_led[19] != '0'):
|
|
|
- self.led5.value=True
|
|
|
- if (status_led[20] != '1'):
|
|
|
- self.led6.value=True
|
|
|
- if (status_led[21] != '1'):
|
|
|
- self.led7.value=True
|
|
|
- if (status_led[22] != '1'):
|
|
|
self.led8.value=True
|
|
|
- if (status_led[23] != '1'):
|
|
|
- self.led9.value=True
|
|
|
- if (status_led[25] != '1'):
|
|
|
- self.led10.value=True
|
|
|
- if (status_led[26] != '0'):
|
|
|
- self.led11.value=True
|
|
|
- if (status_led[27] != '0'):
|
|
|
- self.led12.value=True
|
|
|
+ if (status_led[20] != '0'):
|
|
|
+ self.led7.value=True
|
|
|
+ if (status_led[21] != '0'):
|
|
|
+ self.led6.value=True
|
|
|
+ if (status_led[22] != '0'):
|
|
|
+ self.led5.value=True
|
|
|
+ if (status_led[23] != '0'):
|
|
|
+ self.led4.value=True
|
|
|
+ if (status_led[25] != '0'):
|
|
|
+ self.led3.value=True
|
|
|
+ if (status_led[26] != '1'):
|
|
|
+ self.led2.value=True
|
|
|
+ if (status_led[27] != '1'):
|
|
|
+ self.led1.value=True
|
|
|
return
|
|
|
|
|
|
- def framerate_calc():
|
|
|
- acq_time = read_register("FRAME_RATE", hex = False)
|
|
|
- acq_time = acq_time*200/1000000000
|
|
|
- total_samples = read_register("FT_TO_ACQ", hex = False)
|
|
|
- framerate = float(total_samples / acq_time)
|
|
|
+ #def framerate_calc():
|
|
|
+ # acq_time = read_register("FRAME_RATE", hex = False)
|
|
|
+ # acq_time = acq_time*200/1000000000
|
|
|
+ # total_samples = read_register("FT_TO_ACQ", hex = False)
|
|
|
+ # framerate = float(total_samples / acq_time)
|
|
|
|
|
|
- return framerate
|
|
|
+ #return framerate
|
|
|
|
|
|
|
|
|
with open('kalypso_registers.json') as registers_file:
|
|
@@ -1429,8 +1486,8 @@ class Ui_MainWindow(object):
|
|
|
self.log_conf = json.load(log_conf_file)
|
|
|
|
|
|
# BUTTONS ACTIONS
|
|
|
- self.spinBox_int_time.valueChanged.connect(lambda: write_reg("INTEG_DURATION",self.spinBox_int_time.text()))
|
|
|
- self.spinBox_int_delay.valueChanged.connect(lambda: write_reg("INTEG_DELAY",self.spinBox_int_delay.text()))
|
|
|
+ self.spinBox_int_time.valueChanged.connect(lambda: write_int_time_value())
|
|
|
+ self.spinBox_int_delay.valueChanged.connect(lambda: write_int_delay_value())
|
|
|
self.spinBox_gott_gain.valueChanged.connect(lambda: write_reg("GOTT_GAIN",self.spinBox_gott_gain.text()))
|
|
|
self.spinBox_total_samples.valueChanged.connect(lambda: write_reg("FT_TO_ACQ",self.spinBox_total_samples.text()))
|
|
|
self.spinBox_skip_samples.valueChanged.connect(lambda: write_reg("FT_SKIP",self.spinBox_skip_samples.text()))
|
|
@@ -1484,8 +1541,8 @@ class Ui_MainWindow(object):
|
|
|
self.label_settings.setText(_translate("MainWindow", "KALYPSO settings", None))
|
|
|
self.pushButton_readsettings.setText(_translate("MainWindow", "Read-back", None))
|
|
|
self.label_settings.setFont(boldFont)
|
|
|
- self.label_int_time.setText(_translate("MainWindow", "Integration Time (16 ns step)", None))
|
|
|
- self.label_int_delay.setText(_translate("MainWindow", "Integration Delay (16 ns step)", None))
|
|
|
+ self.label_int_time.setText(_translate("MainWindow", "Integration Time (ns)", None))
|
|
|
+ self.label_int_delay.setText(_translate("MainWindow", "Integration Delay (ns)", None))
|
|
|
self.label_gott_gain.setText(_translate("MainWindow", "GOTTHARD Gain", None))
|
|
|
self.label_disp_settings.setText(_translate("MainWindow", "Display settings", None))
|
|
|
self.label_disp_settings.setFont(boldFont)
|
|
@@ -1500,7 +1557,7 @@ class Ui_MainWindow(object):
|
|
|
self.label_controls.setText(_translate("MainWindow", "KALYPSO operation", None))
|
|
|
self.label_controls.setFont(boldFont)
|
|
|
self.pushButton_init_board.setText(_translate("MainWindow", "Init Board", None))
|
|
|
- self.pushButton_init_board_ex_rf.setText(_translate("MainWindow", "Init Board (Soleil)", None))
|
|
|
+ self.pushButton_init_board_ex_rf.setText(_translate("MainWindow", "Init Board (EX_RF)", None))
|
|
|
|
|
|
|
|
|
self.pushButton_timescan.setText(_translate("MainWindow", "Timescan", None))
|