From ec7d8ff7403270fdec7c6c7479eecd2c881fc34e Mon Sep 17 00:00:00 2001 From: "Ryan@WorkStation" Date: Tue, 28 Feb 2023 17:36:40 -0500 Subject: [PATCH] simplifed DigitizerClass read write using const Reg --- ClassDigitizer2Gen.cpp | 44 +++++++--------------------------------- ClassDigitizer2Gen.h | 12 ++++------- mainwindow.cpp | 6 +++--- scope.cpp | 46 +++++++++++++++++++----------------------- scope.h | 8 ++++---- 5 files changed, 39 insertions(+), 77 deletions(-) diff --git a/ClassDigitizer2Gen.cpp b/ClassDigitizer2Gen.cpp index 5bb3c43..1eef717 100644 --- a/ClassDigitizer2Gen.cpp +++ b/ClassDigitizer2Gen.cpp @@ -101,16 +101,13 @@ std::string Digitizer2Gen::GetPath(uint64_t handle){ //########################################### Read Write int Digitizer2Gen::FindIndex(const Reg para){ - switch (para.GetType() ){ case TYPE::CH: return chMap[para.GetPara()]; case TYPE::DIG: return boardMap[para.GetPara()]; case TYPE::VGA: return 0; case TYPE::LVDS: return -1; } - return -1; - } std::string Digitizer2Gen::ReadValue(const char * parameter, bool verbose){ @@ -140,29 +137,6 @@ std::string Digitizer2Gen::ReadValue(const Reg para, int ch_index, bool verbose return ans; } -std::string Digitizer2Gen::ReadDigValue(std::string shortPara, bool verbose){ - std::string haha = "/par/" + shortPara; - std::string ans = ReadValue(haha.c_str(), verbose); - - for( int i = 0; i < (int) boardSettings.size(); i++){ - if( boardSettings[i].GetPara() == shortPara ) boardSettings[i].SetValue(ans); - } - - return ans; -} - -std::string Digitizer2Gen::ReadChValue(std::string ch, std::string shortPara, bool verbose){ - std::string haha = "/ch/" + ch + "/par/" + shortPara; - std::string ans = ReadValue(haha.c_str(), verbose); - - const int index = atoi(ch.c_str()); - for( int i = 0; i < (int) chSettings[index].size(); i++){ - if( chSettings[index][i].GetPara() == shortPara ) chSettings[index][i].SetValue(ans); - } - - return ans; -} - bool Digitizer2Gen::WriteValue(const char * parameter, std::string value){ if( !isConnected ) return false; printf(" %s|%-45s|%s|\n", __func__, parameter, value.c_str()); @@ -180,7 +154,13 @@ bool Digitizer2Gen::WriteValue(const Reg para, std::string value, int ch_index){ int index = FindIndex(para); if( index != -1 ){ switch(para.GetType()){ - case TYPE::CH : chSettings[ch_index][index].SetValue(value); break; + case TYPE::CH :{ + if( ch_index >= 0 ){ + chSettings[ch_index][index].SetValue(value); + }else{ + for( int ch = 0; ch < nChannels; ch++ ) chSettings[ch][index].SetValue(value); + } + }break; case TYPE::VGA : VGASetting[ch_index].SetValue(value); break; case TYPE::DIG : boardSettings[index].SetValue(value); break; case TYPE::LVDS : break; @@ -192,16 +172,6 @@ bool Digitizer2Gen::WriteValue(const Reg para, std::string value, int ch_index){ } } -bool Digitizer2Gen::WriteDigValue(std::string shortPara, std::string value){ - std::string haha = "/par/" + shortPara; - return WriteValue(haha.c_str(), value); -} - -bool Digitizer2Gen::WriteChValue(std::string ch, std::string shortPara, std::string value){ - std::string haha = "/ch/" + ch + "/par/" + shortPara; - return WriteValue(haha.c_str(), value); -} - void Digitizer2Gen::SendCommand(const char * parameter){ if( !isConnected ) return; printf("Send Command : %s \n", parameter); diff --git a/ClassDigitizer2Gen.h b/ClassDigitizer2Gen.h index 734436f..dfd11b6 100644 --- a/ClassDigitizer2Gen.h +++ b/ClassDigitizer2Gen.h @@ -91,12 +91,8 @@ class Digitizer2Gen { std::string ReadValue(const char * parameter, bool verbose = false); std::string ReadValue(const Reg para, int ch_index = -1, bool verbose = false); - std::string ReadDigValue(std::string shortPara, bool verbose = false); - std::string ReadChValue(std::string ch, std::string shortPara, bool verbose = false); bool WriteValue(const char * parameter, std::string value); bool WriteValue(const Reg para, std::string value, int ch_index = -1); - bool WriteDigValue(std::string shortPara, std::string value); - bool WriteChValue(std::string ch, std::string shortPara, std::string value); void SendCommand(const char * parameter); void SendCommand(std::string shortPara); @@ -111,10 +107,10 @@ class Digitizer2Gen { bool IsAcqOn() const {return acqON;} void SetPHADataFormat(unsigned short dataFormat); // 0 = all data, - // 1 = analog trace-0 only + flags - // 2 = no trace, only ch, energy, timestamp, fine_timestamp + flags - // 3 = only ch, energy, timestamp, minimum - // 15 = raw data + // 1 = analog trace-0 only + flags + // 2 = no trace, only ch, energy, timestamp, fine_timestamp + flags + // 3 = only ch, energy, timestamp, minimum + // 15 = raw data int ReadData(); int ReadStat(); // digitizer update it every 500 msec void PrintStat(); diff --git a/mainwindow.cpp b/mainwindow.cpp index 3a82e9b..05dc4a1 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -706,10 +706,10 @@ void MainWindow::UpdateScalar(){ //=========== another method, directly readValue digiMTX.lock(); for( int ch = 0; ch < digi[iDigi]->GetNChannels(); ch ++){ - std::string time = digi[iDigi]->ReadChValue(std::to_string(ch), DIGIPARA::CH::ChannelRealtime); // for refreashing SelfTrgRate and SavedCount - haha[ch] = digi[iDigi]->ReadChValue(std::to_string(ch), DIGIPARA::CH::SelfTrgRate); + std::string time = digi[iDigi]->ReadValue(DIGIPARA::CH::ChannelRealtime, ch); // for refreashing SelfTrgRate and SavedCount + haha[ch] = digi[iDigi]->ReadValue(DIGIPARA::CH::SelfTrgRate, ch); leTrigger[iDigi][ch]->setText(QString::fromStdString(haha[ch])); - std::string kaka = digi[iDigi]->ReadChValue(std::to_string(ch), DIGIPARA::CH::ChannelSavedCount); + std::string kaka = digi[iDigi]->ReadValue(DIGIPARA::CH::ChannelSavedCount, ch); acceptRate[ch] = atoi(kaka.c_str())*1e9*1.0 / atol(time.c_str()); //if( kaka != "0" ) printf("%s, %s | %.2f\n", time.c_str(), kaka.c_str(), acceptRate); leAccept[iDigi][ch]->setText(QString::number(acceptRate[ch],'f', 1)); diff --git a/scope.cpp b/scope.cpp index 80e9f26..8fa5bc6 100644 --- a/scope.cpp +++ b/scope.cpp @@ -80,8 +80,8 @@ Scope::Scope(Digitizer2Gen **digi, unsigned int nDigi, ReadDataThread ** readDat int iDigi = cbScopeDigi->currentIndex(); int ch = cbScopeCh->currentIndex(); digiMTX.lock(); - digi[iDigi]->WriteChValue("0..63", DIGIPARA::CH::ChannelEnable, "false"); - digi[iDigi]->WriteChValue(std::to_string(ch), DIGIPARA::CH::ChannelEnable, "true"); + digi[iDigi]->WriteValue(DIGIPARA::CH::ChannelEnable, "false", -1); + digi[iDigi]->WriteValue(DIGIPARA::CH::ChannelEnable, "true", ch); ReadScopeSettings(iDigi, ch); digiMTX.unlock(); }); @@ -141,7 +141,7 @@ Scope::Scope(Digitizer2Gen **digi, unsigned int nDigi, ReadDataThread ** readDat int iDigi = cbScopeDigi->currentIndex(); int ch = cbScopeCh->currentIndex(); digiMTX.lock(); - digi[iDigi]->WriteChValue(std::to_string(ch), DIGIPARA::CH::WaveAnalogProbe0, (cbAnaProbe[0]->currentData()).toString().toStdString()); + digi[iDigi]->WriteValue(DIGIPARA::CH::WaveAnalogProbe0, (cbAnaProbe[0]->currentData()).toString().toStdString(), ch); digiMTX.unlock(); }); @@ -150,7 +150,7 @@ Scope::Scope(Digitizer2Gen **digi, unsigned int nDigi, ReadDataThread ** readDat int iDigi = cbScopeDigi->currentIndex(); int ch = cbScopeCh->currentIndex(); digiMTX.lock(); - digi[iDigi]->WriteChValue(std::to_string(ch), DIGIPARA::CH::WaveAnalogProbe1, (cbAnaProbe[1]->currentData()).toString().toStdString()); + digi[iDigi]->WriteValue(DIGIPARA::CH::WaveAnalogProbe1, (cbAnaProbe[1]->currentData()).toString().toStdString(), ch); digiMTX.unlock(); }); @@ -195,7 +195,7 @@ Scope::Scope(Digitizer2Gen **digi, unsigned int nDigi, ReadDataThread ** readDat int iDigi = cbScopeDigi->currentIndex(); int ch = cbScopeCh->currentIndex(); digiMTX.lock(); - digi[iDigi]->WriteChValue(std::to_string(ch), DIGIPARA::CH::WaveDigitalProbe0, (cbDigProbe[0]->currentData()).toString().toStdString()); + digi[iDigi]->WriteValue(DIGIPARA::CH::WaveDigitalProbe0, (cbDigProbe[0]->currentData()).toString().toStdString(), ch); digiMTX.unlock(); }); connect(cbDigProbe[1], &QComboBox::currentIndexChanged, this, [=](){ @@ -203,7 +203,7 @@ Scope::Scope(Digitizer2Gen **digi, unsigned int nDigi, ReadDataThread ** readDat int iDigi = cbScopeDigi->currentIndex(); int ch = cbScopeCh->currentIndex(); digiMTX.lock(); - digi[iDigi]->WriteChValue(std::to_string(ch), DIGIPARA::CH::WaveDigitalProbe1, (cbDigProbe[1]->currentData()).toString().toStdString()); + digi[iDigi]->WriteValue(DIGIPARA::CH::WaveDigitalProbe1, (cbDigProbe[1]->currentData()).toString().toStdString(), ch); digiMTX.unlock(); }); connect(cbDigProbe[2], &QComboBox::currentIndexChanged, this, [=](){ @@ -211,7 +211,7 @@ Scope::Scope(Digitizer2Gen **digi, unsigned int nDigi, ReadDataThread ** readDat int iDigi = cbScopeDigi->currentIndex(); int ch = cbScopeCh->currentIndex(); digiMTX.lock(); - digi[iDigi]->WriteChValue(std::to_string(ch), DIGIPARA::CH::WaveDigitalProbe2, (cbDigProbe[2]->currentData()).toString().toStdString()); + digi[iDigi]->WriteValue(DIGIPARA::CH::WaveDigitalProbe2, (cbDigProbe[2]->currentData()).toString().toStdString(), ch); digiMTX.unlock(); }); connect(cbDigProbe[3], &QComboBox::currentIndexChanged, this, [=](){ @@ -219,7 +219,7 @@ Scope::Scope(Digitizer2Gen **digi, unsigned int nDigi, ReadDataThread ** readDat int iDigi = cbScopeDigi->currentIndex(); int ch = cbScopeCh->currentIndex(); digiMTX.lock(); - digi[iDigi]->WriteChValue(std::to_string(ch), DIGIPARA::CH::WaveDigitalProbe3, (cbDigProbe[3]->currentData()).toString().toStdString()); + digi[iDigi]->WriteValue(DIGIPARA::CH::WaveDigitalProbe3, (cbDigProbe[3]->currentData()).toString().toStdString(), ch); digiMTX.unlock(); }); @@ -432,8 +432,8 @@ void Scope::StartScope(){ ReadScopeSettings(iDigi, ch); - digi[iDigi]->WriteChValue("0..63", DIGIPARA::CH::ChannelEnable, "false"); - digi[iDigi]->WriteChValue(std::to_string(ch), DIGIPARA::CH::ChannelEnable, "true"); + digi[iDigi]->WriteValue(DIGIPARA::CH::ChannelEnable, "false", -1); + digi[iDigi]->WriteValue(DIGIPARA::CH::ChannelEnable, "true", ch); digi[iDigi]->SetPHADataFormat(0); digi[iDigi]->StartACQ(); @@ -461,7 +461,7 @@ void Scope::StopScope(){ if( digi[i]->IsDummy() ) continue; digiMTX.lock(); digi[i]->StopACQ(); - digi[i]->WriteChValue("0..63", DIGIPARA::CH::ChannelEnable, "true"); + digi[i]->WriteValue(DIGIPARA::CH::ChannelEnable, "true", -1); digiMTX.unlock(); readDataThread[i]->quit(); @@ -488,8 +488,8 @@ void Scope::UpdateScope(){ for( int j = 0; j < 6; j++ ) dataTrace[j]->removePoints(0, dataLength); digiMTX.lock(); - std::string time = digi[iDigi]->ReadChValue(std::to_string(ch), DIGIPARA::CH::ChannelRealtime); // for refreashing SelfTrgRate and SavedCount - std::string haha = digi[iDigi]->ReadChValue(std::to_string(ch), DIGIPARA::CH::SelfTrgRate); + std::string time = digi[iDigi]->ReadValue(DIGIPARA::CH::ChannelRealtime, ch); // for refreashing SelfTrgRate and SavedCount + std::string haha = digi[iDigi]->ReadValue(DIGIPARA::CH::SelfTrgRate, ch); leTriggerRate->setText(QString::fromStdString(haha)); if( atoi(haha.c_str()) == 0 ) { digiMTX.unlock(); @@ -569,13 +569,13 @@ void Scope::ScopeControlOnOff(bool on){ cbLowFreqFilter->setEnabled(on); } -void Scope::ScopeReadSpinBoxValue(int iDigi, int ch, QSpinBox *sb, std::string digPara){ - std::string ans = digi[iDigi]->ReadChValue(std::to_string(ch), digPara); +void Scope::ScopeReadSpinBoxValue(int iDigi, int ch, QSpinBox *sb, const Reg digPara){ + std::string ans = digi[iDigi]->ReadValue(digPara, ch); sb->setValue(atoi(ans.c_str())); } -void Scope::ScopeReadComboBoxValue(int iDigi, int ch, QComboBox *cb, std::string digPara){ - std::string ans = digi[iDigi]->ReadChValue(std::to_string(ch), digPara); +void Scope::ScopeReadComboBoxValue(int iDigi, int ch, QComboBox *cb, const Reg digPara){ + std::string ans = digi[iDigi]->ReadValue(digPara, ch); int index = cb->findData(QString::fromStdString(ans)); if( index >= 0 && index < cb->count()) { cb->setCurrentIndex(index); @@ -584,7 +584,7 @@ void Scope::ScopeReadComboBoxValue(int iDigi, int ch, QComboBox *cb, std::string } } -void Scope::ScopeMakeSpinBox(QSpinBox *sb, QString str, QGridLayout *layout, int row, int col, int min, int max, int step, std::string digPara){ +void Scope::ScopeMakeSpinBox(QSpinBox *sb, QString str, QGridLayout *layout, int row, int col, int min, int max, int step, const Reg digPara){ QLabel * lb = new QLabel(str, this); lb->setAlignment(Qt::AlignRight | Qt::AlignCenter); layout->addWidget(lb, row, col); @@ -597,15 +597,13 @@ void Scope::ScopeMakeSpinBox(QSpinBox *sb, QString str, QGridLayout *layout, int int iDigi = cbScopeDigi->currentIndex(); if( step > 1 ) sb->setValue(step*((sb->value() + step - 1)/step)); digiMTX.lock(); - //TODO change to use Reg - digi[iDigi]->WriteChValue(std::to_string(cbScopeCh->currentIndex()), digPara, std::to_string(sb->value())); - digi[iDigi]->ReadChValue(std::to_string(cbScopeCh->currentIndex()), digPara); + digi[iDigi]->WriteValue(digPara, std::to_string(sb->value()), cbScopeCh->currentIndex() ); digiMTX.unlock(); }); //TODO digiSettingPanel update setting } -void Scope::ScopeMakeComoBox(QComboBox *cb, QString str, QGridLayout *layout, int row, int col, std::string digPara){ +void Scope::ScopeMakeComoBox(QComboBox *cb, QString str, QGridLayout *layout, int row, int col, const Reg digPara){ QLabel * lb = new QLabel(str, this); lb->setAlignment(Qt::AlignRight | Qt::AlignCenter); layout->addWidget(lb, row, col); @@ -614,9 +612,7 @@ void Scope::ScopeMakeComoBox(QComboBox *cb, QString str, QGridLayout *layout, in if( !allowChange ) return; int iDigi = cbScopeDigi->currentIndex(); digiMTX.lock(); - //TODO change to use Reg - digi[iDigi]->WriteChValue(std::to_string(cbScopeCh->currentIndex()), digPara, cb->currentData().toString().toStdString()); - digi[iDigi]->ReadChValue(std::to_string(cbScopeCh->currentIndex()), digPara); + digi[iDigi]->WriteValue(digPara, cb->currentData().toString().toStdString(), cbScopeCh->currentIndex()); digiMTX.unlock(); }); //TODO digiSettingPanel update setting diff --git a/scope.h b/scope.h index 16e3bc5..98c8919 100644 --- a/scope.h +++ b/scope.h @@ -113,10 +113,10 @@ private slots: void StopScope(); void UpdateScope(); void ScopeControlOnOff(bool on); - void ScopeReadSpinBoxValue(int iDigi, int ch, QSpinBox *sb, std::string digPara); - void ScopeReadComboBoxValue(int iDigi, int ch, QComboBox *cb, std::string digPara); - void ScopeMakeSpinBox(QSpinBox * sb, QString str, QGridLayout* layout, int row, int col, int min, int max, int step, std::string digPara); - void ScopeMakeComoBox(QComboBox * cb, QString str, QGridLayout* layout, int row, int col, std::string digPara); + void ScopeReadSpinBoxValue(int iDigi, int ch, QSpinBox *sb, const Reg digPara); + void ScopeReadComboBoxValue(int iDigi, int ch, QComboBox *cb, const Reg digPara); + void ScopeMakeSpinBox(QSpinBox * sb, QString str, QGridLayout* layout, int row, int col, int min, int max, int step, const Reg digPara); + void ScopeMakeComoBox(QComboBox * cb, QString str, QGridLayout* layout, int row, int col, const Reg digPara); void ProbeChange(QComboBox * cb[], const int size); void closeEvent(QCloseEvent * event){