From 1fc203818e01a7ae1571b537a84c30bffbce8f90 Mon Sep 17 00:00:00 2001 From: "Ryan@SOLARIS-DAQ" Date: Fri, 14 Apr 2023 14:10:02 -0400 Subject: [PATCH] UpdateScalar also update digiSettings status, if exist and visible --- DigiParameters.h | 1 + digiSettingsPanel.cpp | 54 +++++++++++++++++++++++++++++++++++-------- digiSettingsPanel.h | 5 +++- mainwindow.cpp | 4 ++++ 4 files changed, 54 insertions(+), 10 deletions(-) diff --git a/DigiParameters.h b/DigiParameters.h index 03ad58a..46ac802 100644 --- a/DigiParameters.h +++ b/DigiParameters.h @@ -152,6 +152,7 @@ namespace PHA{ const Reg TempSensADC7 ("TempSensADC7", RW::ReadOnly, TYPE::DIG, {}, ANSTYPE::INTEGER, "C"); const std::vector TempSensADC = {TempSensADC0,TempSensADC1,TempSensADC2,TempSensADC3,TempSensADC4,TempSensADC5,TempSensADC6,TempSensADC7}; + const std::vector TempSensOthers = {TempSensAirIn,TempSensAirOut,TempSensCore,TempSensFirstADC,TempSensLastADC,TempSensHottestADC}; const Reg TempSensDCDC ("TempSensDCDC", RW::ReadOnly, TYPE::DIG, {}, ANSTYPE::INTEGER, "C"); const Reg VInSensDCDC ("VInSensDCDC", RW::ReadOnly, TYPE::DIG, {}, ANSTYPE::INTEGER, "V"); diff --git a/digiSettingsPanel.cpp b/digiSettingsPanel.cpp index e58ec0d..79b1238 100644 --- a/digiSettingsPanel.cpp +++ b/digiSettingsPanel.cpp @@ -76,7 +76,7 @@ DigiSettingsPanel::DigiSettingsPanel(Digitizer2Gen ** digi, unsigned short nDigi enableSignalSlot = false; QVBoxLayout * mainLayout = new QVBoxLayout(this); this->setLayout(mainLayout); - QTabWidget * tabWidget = new QTabWidget(this); mainLayout->addWidget(tabWidget); + tabWidget = new QTabWidget(this); mainLayout->addWidget(tabWidget); //@========================== Tab for each digitizer for(unsigned short iDigi = 0; iDigi < this->nDigi; iDigi++){ @@ -91,8 +91,8 @@ DigiSettingsPanel::DigiSettingsPanel(Digitizer2Gen ** digi, unsigned short nDigi QHBoxLayout * tabLayout_H = new QHBoxLayout(tab); //tab->setLayout(tabLayout_H); - QVBoxLayout * tabLayout_V1 = new QVBoxLayout(); tabLayout_H->addLayout(tabLayout_V1); - QVBoxLayout * tabLayout_V2 = new QVBoxLayout(); tabLayout_H->addLayout(tabLayout_V2); + QVBoxLayout * tabLayout_V1 = new QVBoxLayout(tab); tabLayout_H->addLayout(tabLayout_V1); + QVBoxLayout * tabLayout_V2 = new QVBoxLayout(tab); tabLayout_H->addLayout(tabLayout_V2); {//^====================== Group of Digitizer Info QGroupBox * infoBox = new QGroupBox("Board Info", tab); @@ -163,6 +163,10 @@ DigiSettingsPanel::DigiSettingsPanel(Digitizer2Gen ** digi, unsigned short nDigi statusLayout->addWidget(leTemp[iDigi][i], 2, 1 + 2*i, 1, 2); } + QPushButton * bnUpdateStatus = new QPushButton("Update Status", this); + statusLayout->addWidget(bnUpdateStatus, 2, 19); + connect(bnUpdateStatus, &QPushButton::clicked, this, &DigiSettingsPanel::UpdateStatus); + for( int i = 0; i < statusLayout->columnCount(); i++) statusLayout->setColumnStretch(i, 0 ); } @@ -213,6 +217,7 @@ DigiSettingsPanel::DigiSettingsPanel(Digitizer2Gen ** digi, unsigned short nDigi connect(bnClearData[iDigi], &QPushButton::clicked, this, [=](){ digi[ID]->SendCommand(PHA::DIG::ClearData); SendLogMsg("Digi-" + QString::number(digi[ID]->GetSerialNumber()) + "|Send Command : " + QString::fromStdString(PHA::DIG::ClearData.GetFullPara())); + UpdateStatus(); }); bnArmACQ[iDigi] = new QPushButton("Arm ACQ", tab); @@ -220,6 +225,7 @@ DigiSettingsPanel::DigiSettingsPanel(Digitizer2Gen ** digi, unsigned short nDigi connect(bnArmACQ[iDigi], &QPushButton::clicked, this, [=](){ digi[ID]->SendCommand(PHA::DIG::ArmACQ); SendLogMsg("Digi-" + QString::number(digi[ID]->GetSerialNumber()) + "|Send Command : " + QString::fromStdString(PHA::DIG::ArmACQ.GetFullPara())); + UpdateStatus(); }); bnDisarmACQ[iDigi] = new QPushButton("Disarm ACQ", tab); @@ -227,6 +233,7 @@ DigiSettingsPanel::DigiSettingsPanel(Digitizer2Gen ** digi, unsigned short nDigi connect(bnDisarmACQ[iDigi], &QPushButton::clicked, this, [=](){ digi[ID]->SendCommand(PHA::DIG::DisarmACQ); SendLogMsg("Digi-" + QString::number(digi[ID]->GetSerialNumber()) + "|Send Command : " + QString::fromStdString(PHA::DIG::DisarmACQ.GetFullPara())); + UpdateStatus(); }); bnSoftwareStart[iDigi] = new QPushButton("Software Start ACQ", tab); @@ -234,6 +241,7 @@ DigiSettingsPanel::DigiSettingsPanel(Digitizer2Gen ** digi, unsigned short nDigi connect(bnSoftwareStart[iDigi], &QPushButton::clicked, this, [=](){ digi[ID]->SendCommand(PHA::DIG::SoftwareStartACQ); SendLogMsg("Digi-" + QString::number(digi[ID]->GetSerialNumber()) + "|Send Command : " + QString::fromStdString(PHA::DIG::SoftwareStartACQ.GetFullPara())); + UpdateStatus(); }); bnSoftwareStop[iDigi] = new QPushButton("Software Stop ACQ", tab); @@ -241,6 +249,7 @@ DigiSettingsPanel::DigiSettingsPanel(Digitizer2Gen ** digi, unsigned short nDigi connect(bnSoftwareStop[iDigi], &QPushButton::clicked, this, [=](){ digi[ID]->SendCommand(PHA::DIG::SoftwareStopACQ); SendLogMsg("Digi-" + QString::number(digi[ID]->GetSerialNumber()) + "|Send Command : " + QString::fromStdString(PHA::DIG::SoftwareStopACQ.GetFullPara())); + UpdateStatus(); }); //--------------- @@ -1585,6 +1594,24 @@ void DigiSettingsPanel::RefreshSettings(){ UpdatePanelFromMemory(); } +void DigiSettingsPanel::UpdateStatus(){ + + if( tabWidget->currentIndex() >= nDigi) return; + + digi[ID]->ReadValue(PHA::DIG::LED_status); + digi[ID]->ReadValue(PHA::DIG::ACQ_status); + + for( int i = 0; i < (int) PHA::DIG::TempSensADC.size(); i++){ + digi[ID]->ReadValue(PHA::DIG::TempSensADC[i]); + } + for( int i = 0; i < (int) PHA::DIG::TempSensOthers.size(); i++){ + digi[ID]->ReadValue(PHA::DIG::TempSensOthers[i]); + } + + UpdatePanelFromMemory(true); + +} + void DigiSettingsPanel::EnableControl(){ UpdatePanelFromMemory(); @@ -1703,17 +1730,17 @@ void DigiSettingsPanel::SetDefaultPHASettigns(){ RefreshSettings(); } -void DigiSettingsPanel::UpdatePanelFromMemory(){ +void DigiSettingsPanel::UpdatePanelFromMemory(bool onlyStatus){ if( !isVisible() ) return; enableSignalSlot = false; - printf("DigiSettingsPanel::%s Digi-%d\n", __func__, digi[ID]->GetSerialNumber()); - - for (unsigned short j = 0; j < (unsigned short) infoIndex.size(); j++){ - leInfo[ID][j]->setText(QString::fromStdString(digi[ID]->GetSettingValue(infoIndex[j].second))); - } + if( onlyStatus){ + printf("DigiSettingsPanel::%s Digi-%d [Only Board Status]\n", __func__, digi[ID]->GetSerialNumber()); + }else{ + printf("DigiSettingsPanel::%s Digi-%d\n", __func__, digi[ID]->GetSerialNumber()); + } //--------- LED Status unsigned int ledStatus = atoi(digi[ID]->GetSettingValue(PHA::DIG::LED_status).c_str()); @@ -1739,6 +1766,15 @@ void DigiSettingsPanel::UpdatePanelFromMemory(){ for( int i = 0; i < 8; i++){ leTemp[ID][i]->setText(QString::fromStdString(digi[ID]->GetSettingValue(PHA::DIG::TempSensADC[i]))); } + + if( onlyStatus ) { + enableSignalSlot = true; + return; + } + + for (unsigned short j = 0; j < (unsigned short) infoIndex.size(); j++){ + leInfo[ID][j]->setText(QString::fromStdString(digi[ID]->GetSettingValue(infoIndex[j].second))); + } //-------- board settings FillComboBoxValueFromMemory(cbbClockSource[ID], PHA::DIG::ClockSource); diff --git a/digiSettingsPanel.h b/digiSettingsPanel.h index 82109c5..2bbad1d 100644 --- a/digiSettingsPanel.h +++ b/digiSettingsPanel.h @@ -41,7 +41,8 @@ private slots: public slots: void EnableControl(); - void UpdatePanelFromMemory(); + void UpdatePanelFromMemory(bool onlyStatus = false); + void UpdateStatus(); signals: @@ -56,6 +57,8 @@ private: QString digiSettingPath; + QTabWidget * tabWidget; + //------------ Layout/GroupBox QGroupBox * digiBox[MaxNumberOfDigitizer]; QGroupBox * VGABox[MaxNumberOfDigitizer]; diff --git a/mainwindow.cpp b/mainwindow.cpp index 10aa940..54c8d98 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -1153,6 +1153,9 @@ void MainWindow::UpdateScalar(){ influx->ClearDataPointsBuffer(); } + //TODO record ADC temperature, and status. In this case, the digiSetting is only UpdateFromMemory, manually looping digitizers and get the status. + if( digiSetting && digiSetting->isVisible() ) digiSetting->UpdateStatus(); + if( solarisSetting && solarisSetting->isVisible() ) solarisSetting->UpdateThreshold(); } @@ -1877,6 +1880,7 @@ void MainWindow::CreateNewExperiment(const QString newExpName){ } + //TODO is there anyway to create a new elog ?? direct edit the config.cfg?? //CheckElog(); logMsgHTMLMode = true; LogMsg(" !!!! Please Create a new Elog with name " + newExpName + ". ");