added save and translate setting File
This commit is contained in:
parent
8c8de7faa5
commit
4d3ced9b48
46
ClassData.h
46
ClassData.h
|
@ -47,7 +47,7 @@ class Data{
|
||||||
|
|
||||||
void AllocateMemory();
|
void AllocateMemory();
|
||||||
|
|
||||||
void SetSaveWaveformToMemory(bool OnOff) { this->SaveWaveformToMemory = OnOff; }
|
void SetSaveWaveToMemory(bool OnOff) { this->SaveWaveToMemory = OnOff; }
|
||||||
|
|
||||||
void ClearData();
|
void ClearData();
|
||||||
void ClearTriggerRate();
|
void ClearTriggerRate();
|
||||||
|
@ -55,15 +55,15 @@ class Data{
|
||||||
void SaveBuffer(const char * fileName);
|
void SaveBuffer(const char * fileName);
|
||||||
|
|
||||||
void PrintBuffer(); //Incorrect
|
void PrintBuffer(); //Incorrect
|
||||||
void DecodeBuffer(int verbose = 0);
|
void DecodeBuffer(bool fastDecode, int verbose = 0);
|
||||||
void DecodeBuffer(char * buffer, int verbose = 0); // for outside data
|
void DecodeBuffer(char * buffer, bool fastDecode, int verbose = 0); // for outside data
|
||||||
|
|
||||||
void PrintStat();
|
void PrintStat();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
unsigned int nw;
|
unsigned int nw;
|
||||||
bool SaveWaveformToMemory;
|
bool SaveWaveToMemory;
|
||||||
|
|
||||||
///for temperary
|
///for temperary
|
||||||
std::vector<unsigned short> tempWaveform1;
|
std::vector<unsigned short> tempWaveform1;
|
||||||
|
@ -73,8 +73,8 @@ class Data{
|
||||||
|
|
||||||
unsigned int ReadBuffer(unsigned int nWord, int verbose = 0);
|
unsigned int ReadBuffer(unsigned int nWord, int verbose = 0);
|
||||||
|
|
||||||
int DecodePHADualChannelBlock(unsigned int ChannelMask, int verbose);
|
int DecodePHADualChannelBlock(unsigned int ChannelMask, bool fastDecode, int verbose);
|
||||||
int DecodePSDDualChannelBlock(unsigned int ChannelMask, int verbose);
|
int DecodePSDDualChannelBlock(unsigned int ChannelMask, bool fastDecode, int verbose);
|
||||||
|
|
||||||
unsigned short saveFileIndex;
|
unsigned short saveFileIndex;
|
||||||
|
|
||||||
|
@ -89,7 +89,7 @@ inline Data::Data(){
|
||||||
for ( int i = 0; i < MaxNChannels; i++) TotNumEvents[i] = 0;
|
for ( int i = 0; i < MaxNChannels; i++) TotNumEvents[i] = 0;
|
||||||
ClearData();
|
ClearData();
|
||||||
ClearTriggerRate();
|
ClearTriggerRate();
|
||||||
SaveWaveformToMemory = true;
|
SaveWaveToMemory = true;
|
||||||
nw = 0;
|
nw = 0;
|
||||||
saveFileIndex = 0;
|
saveFileIndex = 0;
|
||||||
}
|
}
|
||||||
|
@ -102,7 +102,7 @@ inline void Data::AllocateMemory(){
|
||||||
|
|
||||||
delete buffer;
|
delete buffer;
|
||||||
//TODO calculate Suitable buffer size
|
//TODO calculate Suitable buffer size
|
||||||
BufferSize = 1* 1024* 1024; /// 10M byte
|
BufferSize = 10* 1024* 1024; /// 10M byte
|
||||||
buffer = (char *) malloc( BufferSize);
|
buffer = (char *) malloc( BufferSize);
|
||||||
printf("Allocated %d (%lu) byte for buffer \n", BufferSize, sizeof(buffer));
|
printf("Allocated %d (%lu) byte for buffer \n", BufferSize, sizeof(buffer));
|
||||||
///for( int i = 0 ; i < MaxNChannels ; i++ ) Events[i] = (CAEN_DGTZ_DPP_PHA_Event_t *) malloc( BufferSize);
|
///for( int i = 0 ; i < MaxNChannels ; i++ ) Events[i] = (CAEN_DGTZ_DPP_PHA_Event_t *) malloc( BufferSize);
|
||||||
|
@ -151,7 +151,7 @@ inline unsigned int Data::ReadBuffer(unsigned int nWord, int verbose){
|
||||||
inline void Data::SaveBuffer(const char * fileName){
|
inline void Data::SaveBuffer(const char * fileName){
|
||||||
|
|
||||||
char saveFileName[100];
|
char saveFileName[100];
|
||||||
sprintf(saveFileName, "%s_%03u.bin", fileName , saveFileIndex);
|
sprintf(saveFileName, "%s_%03u.fsu", fileName , saveFileIndex);
|
||||||
|
|
||||||
FILE * haha = fopen(saveFileName, "a+");
|
FILE * haha = fopen(saveFileName, "a+");
|
||||||
fseek(haha, 0L, SEEK_END);
|
fseek(haha, 0L, SEEK_END);
|
||||||
|
@ -161,7 +161,7 @@ inline void Data::SaveBuffer(const char * fileName){
|
||||||
if( inFileSize > (unsigned int)MaxSaveFileSize ) { /// 2 GB
|
if( inFileSize > (unsigned int)MaxSaveFileSize ) { /// 2 GB
|
||||||
fclose(haha);
|
fclose(haha);
|
||||||
saveFileIndex ++;
|
saveFileIndex ++;
|
||||||
sprintf(saveFileName, "%s_%03u.bin", fileName , saveFileIndex);
|
sprintf(saveFileName, "%s_%03u.fsu", fileName , saveFileIndex);
|
||||||
FILE * haha = fopen(saveFileName, "a+");
|
FILE * haha = fopen(saveFileName, "a+");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -191,12 +191,12 @@ inline void Data::PrintBuffer(){
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void Data::DecodeBuffer(char * buffer, int verbose){
|
inline void Data::DecodeBuffer(char * buffer, bool fastDecode, int verbose){
|
||||||
this->buffer = buffer;
|
this->buffer = buffer;
|
||||||
DecodeBuffer(verbose);
|
DecodeBuffer(fastDecode, verbose);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void Data::DecodeBuffer(int verbose){
|
inline void Data::DecodeBuffer(bool fastDecode, int verbose){
|
||||||
/// verbose : 0 = off, 1 = only energy + timestamp, 2 = show header, 3 = wave
|
/// verbose : 0 = off, 1 = only energy + timestamp, 2 = show header, 3 = wave
|
||||||
|
|
||||||
if( buffer == NULL ) {
|
if( buffer == NULL ) {
|
||||||
|
@ -232,10 +232,10 @@ inline void Data::DecodeBuffer(int verbose){
|
||||||
if( verbose >= 2 ) printf("---------------------- Dual Channel Block : %d, nw : %d\n", chMask *2, nw);
|
if( verbose >= 2 ) printf("---------------------- Dual Channel Block : %d, nw : %d\n", chMask *2, nw);
|
||||||
|
|
||||||
if( DPPType == V1730_DPP_PHA_CODE ) {
|
if( DPPType == V1730_DPP_PHA_CODE ) {
|
||||||
if ( DecodePHADualChannelBlock(chMask, verbose) < 0 ) break;
|
if ( DecodePHADualChannelBlock(chMask, fastDecode, verbose) < 0 ) break;
|
||||||
}
|
}
|
||||||
if( DPPType == V1730_DPP_PSD_CODE ) {
|
if( DPPType == V1730_DPP_PSD_CODE ) {
|
||||||
if ( DecodePHADualChannelBlock(chMask, verbose) < 0 ) break;
|
if ( DecodePHADualChannelBlock(chMask, fastDecode, verbose) < 0 ) break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
|
@ -255,7 +255,7 @@ inline void Data::DecodeBuffer(int verbose){
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
inline int Data::DecodePHADualChannelBlock(unsigned int ChannelMask, int verbose){
|
inline int Data::DecodePHADualChannelBlock(unsigned int ChannelMask, bool fastDecode, int verbose){
|
||||||
|
|
||||||
nw = nw + 1;
|
nw = nw + 1;
|
||||||
unsigned int word = ReadBuffer(nw, verbose);
|
unsigned int word = ReadBuffer(nw, verbose);
|
||||||
|
@ -347,7 +347,7 @@ inline int Data::DecodePHADualChannelBlock(unsigned int ChannelMask, int verbose
|
||||||
|
|
||||||
//TODO Skip
|
//TODO Skip
|
||||||
///===== read waveform
|
///===== read waveform
|
||||||
if( SaveWaveformToMemory ) {
|
if( SaveWaveToMemory ) {
|
||||||
tempWaveform1.clear();
|
tempWaveform1.clear();
|
||||||
tempWaveform2.clear();
|
tempWaveform2.clear();
|
||||||
tempDigiWaveform1.clear();
|
tempDigiWaveform1.clear();
|
||||||
|
@ -364,7 +364,7 @@ inline int Data::DecodePHADualChannelBlock(unsigned int ChannelMask, int verbose
|
||||||
bool dp0 = (( word >> 14 ) & 0x1 );
|
bool dp0 = (( word >> 14 ) & 0x1 );
|
||||||
unsigned short wave0 = ( word & 0x3FFF);
|
unsigned short wave0 = ( word & 0x3FFF);
|
||||||
|
|
||||||
if( SaveWaveformToMemory){
|
if( SaveWaveToMemory){
|
||||||
if( hasDualTrace ){
|
if( hasDualTrace ){
|
||||||
tempWaveform1.push_back(wave0);
|
tempWaveform1.push_back(wave0);
|
||||||
tempWaveform2.push_back(wave1);
|
tempWaveform2.push_back(wave1);
|
||||||
|
@ -385,7 +385,7 @@ inline int Data::DecodePHADualChannelBlock(unsigned int ChannelMask, int verbose
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if( SaveWaveformToMemory ) {
|
if( SaveWaveToMemory ) {
|
||||||
if( hasDualTrace ){
|
if( hasDualTrace ){
|
||||||
Waveform1[channel][NumEvents[channel]] = tempWaveform1;
|
Waveform1[channel][NumEvents[channel]] = tempWaveform1;
|
||||||
Waveform2[channel][NumEvents[channel]] = tempWaveform2;
|
Waveform2[channel][NumEvents[channel]] = tempWaveform2;
|
||||||
|
@ -447,7 +447,7 @@ inline int Data::DecodePHADualChannelBlock(unsigned int ChannelMask, int verbose
|
||||||
return nw;
|
return nw;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline int Data::DecodePSDDualChannelBlock(unsigned int ChannelMask, int verbose){
|
inline int Data::DecodePSDDualChannelBlock(unsigned int ChannelMask, bool fastDecode, int verbose){
|
||||||
|
|
||||||
nw = nw + 1;
|
nw = nw + 1;
|
||||||
unsigned int word = ReadBuffer(nw, verbose);
|
unsigned int word = ReadBuffer(nw, verbose);
|
||||||
|
@ -537,7 +537,7 @@ inline int Data::DecodePSDDualChannelBlock(unsigned int ChannelMask, int verbose
|
||||||
if( verbose >= 2 ) printf("ch : %d, timeStamp %u \n", channel, timeStamp0);
|
if( verbose >= 2 ) printf("ch : %d, timeStamp %u \n", channel, timeStamp0);
|
||||||
|
|
||||||
///===== read waveform
|
///===== read waveform
|
||||||
if( SaveWaveformToMemory ) {
|
if( SaveWaveToMemory ) {
|
||||||
tempWaveform1.clear();
|
tempWaveform1.clear();
|
||||||
tempWaveform2.clear();
|
tempWaveform2.clear();
|
||||||
tempDigiWaveform1.clear();
|
tempDigiWaveform1.clear();
|
||||||
|
@ -554,7 +554,7 @@ inline int Data::DecodePSDDualChannelBlock(unsigned int ChannelMask, int verbose
|
||||||
bool dp1a = (( word >> 14 ) & 0x1 );
|
bool dp1a = (( word >> 14 ) & 0x1 );
|
||||||
unsigned short wavea = ( word & 0x3FFF);
|
unsigned short wavea = ( word & 0x3FFF);
|
||||||
|
|
||||||
if( SaveWaveformToMemory){
|
if( SaveWaveToMemory){
|
||||||
if( hasDualTrace ){
|
if( hasDualTrace ){
|
||||||
tempWaveform1.push_back(wavea);
|
tempWaveform1.push_back(wavea);
|
||||||
tempWaveform2.push_back(waveb);
|
tempWaveform2.push_back(waveb);
|
||||||
|
@ -574,7 +574,7 @@ inline int Data::DecodePSDDualChannelBlock(unsigned int ChannelMask, int verbose
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if( SaveWaveformToMemory ) {
|
if( SaveWaveToMemory ) {
|
||||||
if( hasDualTrace ){
|
if( hasDualTrace ){
|
||||||
Waveform1[channel][NumEvents[channel]] = tempWaveform1;
|
Waveform1[channel][NumEvents[channel]] = tempWaveform1;
|
||||||
Waveform2[channel][NumEvents[channel]] = tempWaveform2;
|
Waveform2[channel][NumEvents[channel]] = tempWaveform2;
|
||||||
|
|
|
@ -74,6 +74,8 @@ int Digitizer::OpenDigitizer(int boardID, int portID, bool program, bool verbose
|
||||||
this->boardID = boardID;
|
this->boardID = boardID;
|
||||||
this->portID = portID;
|
this->portID = portID;
|
||||||
|
|
||||||
|
if( boardID < 0 || portID < 0 ) return 0; /// for using the Digitizer Class without open digitizer
|
||||||
|
|
||||||
/***************************************************/
|
/***************************************************/
|
||||||
/** Open the digitizer and read board information */
|
/** Open the digitizer and read board information */
|
||||||
/***************************************************/
|
/***************************************************/
|
||||||
|
@ -708,7 +710,11 @@ unsigned short Digitizer::CalSettingIndex(uint32_t registerAddress, int ch){
|
||||||
index = newAddress / 4;
|
index = newAddress / 4;
|
||||||
}else{
|
}else{
|
||||||
newAddress = registerAddress;
|
newAddress = registerAddress;
|
||||||
index = (newAddress & 0x0FFF) / 4;
|
if(registerAddress < 0xF000) {
|
||||||
|
index = (newAddress & 0x0FFF) / 4;
|
||||||
|
}else{
|
||||||
|
index = ((newAddress & 0x0FFF) + 0x0200 ) / 4;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
//printf("---------address : 0x%04X = %5d = index : %6.1f (%d)\n", newAddress, newAddress, (newAddress & 0x0FFF) / 4., index);
|
//printf("---------address : 0x%04X = %5d = index : %6.1f (%d)\n", newAddress, newAddress, (newAddress & 0x0FFF) / 4., index);
|
||||||
return index;
|
return index;
|
||||||
|
@ -741,18 +747,7 @@ void Digitizer::SetSettingFromMemory(uint32_t registerAddress, int ch){
|
||||||
void Digitizer::FillAllSettings(){
|
void Digitizer::FillAllSettings(){
|
||||||
|
|
||||||
/// for 1 digitizer, 16 channels, needs 0x10XX to 0x1FXX
|
/// for 1 digitizer, 16 channels, needs 0x10XX to 0x1FXX
|
||||||
/// Board setting is 0x8000 --> 0x0000
|
|
||||||
/// Saved date YYYYMMDDHH --> 0x0004
|
|
||||||
/// Global Trigger Mask 0x810C --> 0x010C
|
|
||||||
/// Channel mask 0x8120 --> 0x0120
|
|
||||||
/// ROM Board version 0xF030 --> 0x0030
|
|
||||||
/// Board Form factor 0xF034 --> 0x0034
|
|
||||||
/// Board ID Byte 1 0xF038 --> 0x0038
|
|
||||||
/// Board ID Byte 0 0xF03C --> 0x003C
|
|
||||||
/// Board Serial Num Byte1 0xF080 --> 0x0080
|
|
||||||
/// Board Serial Num Byte0 0xF084 --> 0x0084 /// serial number = byte0 << 8 + byte1
|
|
||||||
/// ROC fireware version is 0x8124 --> 0x0124
|
|
||||||
/// Board Info is 0x8140 --> 0x0140
|
|
||||||
/// -------------------------------------
|
/// -------------------------------------
|
||||||
/// for 1 channel is 0x2000 = 8192 byte should be enough for all setting for 1 board
|
/// for 1 channel is 0x2000 = 8192 byte should be enough for all setting for 1 board
|
||||||
|
|
||||||
|
@ -844,6 +839,32 @@ void Digitizer::FillAllSettings(){
|
||||||
FillSetting(Register::DPP::MaxAggregatePerBlockTransfer); /// 0xEF1C; /// R/W
|
FillSetting(Register::DPP::MaxAggregatePerBlockTransfer); /// 0xEF1C; /// R/W
|
||||||
FillSetting(Register::DPP::Scratch ); /// 0xEF20; /// R/W
|
FillSetting(Register::DPP::Scratch ); /// 0xEF20; /// R/W
|
||||||
|
|
||||||
|
FillSetting(Register::DPP::ROMChecksum_R ); /// 0xF000; /// R
|
||||||
|
FillSetting(Register::DPP::ROMChecksumByte2_R ); /// 0xF004; /// R
|
||||||
|
FillSetting(Register::DPP::ROMChecksumByte1_R ); /// 0xF008; /// R
|
||||||
|
FillSetting(Register::DPP::ROMChecksumByte0_R ); /// 0xF00C; /// R
|
||||||
|
FillSetting(Register::DPP::ROMConstantByte2_R ); /// 0xF010; /// R
|
||||||
|
FillSetting(Register::DPP::ROMConstantByte1_R ); /// 0xF014; /// R
|
||||||
|
FillSetting(Register::DPP::ROMConstantByte0_R ); /// 0xF018; /// R
|
||||||
|
FillSetting(Register::DPP::ROM_C_Code_R ); /// 0xF01C; /// R
|
||||||
|
FillSetting(Register::DPP::ROM_R_Code_R ); /// 0xF020; /// R
|
||||||
|
FillSetting(Register::DPP::ROM_IEEE_OUI_Byte2_R ); /// 0xF024; /// R
|
||||||
|
FillSetting(Register::DPP::ROM_IEEE_OUI_Byte1_R ); /// 0xF028; /// R
|
||||||
|
FillSetting(Register::DPP::ROM_IEEE_OUI_Byte0_R ); /// 0xF02C; /// R
|
||||||
|
FillSetting(Register::DPP::ROM_BoardVersion_R ); /// 0xF030; /// R
|
||||||
|
FillSetting(Register::DPP::ROM_BoardFromFactor_R ); /// 0xF034; /// R
|
||||||
|
FillSetting(Register::DPP::ROM_BoardIDByte1_R ); /// 0xF038; /// R
|
||||||
|
FillSetting(Register::DPP::ROM_BoardIDByte0_R ); /// 0xF03C; /// R
|
||||||
|
FillSetting(Register::DPP::ROM_PCB_rev_Byte3_R ); /// 0xF040; /// R
|
||||||
|
FillSetting(Register::DPP::ROM_PCB_rev_Byte2_R ); /// 0xF044; /// R
|
||||||
|
FillSetting(Register::DPP::ROM_PCB_rev_Byte1_R ); /// 0xF048; /// R
|
||||||
|
FillSetting(Register::DPP::ROM_PCB_rev_Byte0_R ); /// 0xF04C; /// R
|
||||||
|
FillSetting(Register::DPP::ROM_FlashType_R ); /// 0xF050; /// R
|
||||||
|
FillSetting(Register::DPP::ROM_BoardSerialNumByte1_R ); /// 0xF080; /// R
|
||||||
|
FillSetting(Register::DPP::ROM_BoardSerialNumByte0_R ); /// 0xF084; /// R
|
||||||
|
FillSetting(Register::DPP::ROM_VCXO_Type_R ); /// 0xF088; /// R
|
||||||
|
|
||||||
|
|
||||||
isSettingFilledinMemeory = true;
|
isSettingFilledinMemeory = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1006,6 +1027,144 @@ void Digitizer::SaveSettingToFile(uint32_t registerAddress, unsigned int value,
|
||||||
fclose (settingFile);
|
fclose (settingFile);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Digitizer::SaveSettingAsText(string fileName){
|
||||||
|
|
||||||
|
FILE * txtFile = fopen(fileName.c_str(), "w+");
|
||||||
|
|
||||||
|
if( txtFile == NULL ) {
|
||||||
|
printf("Cannot open %s.\n", fileName.c_str());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t address = 0; /// this is the actual address
|
||||||
|
uint32_t registerAddress = 0; /// this is the register address from RegisterAddress.h
|
||||||
|
string name = "";
|
||||||
|
|
||||||
|
for( int i = 0; i < SETTINGSIZE ; i++){
|
||||||
|
|
||||||
|
name = "";
|
||||||
|
registerAddress = i * 4;
|
||||||
|
|
||||||
|
if( i < 0x0200 /4 ) {address = i * 4 + 0x8000; registerAddress = registerAddress; }
|
||||||
|
if( 0x0200 / 4 <= i && i < 0x0F00 /4 ) {address = i * 4 + 0xEE00; registerAddress = registerAddress; }/// EE00 == F000 - 0200
|
||||||
|
if( 0xF000 / 4 <= i && i < 0x1000 /4 ) {address = i * 4 + 0xE000; registerAddress = registerAddress; }
|
||||||
|
if( 0x1000 / 4 <= i ) { registerAddress = registerAddress & 0xF0FF ; }
|
||||||
|
|
||||||
|
if( DPPType == V1730_DPP_PSD_CODE || DPPType == V1730_DPP_PHA_CODE) {
|
||||||
|
|
||||||
|
switch( registerAddress ){
|
||||||
|
case Register::DPP::RecordLength_G : name = "DPP::RecordLength_G "; break;
|
||||||
|
case Register::DPP::InputDynamicRange : name = "DPP::InputDynamicRange "; break;
|
||||||
|
case Register::DPP::NumberEventsPerAggregate_G : name = "DPP::NumberEventsPerAggregate_G "; break;
|
||||||
|
case Register::DPP::PreTrigger : name = "DPP::PreTrigger "; break;
|
||||||
|
case Register::DPP::TriggerThreshold : name = "DPP::TriggerThreshold "; break;
|
||||||
|
case Register::DPP::TriggerHoldOffWidth : name = "DPP::TriggerHoldOffWidth "; break;
|
||||||
|
case Register::DPP::DPPAlgorithmControl : name = "DPP::DPPAlgorithmControl "; break;
|
||||||
|
case Register::DPP::ChannelStatus_R : name = "DPP::ChannelStatus_R "; break;
|
||||||
|
case Register::DPP::AMCFirmwareRevision_R : name = "DPP::AMCFirmwareRevision_R "; break;
|
||||||
|
case Register::DPP::ChannelDCOffset : name = "DPP::ChannelDCOffset "; break;
|
||||||
|
case Register::DPP::ChannelADCTemperature_R : name = "DPP::ChannelADCTemperature_R "; break;
|
||||||
|
case Register::DPP::VetoWidth : name = "DPP::VetoWidth "; break;
|
||||||
|
|
||||||
|
case Register::DPP::BoardConfiguration : name = "DPP::BoardConfiguration "; break;
|
||||||
|
case Register::DPP::AggregateOrganization : name = "DPP::AggregateOrganization "; break;
|
||||||
|
case Register::DPP::AcquisitionControl : name = "DPP::AcquisitionControl "; break;
|
||||||
|
case Register::DPP::AcquisitionStatus_R : name = "DPP::AcquisitionStatus_R "; break;
|
||||||
|
case Register::DPP::GlobalTriggerMask : name = "DPP::GlobalTriggerMask "; break;
|
||||||
|
case Register::DPP::FrontPanelTRGOUTEnableMask : name = "DPP::FrontPanelTRGOUTEnableMask "; break;
|
||||||
|
case Register::DPP::LVDSIOData : name = "DPP::LVDSIOData "; break;
|
||||||
|
case Register::DPP::FrontPanelIOControl : name = "DPP::FrontPanelIOControl "; break;
|
||||||
|
case Register::DPP::ChannelEnableMask : name = "DPP::ChannelEnableMask "; break;
|
||||||
|
case Register::DPP::ROCFPGAFirmwareRevision_R : name = "DPP::ROCFPGAFirmwareRevision_R "; break;
|
||||||
|
case Register::DPP::EventStored_R : name = "DPP::EventStored_R "; break;
|
||||||
|
case Register::DPP::VoltageLevelModeConfig : name = "DPP::VoltageLevelModeConfig "; break;
|
||||||
|
case Register::DPP::BoardInfo_R : name = "DPP::BoardInfo_R "; break;
|
||||||
|
case Register::DPP::AnalogMonitorMode : name = "DPP::AnalogMonitorMode "; break;
|
||||||
|
case Register::DPP::EventSize_R : name = "DPP::EventSize_R "; break;
|
||||||
|
case Register::DPP::TimeBombDowncounter_R : name = "DPP::TimeBombDowncounter_R "; break;
|
||||||
|
case Register::DPP::FanSpeedControl : name = "DPP::FanSpeedControl "; break;
|
||||||
|
case Register::DPP::RunStartStopDelay : name = "DPP::RunStartStopDelay "; break;
|
||||||
|
case Register::DPP::BoardFailureStatus_R : name = "DPP::BoardFailureStatus_R "; break;
|
||||||
|
case Register::DPP::DisableExternalTrigger : name = "DPP::DisableExternalTrigger "; break;
|
||||||
|
case Register::DPP::TriggerValidationMask_G : name = "DPP::TriggerValidationMask_G "; break;
|
||||||
|
case Register::DPP::FrontPanelLVDSIONewFeatures : name = "DPP::FrontPanelLVDSIONewFeatures "; break;
|
||||||
|
case Register::DPP::BufferOccupancyGain : name = "DPP::BufferOccupancyGain "; break;
|
||||||
|
case Register::DPP::ExtendedVetoDelay : name = "DPP::ExtendedVetoDelay "; break;
|
||||||
|
case Register::DPP::ReadoutControl : name = "DPP::ReadoutControl "; break;
|
||||||
|
case Register::DPP::ReadoutStatus_R : name = "DPP::ReadoutStatus_R "; break;
|
||||||
|
case Register::DPP::BoardID : name = "DPP::BoardID "; break;
|
||||||
|
case Register::DPP::MCSTBaseAddressAndControl : name = "DPP::MCSTBaseAddressAndControl "; break;
|
||||||
|
case Register::DPP::RelocationAddress : name = "DPP::RelocationAddress "; break;
|
||||||
|
case Register::DPP::InterruptStatusID : name = "DPP::InterruptStatusID "; break;
|
||||||
|
case Register::DPP::InterruptEventNumber : name = "DPP::InterruptEventNumber "; break;
|
||||||
|
case Register::DPP::MaxAggregatePerBlockTransfer : name = "DPP::MaxAggregatePerBlockTransfer "; break;
|
||||||
|
case Register::DPP::Scratch : name = "DPP::Scratch "; break;
|
||||||
|
case Register::DPP::ROMChecksum_R : name = "DPP::ROMChecksum_R "; break;
|
||||||
|
case Register::DPP::ROMChecksumByte2_R : name = "DPP::ROMChecksumByte2_R "; break;
|
||||||
|
case Register::DPP::ROMChecksumByte1_R : name = "DPP::ROMChecksumByte1_R "; break;
|
||||||
|
case Register::DPP::ROMChecksumByte0_R : name = "DPP::ROMChecksumByte0_R "; break;
|
||||||
|
case Register::DPP::ROMConstantByte2_R : name = "DPP::ROMConstantByte2_R "; break;
|
||||||
|
case Register::DPP::ROMConstantByte1_R : name = "DPP::ROMConstantByte1_R "; break;
|
||||||
|
case Register::DPP::ROMConstantByte0_R : name = "DPP::ROMConstantByte0_R "; break;
|
||||||
|
case Register::DPP::ROM_C_Code_R : name = "DPP::ROM_C_Code_R "; break;
|
||||||
|
case Register::DPP::ROM_R_Code_R : name = "DPP::ROM_R_Code_R "; break;
|
||||||
|
case Register::DPP::ROM_IEEE_OUI_Byte2_R : name = "DPP::ROM_IEEE_OUI_Byte2_R "; break;
|
||||||
|
case Register::DPP::ROM_IEEE_OUI_Byte1_R : name = "DPP::ROM_IEEE_OUI_Byte1_R "; break;
|
||||||
|
case Register::DPP::ROM_IEEE_OUI_Byte0_R : name = "DPP::ROM_IEEE_OUI_Byte0_R "; break;
|
||||||
|
case Register::DPP::ROM_BoardVersion_R : name = "DPP::ROM_BoardVersion_R "; break;
|
||||||
|
case Register::DPP::ROM_BoardFromFactor_R : name = "DPP::ROM_BoardFromFactor_R "; break;
|
||||||
|
case Register::DPP::ROM_BoardIDByte1_R : name = "DPP::ROM_BoardIDByte1_R "; break;
|
||||||
|
case Register::DPP::ROM_BoardIDByte0_R : name = "DPP::ROM_BoardIDByte0_R "; break;
|
||||||
|
case Register::DPP::ROM_PCB_rev_Byte3_R : name = "DPP::ROM_PCB_rev_Byte3_R "; break;
|
||||||
|
case Register::DPP::ROM_PCB_rev_Byte2_R : name = "DPP::ROM_PCB_rev_Byte2_R "; break;
|
||||||
|
case Register::DPP::ROM_PCB_rev_Byte1_R : name = "DPP::ROM_PCB_rev_Byte1_R "; break;
|
||||||
|
case Register::DPP::ROM_PCB_rev_Byte0_R : name = "DPP::ROM_PCB_rev_Byte0_R "; break;
|
||||||
|
case Register::DPP::ROM_FlashType_R : name = "DPP::ROM_FlashType_R "; break;
|
||||||
|
case Register::DPP::ROM_BoardSerialNumByte1_R : name = "DPP::ROM_BoardSerialNumByte1_R "; break;
|
||||||
|
case Register::DPP::ROM_BoardSerialNumByte0_R : name = "DPP::ROM_BoardSerialNumByte0_R "; break;
|
||||||
|
case Register::DPP::ROM_VCXO_Type_R : name = "DPP::ROM_VCXO_Type_R "; break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if( DPPType == V1730_DPP_PSD_CODE ) {
|
||||||
|
switch (registerAddress) {
|
||||||
|
case Register::DPP::PSD::CFDSetting : name = "DPP::PSD::CFDSetting "; break;
|
||||||
|
case Register::DPP::PSD::ChargeZeroSuppressionThreshold : name = "DPP::PSD::ChargeZeroSuppressionThreshold "; break;
|
||||||
|
case Register::DPP::PSD::ShortGateWidth : name = "DPP::PSD::ShortGateWidth "; break;
|
||||||
|
case Register::DPP::PSD::LongGateWidth : name = "DPP::PSD::LongGateWidth "; break;
|
||||||
|
case Register::DPP::PSD::GateOffset : name = "DPP::PSD::GateOffset "; break;
|
||||||
|
case Register::DPP::PSD::TriggerThreshold : name = "DPP::PSD::TriggerThreshold "; break;
|
||||||
|
case Register::DPP::PSD::FixedBaseline : name = "DPP::PSD::FixedBaseline "; break;
|
||||||
|
case Register::DPP::PSD::TriggerLatency : name = "DPP::PSD::TriggerLatency "; break;
|
||||||
|
case Register::DPP::PSD::ShapedTriggerWidth : name = "DPP::PSD::ShapedTriggerWidth "; break;
|
||||||
|
case Register::DPP::PSD::TriggerHoldOffWidth : name = "DPP::PSD::TriggerHoldOffWidth "; break;
|
||||||
|
case Register::DPP::PSD::ThresholdForPSDCut : name = "DPP::PSD::ThresholdForPSDCut "; break;
|
||||||
|
case Register::DPP::PSD::PurGapThreshold : name = "DPP::PSD::PurGapThreshold "; break;
|
||||||
|
case Register::DPP::PSD::DPPAlgorithmControl2_G : name = "DPP::PSD::DPPAlgorithmControl2_G "; break;
|
||||||
|
case Register::DPP::PSD::EarlyBaselineFreeze : name = "DPP::PSD::EarlyBaselineFreeze "; break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if( DPPType == V1730_DPP_PHA_CODE ) {
|
||||||
|
switch (registerAddress) {
|
||||||
|
case Register::DPP::PHA::ChannelStopAcquisition : name = "DPP::PHA::ChannelStopAcquisition "; break;
|
||||||
|
case Register::DPP::PHA::RCCR2SmoothingFactor : name = "DPP::PHA::RCCR2SmoothingFactor "; break;
|
||||||
|
case Register::DPP::PHA::InputRiseTime : name = "DPP::PHA::InputRiseTime "; break;
|
||||||
|
case Register::DPP::PHA::TrapezoidRiseTime : name = "DPP::PHA::TrapezoidRiseTime "; break;
|
||||||
|
case Register::DPP::PHA::TrapezoidFlatTop : name = "DPP::PHA::TrapezoidFlatTop "; break;
|
||||||
|
case Register::DPP::PHA::PeakingTime : name = "DPP::PHA::PeakingTime "; break;
|
||||||
|
case Register::DPP::PHA::DecayTime : name = "DPP::PHA::DecayTime "; break;
|
||||||
|
case Register::DPP::PHA::TriggerThreshold : name = "DPP::PHA::TriggerThreshold "; break;
|
||||||
|
case Register::DPP::PHA::RiseTimeValidationWindow : name = "DPP::PHA::RiseTimeValidationWindow "; break;
|
||||||
|
case Register::DPP::PHA::TriggerHoldOffWidth : name = "DPP::PHA::TriggerHoldOffWidth "; break;
|
||||||
|
case Register::DPP::PHA::PeakHoldOff : name = "DPP::PHA::PeakHoldOff "; break;
|
||||||
|
case Register::DPP::PHA::ShapedTriggerWidth : name = "DPP::PHA::ShapedTriggerWidth "; break;
|
||||||
|
case Register::DPP::PHA::DPPAlgorithmControl2_G : name = "DPP::PHA::DPPAlgorithmControl2_G "; break;
|
||||||
|
case Register::DPP::PHA::FineGain : name = "DPP::PHA::FineGain "; break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if( name != "" ) fprintf( txtFile, "0x%04X %35s 0x%08X %d\n", address, name.c_str(), setting[i], setting[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -127,6 +127,10 @@ class Digitizer{
|
||||||
void CreateAndSaveSettingToFile (string fileName);
|
void CreateAndSaveSettingToFile (string fileName);
|
||||||
void SaveSettingToFile (uint32_t registerAddress, unsigned int value, int ch = -1);
|
void SaveSettingToFile (uint32_t registerAddress, unsigned int value, int ch = -1);
|
||||||
unsigned int ReadSettingFromFile (uint32_t registerAddress, int ch = -1); /// read from setting binary
|
unsigned int ReadSettingFromFile (uint32_t registerAddress, int ch = -1); /// read from setting binary
|
||||||
|
void SaveSettingAsText (string fileName);
|
||||||
|
///void TranslateSettingBin2Text (string binFileName, int DPPType, string txtFileName);
|
||||||
|
|
||||||
|
unsigned int * GetSetting() {return setting;};
|
||||||
|
|
||||||
string GetSettingFileName() {return settingFileName;}
|
string GetSettingFileName() {return settingFileName;}
|
||||||
|
|
||||||
|
|
|
@ -151,7 +151,7 @@ MainWindow::MainWindow(const TGWindow *p,UInt_t w,UInt_t h) {
|
||||||
TGHorizontalFrame *hfg1 = new TGHorizontalFrame(vframe); vframe->AddFrame(hfg1 ,new TGLayoutHints(kLHintsLeft, 0, 0, 0, 0));
|
TGHorizontalFrame *hfg1 = new TGHorizontalFrame(vframe); vframe->AddFrame(hfg1 ,new TGLayoutHints(kLHintsLeft, 0, 0, 0, 0));
|
||||||
|
|
||||||
TGLabel * lbDataPath = new TGLabel(hfg1, "Save Data Prefix"); hfg1->AddFrame(lbDataPath, uniLayoutHints);
|
TGLabel * lbDataPath = new TGLabel(hfg1, "Save Data Prefix"); hfg1->AddFrame(lbDataPath, uniLayoutHints);
|
||||||
dataPrefix = new TGTextEntry(hfg1, "test"); hfg1->AddFrame(dataPrefix,uniLayoutHints);
|
dataPrefix = new TGTextEntry(hfg1, "ExpName"); hfg1->AddFrame(dataPrefix,uniLayoutHints);
|
||||||
dataPrefix->Resize(100, 20);
|
dataPrefix->Resize(100, 20);
|
||||||
|
|
||||||
TGLabel * lbRunNum = new TGLabel(hfg1, "Run"); hfg1->AddFrame(lbRunNum, uniLayoutHints);
|
TGLabel * lbRunNum = new TGLabel(hfg1, "Run"); hfg1->AddFrame(lbRunNum, uniLayoutHints);
|
||||||
|
@ -699,7 +699,7 @@ void * MainWindow::FillHistogram(void * ptr){
|
||||||
uint32_t ElapsedTime = 0;
|
uint32_t ElapsedTime = 0;
|
||||||
|
|
||||||
TString dataFileName = dataPrefix->GetText();
|
TString dataFileName = dataPrefix->GetText();
|
||||||
dataFileName += Form("%03d_run_%03d", (int) digi[boardID]->GetSerialNumber(), (int) runIDEntry->GetNumber());
|
dataFileName += Form("_run%03d_%03d", (int) runIDEntry->GetNumber(), (int) digi[boardID]->GetSerialNumber());
|
||||||
|
|
||||||
printf("|%s|\n", dataFileName.Data());
|
printf("|%s|\n", dataFileName.Data());
|
||||||
|
|
||||||
|
@ -773,7 +773,6 @@ void * MainWindow::FillHistogram(void * ptr){
|
||||||
data->ClearData();
|
data->ClearData();
|
||||||
PreviousTime = CurrentTime;
|
PreviousTime = CurrentTime;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fEcanvas->GetCanvas()->Update();
|
fEcanvas->GetCanvas()->Update();
|
||||||
|
|
|
@ -188,166 +188,4 @@ namespace Register {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
/// This provides an alternative way for control
|
|
||||||
namespace Setting{
|
|
||||||
|
|
||||||
enum PHA{
|
|
||||||
/// board configuration
|
|
||||||
AutoDataFlush_board_bool,
|
|
||||||
DecimateWaveForm_board_bool,
|
|
||||||
TriggerPropapation_board_bool,
|
|
||||||
DualTrace_board_bool,
|
|
||||||
AnalogProbe1_board_2bit,
|
|
||||||
AnalogProbe2_board_2bit,
|
|
||||||
WavefromRecording_board_bool,
|
|
||||||
EnableExtra2Word_board_bool,
|
|
||||||
EnergyRecording_board_bool,
|
|
||||||
VirtualProbe_board_4bit,
|
|
||||||
|
|
||||||
/// DPP Algorithm Control 1
|
|
||||||
TrapazoidRescaling_5bit,
|
|
||||||
WaveformDecimation_2bit,
|
|
||||||
WaveformDecimationGain_2bit,
|
|
||||||
PeakSampling_2bit,
|
|
||||||
PulsePolarity_bool,
|
|
||||||
TriggerMode_2bit,
|
|
||||||
BaselineSampling_3bit,
|
|
||||||
DisableSelfTrigger_bool,
|
|
||||||
RolloverFlag_bool,
|
|
||||||
PileupFlag_bool,
|
|
||||||
|
|
||||||
/// DPP Algorithm Control 2
|
|
||||||
LocalShapedTrigger_bool,
|
|
||||||
LocalShapedTriggerMode_2bit,
|
|
||||||
LocalTriggerValidation_bool,
|
|
||||||
LocalTriggerValidationMode_2bit,
|
|
||||||
Extra2WordOption_3bit,
|
|
||||||
VetoSource_2bit,
|
|
||||||
TriggerCounterRateStep_2bit,
|
|
||||||
BaselineCalculationWhenACQOFF_bool,
|
|
||||||
TagCorrelatedEvents_bool,
|
|
||||||
BaselineRestoreOptimization_bool,
|
|
||||||
|
|
||||||
/// ACQ control
|
|
||||||
StartStopMode_2bit,
|
|
||||||
StartStopACQ_bool,
|
|
||||||
PLLClockSource_bool,
|
|
||||||
VetoInForTRGOUT_bool,
|
|
||||||
|
|
||||||
/// Global Trigger Mask
|
|
||||||
GlobalTrgMask_8bit,
|
|
||||||
GlobalTrgMajorityCoincienceWindow_4bit,
|
|
||||||
GlobalTrgMajorityLevel_3bit,
|
|
||||||
GlobalTrgExternalTrigger_bool,
|
|
||||||
GlobalTrgSoftwareTrigger_bool,
|
|
||||||
|
|
||||||
/// Front Panel TRG-OUT Mask
|
|
||||||
FrontTRGOUTMask_8bit,
|
|
||||||
FrontTRGOUTLogic_2bit,
|
|
||||||
FrontTRGOUTMajorityLevel_3bit,
|
|
||||||
FrontTRGOUTExternalTrigger_bool,
|
|
||||||
FrontTRGOUTSoftwareTrigger_bool,
|
|
||||||
|
|
||||||
/// Front Plane I/O
|
|
||||||
FrontPanelIO_LEMO_bool,
|
|
||||||
FrontPanelIO_TRGOUT_bool,
|
|
||||||
FrontPanelIO_TRGINCtrl_bool,
|
|
||||||
FrontPanelIO_TRGINtoMezzanines_bool,
|
|
||||||
FrontPanelIO_TRGOUTmode_6bit,
|
|
||||||
|
|
||||||
/// Trigger Validation Mask
|
|
||||||
TriggerValidationMask_8bit,
|
|
||||||
TriggerValidationOperation_2bit,
|
|
||||||
TriggerValidationMajority_3bit,
|
|
||||||
TriggerValidationExternalTrigger_bool,
|
|
||||||
TriggerValidationSoftwareTrigger_bool,
|
|
||||||
|
|
||||||
/// Readout Control
|
|
||||||
ReadoutCtrl_VMEInterruptLevel_3bit,
|
|
||||||
ReadoutCtrl_OpticalLinkInterrupt_bool,
|
|
||||||
ReadoutCtrl_VMEBusError_bool,
|
|
||||||
ReadoutCtrl_VMEAlign64_bool,
|
|
||||||
|
|
||||||
/// Registers for channel
|
|
||||||
RecordLength_G_ns,
|
|
||||||
PreTriggerLength_ns,
|
|
||||||
InputDynamicRange_bool,
|
|
||||||
DCOffset_precentage,
|
|
||||||
VetoWidth_ns,
|
|
||||||
EventPreAggregate_G_max1023,
|
|
||||||
AggregateOrganization_board_3bit,
|
|
||||||
MaxAggregatePerBlockTransfer_board_10bit,
|
|
||||||
|
|
||||||
TriggerThreshold_LSD,
|
|
||||||
TriggerHoldOffWidth_ns,
|
|
||||||
TriggerSmoothingFactor_5bit, /// RC-CR2 Smoothing Factor
|
|
||||||
TriggerOutputWidth_ns, /// Shaped Trigger Width
|
|
||||||
InputRiseTime_ns,
|
|
||||||
|
|
||||||
TrapezoidRiseTime_ns,
|
|
||||||
TrapezoidFlatTop_ns,
|
|
||||||
DecayTime_ns,
|
|
||||||
PeakingTime_ns,
|
|
||||||
PeakingHoldOff_ns,
|
|
||||||
EnergyFineGain_16bit,
|
|
||||||
RiseTimeValidationWindow_ns,
|
|
||||||
|
|
||||||
ADCTemperature_8bit,
|
|
||||||
|
|
||||||
/// Others
|
|
||||||
FanSpeedControl_bool,
|
|
||||||
RunStartStopDelay_8bit,
|
|
||||||
DisableExternalTrigger_bool,
|
|
||||||
ExtendedVetoDelay_16bit,
|
|
||||||
AnalogMonitorMode_3bit,
|
|
||||||
BufferOccupancyGain_4bit,
|
|
||||||
|
|
||||||
///==========read only
|
|
||||||
|
|
||||||
/// AMC Firmware Revisiion
|
|
||||||
AMCFirmwareNumber_readOnly_8bit,
|
|
||||||
AMCDPPcode_readOnly_8bit,
|
|
||||||
AMCBuildDay_readOnly_8bit,
|
|
||||||
AMCBuildMonth_readOnly_4bits,
|
|
||||||
AMCBuildYear_readOnly_4bits,
|
|
||||||
|
|
||||||
/// ACQ Status
|
|
||||||
ACQStatus_readOnly_bool,
|
|
||||||
ACQEventReady_readOnly_bool,
|
|
||||||
ACQEventFull_readOnly_bool,
|
|
||||||
ACQClockSource_readOnly_bool,
|
|
||||||
ACQPLLLock_readOnly_bool,
|
|
||||||
ACQBoardReady_readOnly_bool,
|
|
||||||
ACQ_S_IN_Statue_readOnly_bool,
|
|
||||||
ACQ_TRGIN_Status_readOnly_bool,
|
|
||||||
ACQChannelShutDownStatus_readOnly_bool,
|
|
||||||
ACQTenmperatureStatus_readOnly_4bit,
|
|
||||||
|
|
||||||
|
|
||||||
///========== not impletementd
|
|
||||||
DataFlush_writeOnly_any, /// any bit write, write only
|
|
||||||
ChannelStopAcq_bool,
|
|
||||||
ChannelSoftwareTrigger_writeOnly_any,
|
|
||||||
|
|
||||||
FineGain_16bit, /// this is complicated value
|
|
||||||
|
|
||||||
ADCCalibration_32bit,
|
|
||||||
|
|
||||||
ChannelsShutdown_bool,
|
|
||||||
|
|
||||||
SoftwareTrigger_writeOnly_any,
|
|
||||||
|
|
||||||
ChannelEnableMask_16bit,
|
|
||||||
|
|
||||||
/// ChannelStatus
|
|
||||||
ChannelStatus_SPI_bool,
|
|
||||||
ChannelStatus_ADCCalib_bool,
|
|
||||||
ChannelStatus_ADCPowerDown_bool
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
}*/
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -73,9 +73,12 @@ BoardSetting::BoardSetting(const TGWindow *p, UInt_t w, UInt_t h, Digitizer ** d
|
||||||
{///=========== Setting file
|
{///=========== Setting file
|
||||||
TGHorizontalFrame *hframe1 = new TGHorizontalFrame(vframe); vframe->AddFrame(hframe1, new TGLayoutHints(kLHintsLeft, 5, 5, 0, 0));
|
TGHorizontalFrame *hframe1 = new TGHorizontalFrame(vframe); vframe->AddFrame(hframe1, new TGLayoutHints(kLHintsLeft, 5, 5, 0, 0));
|
||||||
|
|
||||||
TGTextButton * bProgramBoardFromFile = new TGTextButton(hframe1, "Open File"); hframe1->AddFrame(bProgramBoardFromFile, new TGLayoutHints( kLHintsLeft | kLHintsCenterY, 5,5,3,3));
|
TGTextButton * bProgramBoardFromFile = new TGTextButton(hframe1, "Load File"); hframe1->AddFrame(bProgramBoardFromFile, new TGLayoutHints( kLHintsLeft | kLHintsCenterY, 5,5,3,3));
|
||||||
bProgramBoardFromFile->Connect("Clicked()", "BoardSetting", this, "ProgramBoardFromFile()");
|
bProgramBoardFromFile->Connect("Clicked()", "BoardSetting", this, "ProgramBoardFromFile()");
|
||||||
|
|
||||||
|
TGTextButton * bSaveFile = new TGTextButton(hframe1, "Save As"); hframe1->AddFrame(bSaveFile, new TGLayoutHints( kLHintsLeft | kLHintsCenterY, 5,5,3,3));
|
||||||
|
bSaveFile->Connect("Clicked()", "BoardSetting", this, "SaveSettingFile()");
|
||||||
|
|
||||||
TGLabel * lbSettingFile = new TGLabel(hframe1, "Setting file :"); hframe1->AddFrame(lbSettingFile, new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 5,5,4,2));
|
TGLabel * lbSettingFile = new TGLabel(hframe1, "Setting file :"); hframe1->AddFrame(lbSettingFile, new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 5,5,4,2));
|
||||||
txtSettingFile = new TGTextEntry(hframe1, ""); hframe1->AddFrame(txtSettingFile, new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 5,5,3,3));
|
txtSettingFile = new TGTextEntry(hframe1, ""); hframe1->AddFrame(txtSettingFile, new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 5,5,3,3));
|
||||||
txtSettingFile->SetEnabled(false);
|
txtSettingFile->SetEnabled(false);
|
||||||
|
@ -1401,6 +1404,8 @@ void BoardSetting::ProgramBoardFromFile(){
|
||||||
printf("Open file: %s (dir: %s)\n", fi.fFilename, fi.fIniDir);
|
printf("Open file: %s (dir: %s)\n", fi.fFilename, fi.fIniDir);
|
||||||
dir = fi.fIniDir;
|
dir = fi.fIniDir;
|
||||||
|
|
||||||
|
if( fi.fFilename == NULL) return;
|
||||||
|
|
||||||
txtSettingFile->SetText(fi.fFilename);
|
txtSettingFile->SetText(fi.fFilename);
|
||||||
|
|
||||||
if( digi == NULL ) {
|
if( digi == NULL ) {
|
||||||
|
@ -1413,3 +1418,32 @@ void BoardSetting::ProgramBoardFromFile(){
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void BoardSetting::SaveSettingFile(){
|
||||||
|
|
||||||
|
const char *filetypes[] = { "Setting File", "*.bin",
|
||||||
|
0, 0};
|
||||||
|
|
||||||
|
static TString dir(".");
|
||||||
|
TGFileInfo fi;
|
||||||
|
fi.fFileTypes = filetypes;
|
||||||
|
fi.SetIniDir(dir);
|
||||||
|
printf("fIniDir = %s\n", fi.fIniDir);
|
||||||
|
new TGFileDialog(gClient->GetRoot(), fMain, kFDSave, &fi);
|
||||||
|
printf("Open file: %s (dir: %s)\n", fi.fFilename, fi.fIniDir);
|
||||||
|
dir = fi.fIniDir;
|
||||||
|
|
||||||
|
if( fi.fFilename == NULL) return;
|
||||||
|
|
||||||
|
txtSettingFile->SetText(fi.fFilename);
|
||||||
|
|
||||||
|
if( digi == NULL ) {
|
||||||
|
|
||||||
|
}else{
|
||||||
|
|
||||||
|
int boardID = boardIDEntry->GetNumber();
|
||||||
|
digi[boardID]->CreateAndSaveSettingToFile( fi.fFilename );
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
|
@ -178,5 +178,6 @@ class BoardSetting{
|
||||||
void ReadData();
|
void ReadData();
|
||||||
void ProgramDefaultBoard();
|
void ProgramDefaultBoard();
|
||||||
void ProgramBoardFromFile();
|
void ProgramBoardFromFile();
|
||||||
|
void SaveSettingFile();
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
7
test.cpp
7
test.cpp
|
@ -88,11 +88,11 @@ int main(int argc, char* argv[]){
|
||||||
int board = i % 3;
|
int board = i % 3;
|
||||||
int port = i/3;
|
int port = i/3;
|
||||||
dig[i] = new Digitizer(board, port, false, true);
|
dig[i] = new Digitizer(board, port, false, true);
|
||||||
//dig[i]->CreateAndSaveSettingBinary("setting_" + to_string(dig[i]->GetSerialNumber()) + ".bin");
|
dig[i]->CreateAndSaveSettingToFile("setting_" + to_string(dig[i]->GetSerialNumber()) + ".bin");
|
||||||
//dig[i]->OpenSettingBinary("setting_" + to_string(dig[i]->GetSerialNumber()) + ".bin");
|
//dig[i]->OpenSettingBinary("setting_" + to_string(dig[i]->GetSerialNumber()) + ".bin");
|
||||||
}
|
}
|
||||||
|
|
||||||
dig[0]->LoadSettingBinary("setting_" + to_string(dig[0]->GetSerialNumber()) + ".bin");
|
//dig[0]->LoadSettingBinary("setting_" + to_string(dig[0]->GetSerialNumber()) + ".bin");
|
||||||
|
|
||||||
//dig[0]->Reset();
|
//dig[0]->Reset();
|
||||||
//dig[0]->ProgramPHABoard();
|
//dig[0]->ProgramPHABoard();
|
||||||
|
@ -141,6 +141,9 @@ int main(int argc, char* argv[]){
|
||||||
|
|
||||||
//dig[0]->PrintSettingFromMemory();
|
//dig[0]->PrintSettingFromMemory();
|
||||||
|
|
||||||
|
dig[0]->SaveSettingAsText("haha.txt");
|
||||||
|
|
||||||
|
|
||||||
printf("============================== other dig\n");
|
printf("============================== other dig\n");
|
||||||
dig[1]->LoadSettingBinary("setting_323.bin");
|
dig[1]->LoadSettingBinary("setting_323.bin");
|
||||||
|
|
||||||
|
|
|
@ -115,7 +115,6 @@ TriggerSummary::~TriggerSummary(){
|
||||||
delete numUpdateTime;
|
delete numUpdateTime;
|
||||||
|
|
||||||
updateFlag = false;
|
updateFlag = false;
|
||||||
//usleep(500 * 1000);
|
|
||||||
|
|
||||||
///delete thread; /// Don;t delete the thread, otherwise, thread will not run after close and reopen.
|
///delete thread; /// Don;t delete the thread, otherwise, thread will not run after close and reopen.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user