diff --git a/ClassDigitizer.cpp b/ClassDigitizer.cpp index db6d705..dea6cbf 100644 --- a/ClassDigitizer.cpp +++ b/ClassDigitizer.cpp @@ -38,7 +38,8 @@ void Digitizer::Initalization(){ isSettingFilledinMemeory = false; settingFileName = ""; - settingFileExist = false; + isSettingFileExist = false; + isSettingFileCoupled = false; settingFile = NULL; ret = -1; @@ -255,8 +256,8 @@ void Digitizer::SetRegChannelMask(uint32_t mask){ if( !isConnected ) return; regChannelMask = mask; ret |= CAEN_DGTZ_SetChannelEnableMask(handle, regChannelMask); - SaveSettingToFile(DPP::RegChannelEnableMask, mask); SetSettingToMemory(DPP::RegChannelEnableMask, mask); + SaveSettingToFile(DPP::RegChannelEnableMask, mask); ErrorMsg(__func__); } @@ -941,11 +942,11 @@ void Digitizer::SetSettingBinaryPath(std::string fileName){ SaveAllSettingsAsBin(fileName); this->settingFileName = fileName; - settingFileExist = true; + isSettingFileExist = true; }else{ this->settingFileName = fileName; - settingFileExist = true; + isSettingFileExist = true; fclose(settingFile); printf("setting file already exist. do nothing. Should program the digitizer\n"); } @@ -958,11 +959,11 @@ int Digitizer::LoadSettingBinaryToMemory(std::string fileName){ if( settingFile == NULL ) { printf(" %s does not exist or cannot load.\n", fileName.c_str()); - settingFileExist = false; + isSettingFileExist = false; return -1; }else{ - settingFileExist = true; + isSettingFileExist = true; settingFileName = fileName; fclose (settingFile); @@ -997,7 +998,7 @@ int Digitizer::LoadSettingBinaryToMemory(std::string fileName){ } unsigned int Digitizer::ReadSettingFromFile(Reg registerAddress, unsigned short ch){ - if ( !settingFileExist ) return -1; + if ( !isSettingFileExist ) return -1; unsigned short index = registerAddress.Index(ch); @@ -1018,7 +1019,8 @@ unsigned int Digitizer::ReadSettingFromFile(Reg registerAddress, unsigned short void Digitizer::SaveSettingToFile(Reg registerAddress, unsigned int value, unsigned short ch){ - if ( !settingFileExist ) return ; + if ( !isSettingFileExist ) return ; + if ( !isSettingFileCoupled ) return; unsigned short index = registerAddress.Index(ch); setting[index] = value; @@ -1048,7 +1050,7 @@ void Digitizer::SaveAllSettingsAsBin(std::string fileName){ fclose (binFile); settingFileName = fileName; - settingFileExist = true; + isSettingFileExist = true; } diff --git a/ClassDigitizer.h b/ClassDigitizer.h index b8bb43b..a16fbb1 100644 --- a/ClassDigitizer.h +++ b/ClassDigitizer.h @@ -53,7 +53,8 @@ class Digitizer{ //^-------- setting std::string settingFileName; /// FILE * settingFile; /// - bool settingFileExist; /// + bool isSettingFileExist; /// + bool isSettingFileCoupled; bool isSettingFilledinMemeory; /// false for disabled ReadAllSettingFromBoard() unsigned int setting[SETTINGSIZE]; /// Setting, 4bytes x 2048 = 8192 bytes @@ -147,8 +148,10 @@ class Digitizer{ /// simply read settings from memory void SetSettingToMemory (Reg registerAddress, unsigned int value, unsigned short ch = 0); unsigned int GetSettingFromMemory (Reg registerAddress, unsigned short ch = 0); - void PrintSettingFromMemory (); - unsigned int * GetSettings() {return setting;}; + unsigned int * GetSettings() {return setting;} + void PrintSettingFromMemory(); + void SetSettingFileCoupled(bool onOff) {isSettingFileCoupled = onOff;} + bool IsSettingFileCoupled() const {return isSettingFileCoupled;} /// memory <--> file void SaveAllSettingsAsText (std::string fileName); diff --git a/DigiSettingsPanel.cpp b/DigiSettingsPanel.cpp index 08e5fa3..7495ae2 100644 --- a/DigiSettingsPanel.cpp +++ b/DigiSettingsPanel.cpp @@ -216,9 +216,17 @@ DigiSettingsPanel::DigiSettingsPanel(Digitizer ** digi, unsigned int nDigi, QStr buttonLayout->addWidget(bnSaveSettings, rowID, 2); connect(bnSaveSettings, &QPushButton::clicked, this, [=](){ SaveSetting(0);}); - bnSaveSettingsToText = new QPushButton("Save Settings (txt)", this); - buttonLayout->addWidget(bnSaveSettingsToText, rowID, 3); - connect(bnSaveSettingsToText, &QPushButton::clicked, this, [=](){ SaveSetting(1);}); + // bnSaveSettingsToText = new QPushButton("Save Settings (txt)", this); + // buttonLayout->addWidget(bnSaveSettingsToText, rowID, 3); + // connect(bnSaveSettingsToText, &QPushButton::clicked, this, [=](){ SaveSetting(1);}); + + //checkBox, to coupled or decouple the setting file. + chkCoupledSettingFile = new QCheckBox("Update Bin", this); + buttonLayout->addWidget(chkCoupledSettingFile, rowID, 3); + chkCoupledSettingFile->setCheckState(Qt::CheckState::Unchecked); + connect(chkCoupledSettingFile, &QCheckBox::stateChanged, this, [=](){ + digi[ID]->SetSettingFileCoupled(chkCoupledSettingFile->isChecked()); + }); } {//^======================= Board Settings @@ -4020,7 +4028,7 @@ void DigiSettingsPanel::SaveSetting(int opt){ if( opt == 0 ){ if( ext == "") filePath += ".bin"; digi[ID]->SaveAllSettingsAsBin(filePath.toStdString().c_str()); - leSaveFilePath[ID]->setText(filePath + " | dynamic update"); + leSaveFilePath[ID]->setText(filePath); } if( opt == 1 ){ if( ext == "") filePath += ".txt"; diff --git a/DigiSettingsPanel.h b/DigiSettingsPanel.h index 91439e3..07a0e65 100644 --- a/DigiSettingsPanel.h +++ b/DigiSettingsPanel.h @@ -110,7 +110,8 @@ private: QPushButton * bnSendSoftwareClockSyncSignal; QPushButton * bnSaveSettings; QPushButton * bnLoadSettings; - QPushButton * bnSaveSettingsToText; + //QPushButton * bnSaveSettingsToText; + QCheckBox * chkCoupledSettingFile; /// ============================= Board Configure QGridLayout * bdCfgLayout[MaxNDigitizer];