simplifed DigitizerClass read write using const Reg
This commit is contained in:
parent
58969da70e
commit
ec7d8ff740
|
@ -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);
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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));
|
||||
|
|
46
scope.cpp
46
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
|
||||
|
|
8
scope.h
8
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){
|
||||
|
|
Loading…
Reference in New Issue
Block a user