add some code to prevent out of memeory frozen
This commit is contained in:
parent
b396eef66e
commit
649cb1554a
13
.vscode/c_cpp_properties.json
vendored
13
.vscode/c_cpp_properties.json
vendored
|
@ -26,6 +26,19 @@
|
||||||
"cppStandard": "gnu++17",
|
"cppStandard": "gnu++17",
|
||||||
"intelliSenseMode": "linux-gcc-x64"
|
"intelliSenseMode": "linux-gcc-x64"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "Anasen",
|
||||||
|
"includePath": [
|
||||||
|
"${workspaceFolder}/**",
|
||||||
|
"/usr/include/x86_64-linux-gnu/qt6/**",
|
||||||
|
"/opt/root/include/**"
|
||||||
|
],
|
||||||
|
"defines": [],
|
||||||
|
"compilerPath": "/usr/bin/gcc",
|
||||||
|
"cStandard": "c17",
|
||||||
|
"cppStandard": "gnu++17",
|
||||||
|
"intelliSenseMode": "linux-gcc-x64"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "Splitpole",
|
"name": "Splitpole",
|
||||||
"includePath": [
|
"includePath": [
|
||||||
|
|
|
@ -587,12 +587,15 @@ int Digitizer::ReadData(){
|
||||||
//uint32_t EventSize = ReadRegister(DPP::EventSize); // Is it as same as data->nByte?
|
//uint32_t EventSize = ReadRegister(DPP::EventSize); // Is it as same as data->nByte?
|
||||||
// if( data->nByte > 0 ) printf("Read Buffer size %d byte \n", data->nByte);
|
// if( data->nByte > 0 ) printf("Read Buffer size %d byte \n", data->nByte);
|
||||||
|
|
||||||
if (ret || data->nByte == 0) {
|
if (ret != CAEN_DGTZ_Success || data->nByte == 0) {
|
||||||
ErrorMsg(__func__);
|
ErrorMsg(__func__);
|
||||||
|
if( ret == CAEN_DGTZ_OutOfMemory) {
|
||||||
|
printf("Abort ReadData.\n");
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
acqStatus = ReadRegister(DPP::AcquisitionStatus_R);
|
ReadACQStatus();
|
||||||
|
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
|
@ -96,6 +96,7 @@ class Digitizer{
|
||||||
Data * GetData() const {return data;}
|
Data * GetData() const {return data;}
|
||||||
uint32_t GetACQStatus() const {return acqStatus;}
|
uint32_t GetACQStatus() const {return acqStatus;}
|
||||||
void ReadAndPrintACQStatue();
|
void ReadAndPrintACQStatue();
|
||||||
|
void ReadACQStatus() { acqStatus = ReadRegister(DPP::AcquisitionStatus_R); }
|
||||||
|
|
||||||
unsigned int CalByteForBuffer();
|
unsigned int CalByteForBuffer();
|
||||||
|
|
||||||
|
|
|
@ -78,7 +78,14 @@ public:
|
||||||
printf("ReadDataThread::%s------------ ret : %d \n", __func__, ret);
|
printf("ReadDataThread::%s------------ ret : %d \n", __func__, ret);
|
||||||
digiMTX[ID].lock();
|
digiMTX[ID].lock();
|
||||||
digi->StopACQ();
|
digi->StopACQ();
|
||||||
|
if( ret == CAEN_DGTZ_OutOfMemory ){
|
||||||
|
digi->WriteRegister(DPP::SoftwareClear_W, 1);
|
||||||
|
digi->GetData()->ClearData();
|
||||||
|
}
|
||||||
|
digi->ReadACQStatus();
|
||||||
digiMTX[ID].unlock();
|
digiMTX[ID].unlock();
|
||||||
|
emit sendMsg("Digi-" + QString::number(digi->GetSerialNumber()) + " ACQ off.");
|
||||||
|
stop = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -982,6 +982,7 @@ void MainWindow::UpdateScalar(){
|
||||||
digiMTX[iDigi].lock();
|
digiMTX[iDigi].lock();
|
||||||
|
|
||||||
uint32_t acqStatus = digi[iDigi]->GetACQStatus();
|
uint32_t acqStatus = digi[iDigi]->GetACQStatus();
|
||||||
|
//printf("Digi-%d : acq on/off ? : %d \n", digi[iDigi]->GetSerialNumber(), (acqStatus >> 2) & 0x1 );
|
||||||
if( ( acqStatus >> 2 ) & 0x1 ){
|
if( ( acqStatus >> 2 ) & 0x1 ){
|
||||||
runStatus[iDigi]->setStyleSheet("background-color : green;");
|
runStatus[iDigi]->setStyleSheet("background-color : green;");
|
||||||
}else{
|
}else{
|
||||||
|
|
Loading…
Reference in New Issue
Block a user