some buttons is working at the scope
This commit is contained in:
parent
fb02434c55
commit
898ddfa63c
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -3,6 +3,7 @@
|
||||||
SOLARIS_DAQ
|
SOLARIS_DAQ
|
||||||
*.sol
|
*.sol
|
||||||
programSettings.txt
|
programSettings.txt
|
||||||
|
test
|
||||||
|
|
||||||
*~
|
*~
|
||||||
*.autosave
|
*.autosave
|
||||||
|
|
66
.vscode/settings.json
vendored
66
.vscode/settings.json
vendored
|
@ -2,7 +2,71 @@
|
||||||
"files.associations": {
|
"files.associations": {
|
||||||
"script.C": "cpp",
|
"script.C": "cpp",
|
||||||
"SOLARIS_Qt6_DAQ.pro": "makefile",
|
"SOLARIS_Qt6_DAQ.pro": "makefile",
|
||||||
"qlineseries": "cpp"
|
"qlineseries": "cpp",
|
||||||
|
"cctype": "cpp",
|
||||||
|
"clocale": "cpp",
|
||||||
|
"cmath": "cpp",
|
||||||
|
"cstdarg": "cpp",
|
||||||
|
"cstddef": "cpp",
|
||||||
|
"cstdio": "cpp",
|
||||||
|
"cstdlib": "cpp",
|
||||||
|
"cstring": "cpp",
|
||||||
|
"ctime": "cpp",
|
||||||
|
"cwchar": "cpp",
|
||||||
|
"cwctype": "cpp",
|
||||||
|
"array": "cpp",
|
||||||
|
"atomic": "cpp",
|
||||||
|
"bit": "cpp",
|
||||||
|
"*.tcc": "cpp",
|
||||||
|
"chrono": "cpp",
|
||||||
|
"codecvt": "cpp",
|
||||||
|
"compare": "cpp",
|
||||||
|
"concepts": "cpp",
|
||||||
|
"condition_variable": "cpp",
|
||||||
|
"cstdint": "cpp",
|
||||||
|
"deque": "cpp",
|
||||||
|
"list": "cpp",
|
||||||
|
"map": "cpp",
|
||||||
|
"string": "cpp",
|
||||||
|
"unordered_map": "cpp",
|
||||||
|
"unordered_set": "cpp",
|
||||||
|
"vector": "cpp",
|
||||||
|
"exception": "cpp",
|
||||||
|
"algorithm": "cpp",
|
||||||
|
"functional": "cpp",
|
||||||
|
"iterator": "cpp",
|
||||||
|
"memory": "cpp",
|
||||||
|
"memory_resource": "cpp",
|
||||||
|
"numeric": "cpp",
|
||||||
|
"optional": "cpp",
|
||||||
|
"random": "cpp",
|
||||||
|
"ratio": "cpp",
|
||||||
|
"string_view": "cpp",
|
||||||
|
"system_error": "cpp",
|
||||||
|
"tuple": "cpp",
|
||||||
|
"type_traits": "cpp",
|
||||||
|
"utility": "cpp",
|
||||||
|
"future": "cpp",
|
||||||
|
"initializer_list": "cpp",
|
||||||
|
"iomanip": "cpp",
|
||||||
|
"iosfwd": "cpp",
|
||||||
|
"iostream": "cpp",
|
||||||
|
"istream": "cpp",
|
||||||
|
"limits": "cpp",
|
||||||
|
"mutex": "cpp",
|
||||||
|
"new": "cpp",
|
||||||
|
"numbers": "cpp",
|
||||||
|
"ostream": "cpp",
|
||||||
|
"semaphore": "cpp",
|
||||||
|
"span": "cpp",
|
||||||
|
"sstream": "cpp",
|
||||||
|
"stdexcept": "cpp",
|
||||||
|
"stop_token": "cpp",
|
||||||
|
"streambuf": "cpp",
|
||||||
|
"thread": "cpp",
|
||||||
|
"cinttypes": "cpp",
|
||||||
|
"typeinfo": "cpp",
|
||||||
|
"variant": "cpp"
|
||||||
},
|
},
|
||||||
|
|
||||||
"better-comments.multilineComments": true,
|
"better-comments.multilineComments": true,
|
||||||
|
|
|
@ -97,6 +97,11 @@ std::string Digitizer2Gen::ReadValue(const char * parameter, bool verbose){
|
||||||
return retValue;
|
return retValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string Digitizer2Gen::ReadChValue(std::string ch, std::string shortPara, bool verbose){
|
||||||
|
std::string haha = "/ch/" + ch + "/par/" + shortPara;
|
||||||
|
return ReadValue(haha.c_str(), verbose);
|
||||||
|
}
|
||||||
|
|
||||||
void Digitizer2Gen::WriteValue(const char * parameter, std::string value){
|
void Digitizer2Gen::WriteValue(const char * parameter, std::string value){
|
||||||
if( !isConnected ) return;
|
if( !isConnected ) return;
|
||||||
printf(" %s| %-45s : %s\n", __func__, parameter, value.c_str());
|
printf(" %s| %-45s : %s\n", __func__, parameter, value.c_str());
|
||||||
|
@ -107,6 +112,11 @@ void Digitizer2Gen::WriteValue(const char * parameter, std::string value){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Digitizer2Gen::WriteChValue(std::string ch, std::string shortPara, std::string value){
|
||||||
|
std::string haha = "/ch/" + ch + "/par/" + shortPara;
|
||||||
|
WriteValue(haha.c_str(), value);
|
||||||
|
}
|
||||||
|
|
||||||
void Digitizer2Gen::SendCommand(const char * parameter){
|
void Digitizer2Gen::SendCommand(const char * parameter){
|
||||||
if( !isConnected ) return;
|
if( !isConnected ) return;
|
||||||
printf("Send Command : %s \n", parameter);
|
printf("Send Command : %s \n", parameter);
|
||||||
|
|
|
@ -72,7 +72,9 @@ class Digitizer2Gen {
|
||||||
int CloseDigitizer();
|
int CloseDigitizer();
|
||||||
|
|
||||||
std::string ReadValue(const char * parameter, bool verbose = false);
|
std::string ReadValue(const char * parameter, bool verbose = false);
|
||||||
|
std::string ReadChValue(std::string ch, std::string shortPara, bool verbose = false);
|
||||||
void WriteValue(const char * parameter, std::string value);
|
void WriteValue(const char * parameter, std::string value);
|
||||||
|
void WriteChValue(std::string ch, std::string shortPara, std::string value);
|
||||||
void SendCommand(const char * parameter);
|
void SendCommand(const char * parameter);
|
||||||
|
|
||||||
uint64_t GetHandle(const char * parameter);
|
uint64_t GetHandle(const char * parameter);
|
||||||
|
|
187
mainwindow.cpp
187
mainwindow.cpp
|
@ -170,8 +170,6 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent){
|
||||||
|
|
||||||
if( OpenProgramSettings() ) OpenExpSettings();
|
if( OpenProgramSettings() ) OpenExpSettings();
|
||||||
|
|
||||||
bnOpenScope->setEnabled(true);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
MainWindow::~MainWindow(){
|
MainWindow::~MainWindow(){
|
||||||
|
@ -333,44 +331,91 @@ void MainWindow::CloseDigitizers(){
|
||||||
//^###################################################################### Open Scope
|
//^###################################################################### Open Scope
|
||||||
void MainWindow::OpenScope(){
|
void MainWindow::OpenScope(){
|
||||||
|
|
||||||
|
|
||||||
cbScopeDigi->clear(); ///thsi will also trigger QComboBox::currentIndexChanged
|
cbScopeDigi->clear(); ///thsi will also trigger QComboBox::currentIndexChanged
|
||||||
cbScopeCh->clear();
|
cbScopeCh->clear();
|
||||||
if( digi ) {
|
if( digi ) {
|
||||||
|
|
||||||
|
|
||||||
for( int i = 0 ; i < nDigi; i++) {
|
for( int i = 0 ; i < nDigi; i++) {
|
||||||
cbScopeDigi->addItem("Digi-" + QString::number(digi[i]->GetSerialNumber()), i);
|
cbScopeDigi->addItem("Digi-" + QString::number(digi[i]->GetSerialNumber()), i);
|
||||||
}
|
}
|
||||||
|
|
||||||
//*---- set digitizer to take full trace; since in scope mode, no data saving, speed would be fast (How fast?)
|
//*---- get digi setting
|
||||||
//* when the input rate is faster than trigger rate, Digitizer will stop data taking.
|
|
||||||
|
|
||||||
int iDigi = cbScopeDigi->currentIndex();
|
int iDigi = cbScopeDigi->currentIndex();
|
||||||
int ch = cbScopeCh->currentIndex();
|
int ch = cbScopeCh->currentIndex();
|
||||||
|
|
||||||
if( digi[iDigi]->IsDummy() ) return;
|
if( digi[iDigi]->IsDummy() ) return;
|
||||||
|
|
||||||
|
int index;
|
||||||
|
std::string ans;
|
||||||
|
|
||||||
|
std::vector<std::string> haha = {"WaveAnalogProbe0", "WaveAnalogProbe1"};
|
||||||
|
|
||||||
|
for( int i = 0 ; i < 2; i++){
|
||||||
|
ans = digi[iDigi]->ReadChValue(std::to_string(ch), haha[i]);
|
||||||
|
index = cbAnaProbe[i]->findData(QString::fromStdString(ans));
|
||||||
|
cbAnaProbe[i]->setCurrentIndex(index);
|
||||||
|
}
|
||||||
|
|
||||||
|
haha.clear();
|
||||||
|
haha = {"WaveDigitalProbe0", "WaveDigitalProbe1", "WaveDigitalProbe2", "WaveDigitalProbe3"};
|
||||||
|
|
||||||
|
for( int i = 0 ; i < 4; i++){
|
||||||
|
ans = digi[iDigi]->ReadChValue(std::to_string(ch), haha[i]);
|
||||||
|
index = cbDigProbe[i]->findData(QString::fromStdString(ans));
|
||||||
|
cbDigProbe[i]->setCurrentIndex(index);
|
||||||
|
}
|
||||||
|
|
||||||
|
ans = digi[iDigi]->ReadChValue(std::to_string(ch), "ChRecordLengthT");
|
||||||
|
sbRL->setValue(atoi(ans.c_str()));
|
||||||
|
|
||||||
|
ans = digi[iDigi]->ReadChValue(std::to_string(ch), "ChPreTriggerT");
|
||||||
|
sbPT->setValue(atoi(ans.c_str()));
|
||||||
|
|
||||||
|
//TODO ===== Reset and ProgramPHA should be removed
|
||||||
digi[iDigi]->Reset();
|
digi[iDigi]->Reset();
|
||||||
digi[iDigi]->ProgramPHA(false);
|
digi[iDigi]->ProgramPHA(false);
|
||||||
|
|
||||||
digi[iDigi]->WriteValue("/ch/0..63/par/ChEnable", "false");
|
digi[iDigi]->WriteChValue("0..63", "ChEnable", "false");
|
||||||
digi[iDigi]->WriteValue(("/ch/" + std::to_string(ch) + "/par/ChEnable").c_str(), "true");
|
digi[iDigi]->WriteChValue(std::to_string(ch), "ChEnable", "true");
|
||||||
digi[iDigi]->SetPHADataFormat(0);
|
digi[iDigi]->SetPHADataFormat(0);
|
||||||
|
|
||||||
digi[iDigi]->StartACQ();
|
StartScope();
|
||||||
|
|
||||||
readDataThread[iDigi]->SetScopeRun(true);
|
|
||||||
readDataThread[iDigi]->start();
|
|
||||||
|
|
||||||
updateTraceThread->start();
|
|
||||||
bnStartACQ->setEnabled(false);
|
bnStartACQ->setEnabled(false);
|
||||||
bnStopACQ->setEnabled(false);
|
bnStopACQ->setEnabled(false);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
scope->show();
|
scope->show();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MainWindow::StartScope(){
|
||||||
|
|
||||||
|
if( !digi ) return;
|
||||||
|
|
||||||
|
//*---- set digitizer to take full trace; since in scope mode, no data saving, speed would be fast (How fast?)
|
||||||
|
//* when the input rate is faster than trigger rate, Digitizer will stop data taking.
|
||||||
|
|
||||||
|
int iDigi = cbScopeDigi->currentIndex();
|
||||||
|
|
||||||
|
digi[iDigi]->StartACQ();
|
||||||
|
|
||||||
|
readDataThread[iDigi]->SetScopeRun(true);
|
||||||
|
readDataThread[iDigi]->start();
|
||||||
|
|
||||||
|
updateTraceThread->start();
|
||||||
|
|
||||||
|
bnScopeStart->setEnabled(false);
|
||||||
|
bnScopeStop->setEnabled(true);
|
||||||
|
|
||||||
|
sbRL->setEnabled(false);
|
||||||
|
|
||||||
|
allowChange = true;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
void MainWindow::StopScope(){
|
void MainWindow::StopScope(){
|
||||||
|
|
||||||
updateTraceThread->Stop();
|
updateTraceThread->Stop();
|
||||||
|
@ -380,7 +425,9 @@ void MainWindow::StopScope(){
|
||||||
if(digi){
|
if(digi){
|
||||||
for(int i = 0; i < nDigi; i++){
|
for(int i = 0; i < nDigi; i++){
|
||||||
if( digi[i]->IsDummy() ) continue;
|
if( digi[i]->IsDummy() ) continue;
|
||||||
|
digiMTX.lock();
|
||||||
digi[i]->StopACQ();
|
digi[i]->StopACQ();
|
||||||
|
digiMTX.unlock();
|
||||||
|
|
||||||
readDataThread[i]->quit();
|
readDataThread[i]->quit();
|
||||||
readDataThread[i]->wait();
|
readDataThread[i]->wait();
|
||||||
|
@ -389,6 +436,11 @@ void MainWindow::StopScope(){
|
||||||
bnStopACQ->setEnabled(true);
|
bnStopACQ->setEnabled(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bnScopeStart->setEnabled(true);
|
||||||
|
bnScopeStop->setEnabled(false);
|
||||||
|
|
||||||
|
sbRL->setEnabled(true);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::UpdateScope(){
|
void MainWindow::UpdateScope(){
|
||||||
|
@ -448,6 +500,17 @@ void MainWindow::ProbeChange(QComboBox * cb[], const int size ){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
digiMTX.lock();
|
||||||
|
if( size == 2) {// analog probes
|
||||||
|
dataTrace->setName(cb[0]->currentText());
|
||||||
|
}
|
||||||
|
if( size == 4){ // digitial probes
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
digiMTX.unlock();
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::SetUpPlot(){ //@--- this function run at start up
|
void MainWindow::SetUpPlot(){ //@--- this function run at start up
|
||||||
|
@ -456,10 +519,13 @@ void MainWindow::SetUpPlot(){ //@--- this function run at start up
|
||||||
scope->setGeometry(0, 0, 1000, 800);
|
scope->setGeometry(0, 0, 1000, 800);
|
||||||
scope->setWindowFlags( scope->windowFlags() & ~Qt::WindowCloseButtonHint );
|
scope->setWindowFlags( scope->windowFlags() & ~Qt::WindowCloseButtonHint );
|
||||||
|
|
||||||
|
allowChange = false;
|
||||||
|
|
||||||
plot = new QChart();
|
plot = new QChart();
|
||||||
dataTrace = new QLineSeries();
|
dataTrace = new QLineSeries();
|
||||||
dataTrace->setName("data");
|
dataTrace->setName("Analog Trace 1");
|
||||||
for(int i = 0; i < 100; i ++) dataTrace->append(i, QRandomGenerator::global()->bounded(10));
|
for(int i = 0; i < 100; i ++) dataTrace->append(i, QRandomGenerator::global()->bounded(10));
|
||||||
|
|
||||||
plot->addSeries(dataTrace);
|
plot->addSeries(dataTrace);
|
||||||
plot->createDefaultAxes(); /// this must be after addSeries();
|
plot->createDefaultAxes(); /// this must be after addSeries();
|
||||||
plot->axes(Qt::Vertical).first()->setRange(-1, 11); /// this must be after createDefaultAxes();
|
plot->axes(Qt::Vertical).first()->setRange(-1, 11); /// this must be after createDefaultAxes();
|
||||||
|
@ -491,6 +557,7 @@ void MainWindow::SetUpPlot(){ //@--- this function run at start up
|
||||||
});
|
});
|
||||||
|
|
||||||
//------------ Probe selection
|
//------------ Probe selection
|
||||||
|
rowID ++;
|
||||||
cbAnaProbe[0] = new QComboBox(scope);
|
cbAnaProbe[0] = new QComboBox(scope);
|
||||||
cbAnaProbe[0]->addItem("ADC Input", "ADCInput");
|
cbAnaProbe[0]->addItem("ADC Input", "ADCInput");
|
||||||
cbAnaProbe[0]->addItem("Time Filter", "TimeFiler");
|
cbAnaProbe[0]->addItem("Time Filter", "TimeFiler");
|
||||||
|
@ -504,20 +571,22 @@ void MainWindow::SetUpPlot(){ //@--- this function run at start up
|
||||||
connect(cbAnaProbe[0], &QComboBox::currentIndexChanged, this, [=](){ this->ProbeChange(cbAnaProbe, 2);});
|
connect(cbAnaProbe[0], &QComboBox::currentIndexChanged, this, [=](){ this->ProbeChange(cbAnaProbe, 2);});
|
||||||
connect(cbAnaProbe[1], &QComboBox::currentIndexChanged, this, [=](){ this->ProbeChange(cbAnaProbe, 2);});
|
connect(cbAnaProbe[1], &QComboBox::currentIndexChanged, this, [=](){ this->ProbeChange(cbAnaProbe, 2);});
|
||||||
|
|
||||||
//connect(cbAnaProbe[0], &QComboBox::currentIndexChanged, this, [=](){
|
|
||||||
// int iDigi = cbScopeDigi->currentIndex();
|
|
||||||
// int ch = cbScopeCh->currentIndex();
|
|
||||||
// char str[200] = ("/ch/" + std::to_string(ch) + "/par/WaveAnalogProbe0").c_str();
|
|
||||||
// digi[iDigi]->WriteValue(str, (cbAnaProbe[0]->currentData()).toString().toStdString());
|
|
||||||
//});
|
|
||||||
|
|
||||||
cbAnaProbe[0]->setCurrentIndex(1); ///trigger the AnaProbeChange
|
cbAnaProbe[0]->setCurrentIndex(1); ///trigger the AnaProbeChange
|
||||||
cbAnaProbe[0]->setCurrentIndex(0);
|
cbAnaProbe[0]->setCurrentIndex(0);
|
||||||
cbAnaProbe[1]->setCurrentIndex(4);
|
cbAnaProbe[1]->setCurrentIndex(4);
|
||||||
|
|
||||||
|
connect(cbAnaProbe[0], &QComboBox::currentIndexChanged, this, [=](){
|
||||||
|
int iDigi = cbScopeDigi->currentIndex();
|
||||||
|
int ch = cbScopeCh->currentIndex();
|
||||||
|
digiMTX.lock();
|
||||||
|
digi[iDigi]->WriteChValue(std::to_string(ch), "WaveAnalogProbe0", (cbAnaProbe[0]->currentData()).toString().toStdString());
|
||||||
|
digiMTX.unlock();
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
cbDigProbe[0] = new QComboBox(scope);
|
cbDigProbe[0] = new QComboBox(scope);
|
||||||
cbDigProbe[0]->addItem("Trigger", "Trigger");
|
cbDigProbe[0]->addItem("Trigger", "Trigger");
|
||||||
cbDigProbe[0]->addItem("Time Filter Armed", "TimeFilerArmed");
|
cbDigProbe[0]->addItem("Time Filter Armed", "TimeFilterArmed");
|
||||||
cbDigProbe[0]->addItem("ReTrigger Guard", "ReTriggerGaurd");
|
cbDigProbe[0]->addItem("ReTrigger Guard", "ReTriggerGaurd");
|
||||||
cbDigProbe[0]->addItem("Trap. basline Freeze", "EnergyFilterBaselineFreeze");
|
cbDigProbe[0]->addItem("Trap. basline Freeze", "EnergyFilterBaselineFreeze");
|
||||||
cbDigProbe[0]->addItem("Peaking", "EnergyFilterPeaking");
|
cbDigProbe[0]->addItem("Peaking", "EnergyFilterPeaking");
|
||||||
|
@ -550,29 +619,77 @@ void MainWindow::SetUpPlot(){ //@--- this function run at start up
|
||||||
cbDigProbe[2]->setCurrentIndex(5);
|
cbDigProbe[2]->setCurrentIndex(5);
|
||||||
cbDigProbe[3]->setCurrentIndex(6);
|
cbDigProbe[3]->setCurrentIndex(6);
|
||||||
|
|
||||||
layout->addWidget(cbAnaProbe[0], rowID, 2);
|
layout->addWidget(cbAnaProbe[0], rowID, 0);
|
||||||
layout->addWidget(cbAnaProbe[1], rowID, 3);
|
layout->addWidget(cbAnaProbe[1], rowID, 1);
|
||||||
|
|
||||||
|
layout->addWidget(cbDigProbe[0], rowID, 2);
|
||||||
|
layout->addWidget(cbDigProbe[1], rowID, 3);
|
||||||
|
layout->addWidget(cbDigProbe[2], rowID, 4);
|
||||||
|
layout->addWidget(cbDigProbe[3], rowID, 5);
|
||||||
|
|
||||||
|
//------------ wave settings
|
||||||
rowID ++;
|
rowID ++;
|
||||||
layout->addWidget(cbDigProbe[0], rowID, 0);
|
QLabel * lbRL = new QLabel("Record Lenght [ns]",scope);
|
||||||
layout->addWidget(cbDigProbe[1], rowID, 1);
|
layout->addWidget(lbRL, rowID, 0);
|
||||||
layout->addWidget(cbDigProbe[2], rowID, 2);
|
sbRL = new QSpinBox(scope);
|
||||||
layout->addWidget(cbDigProbe[3], rowID, 3);
|
sbRL->setMinimum(32);
|
||||||
|
sbRL->setMaximum(648000);
|
||||||
|
sbRL->setSingleStep(8);
|
||||||
|
layout->addWidget(sbRL, rowID, 1);
|
||||||
|
|
||||||
|
connect(sbRL, &QSpinBox::valueChanged, this, [=](){
|
||||||
|
if( !allowChange ) return;
|
||||||
|
int iDigi = cbScopeDigi->currentIndex();
|
||||||
|
digiMTX.lock();
|
||||||
|
//StopScope();
|
||||||
|
digi[iDigi]->WriteChValue(std::to_string(cbScopeCh->currentIndex()),
|
||||||
|
"ChRecordLengthT",
|
||||||
|
std::to_string(sbRL->value()));
|
||||||
|
//StartScope();
|
||||||
|
digiMTX.unlock();
|
||||||
|
|
||||||
|
plot->axes(Qt::Horizontal).first()->setRange(0, sbRL->value()/8);
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
QLabel * lbPT = new QLabel("Pre Trigger [ns]",scope);
|
||||||
|
layout->addWidget(lbPT, rowID, 2);
|
||||||
|
sbPT = new QSpinBox(scope);
|
||||||
|
sbPT->setMinimum(32);
|
||||||
|
sbPT->setMaximum(32000);
|
||||||
|
sbPT->setSingleStep(8);
|
||||||
|
layout->addWidget(sbPT, rowID, 3);
|
||||||
|
|
||||||
|
QLabel * lbDCOffset = new QLabel("DC offset [%]",scope);
|
||||||
|
layout->addWidget(lbDCOffset, rowID, 4);
|
||||||
|
QSpinBox * sbDCOffset = new QSpinBox(scope);
|
||||||
|
sbDCOffset->setMinimum(0);
|
||||||
|
sbDCOffset->setMaximum(100);
|
||||||
|
sbDCOffset->setSingleStep(1);
|
||||||
|
layout->addWidget(sbDCOffset, rowID, 5);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//------------ plot view
|
//------------ plot view
|
||||||
rowID ++;
|
rowID ++;
|
||||||
QChartView * plotView = new QChartView(plot);
|
QChartView * plotView = new QChartView(plot);
|
||||||
plotView->setRenderHints(QPainter::Antialiasing);
|
plotView->setRenderHints(QPainter::Antialiasing);
|
||||||
layout->addWidget(plotView, rowID, 0, 1, 4);
|
layout->addWidget(plotView, rowID, 0, 1, 6);
|
||||||
|
|
||||||
//------------ close button
|
//------------ close button
|
||||||
rowID ++;
|
rowID ++;
|
||||||
QPushButton * bnStop = new QPushButton("Stop", scope);
|
bnScopeStart = new QPushButton("Start", scope);
|
||||||
layout->addWidget(bnStop, rowID, 2);
|
layout->addWidget(bnScopeStart, rowID, 0);
|
||||||
connect(bnStop, &QPushButton::clicked, this, &MainWindow::StopScope);
|
bnScopeStart->setEnabled(false);
|
||||||
|
connect(bnScopeStart, &QPushButton::clicked, this, &MainWindow::StartScope);
|
||||||
|
|
||||||
|
bnScopeStop = new QPushButton("Stop", scope);
|
||||||
|
layout->addWidget(bnScopeStop, rowID, 1);
|
||||||
|
connect(bnScopeStop, &QPushButton::clicked, this, &MainWindow::StopScope);
|
||||||
|
|
||||||
QPushButton * bnClose = new QPushButton("Close", scope);
|
QPushButton * bnClose = new QPushButton("Close", scope);
|
||||||
layout->addWidget(bnClose, rowID, 3);
|
layout->addWidget(bnClose, rowID, 5);
|
||||||
connect(bnClose, &QPushButton::clicked, this, &MainWindow::StopScope);
|
connect(bnClose, &QPushButton::clicked, this, &MainWindow::StopScope);
|
||||||
connect(bnClose, &QPushButton::clicked, scope, &QMainWindow::close);
|
connect(bnClose, &QPushButton::clicked, scope, &QMainWindow::close);
|
||||||
|
|
||||||
|
|
|
@ -114,6 +114,7 @@ private slots:
|
||||||
void CloseDigitizers();
|
void CloseDigitizers();
|
||||||
|
|
||||||
void OpenScope();
|
void OpenScope();
|
||||||
|
void StartScope();
|
||||||
void StopScope();
|
void StopScope();
|
||||||
void SetUpPlot();
|
void SetUpPlot();
|
||||||
void UpdateScope();
|
void UpdateScope();
|
||||||
|
@ -155,6 +156,11 @@ private:
|
||||||
QComboBox * cbScopeCh;
|
QComboBox * cbScopeCh;
|
||||||
QComboBox * cbAnaProbe[2];
|
QComboBox * cbAnaProbe[2];
|
||||||
QComboBox * cbDigProbe[4];
|
QComboBox * cbDigProbe[4];
|
||||||
|
QSpinBox * sbRL; // record length
|
||||||
|
QSpinBox * sbPT; // pre trigger
|
||||||
|
QPushButton * bnScopeStart;
|
||||||
|
QPushButton * bnScopeStop;
|
||||||
|
bool allowChange;
|
||||||
void ProbeChange(QComboBox * cb[], const int size);
|
void ProbeChange(QComboBox * cb[], const int size);
|
||||||
|
|
||||||
//@------ ACQ things
|
//@------ ACQ things
|
||||||
|
|
28
makeTest.sh
Normal file
28
makeTest.sh
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
CC="g++"
|
||||||
|
COPTS="-fPIC -DLINUX -O2 -std=c++17 -lpthread"
|
||||||
|
CAENLIBS="-lCAEN_FELib"
|
||||||
|
CURLLIBS="-lcurl"
|
||||||
|
|
||||||
|
OBJS="ClassDigitizer2Gen.o influxdb.o"
|
||||||
|
|
||||||
|
#
|
||||||
|
#ALL = test
|
||||||
|
#
|
||||||
|
################################################################
|
||||||
|
|
||||||
|
#
|
||||||
|
#test : test.cpp ClassDigitizer2Gen.o influxdb.o
|
||||||
|
# $(CC) $(COPTS) $(OBJS) -o test test.cpp $(CAENLIBS) $(CURLLIBS)
|
||||||
|
#
|
||||||
|
#ClassDigitizer2Gen.o : ClassDigitizer2Gen.cpp ClassDigitizer2Gen.h Event.h
|
||||||
|
# $(CC) $(COPTS) -c ClassDigitizer2Gen.cpp $(CAENLIBS)
|
||||||
|
#
|
||||||
|
#influxdb.o : influxdb.cpp influxdb.h
|
||||||
|
# $(CC) $(COPTS) -c influxdb.cpp $(CURLLIBS)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
${CC} ${COPTS} -c influxdb.cpp ${CURLLIBS}
|
||||||
|
${CC} ${COPTS} -c ClassDigitizer2Gen.cpp ${CAENLIBS}
|
||||||
|
${CC} ${COPTS} ${OBJS} -o test test.cpp ${CAENLIBS} ${CURLLIBS}
|
9
test.cpp
9
test.cpp
|
@ -92,6 +92,8 @@ int main(int argc, char* argv[]){
|
||||||
digi->Reset();
|
digi->Reset();
|
||||||
digi->ProgramPHA(false);
|
digi->ProgramPHA(false);
|
||||||
|
|
||||||
|
printf("--------%s \n", digi->ReadChValue(0, "WaveAnalogprobe0", true).c_str());
|
||||||
|
|
||||||
//printf("%s \n", digi->ReadValue("/ch/0/par/ChRealtimeMonitor").c_str());
|
//printf("%s \n", digi->ReadValue("/ch/0/par/ChRealtimeMonitor").c_str());
|
||||||
//printf("%s \n", digi->ReadValue("/ch/0/par/Energy_Nbit").c_str());
|
//printf("%s \n", digi->ReadValue("/ch/0/par/Energy_Nbit").c_str());
|
||||||
//printf("%s \n", digi->ReadValue("/par/MaxRawDataSize").c_str());
|
//printf("%s \n", digi->ReadValue("/par/MaxRawDataSize").c_str());
|
||||||
|
@ -119,7 +121,8 @@ int main(int argc, char* argv[]){
|
||||||
parHandle = digi->GetParentHandle(parHandle); printf("%lu|%lX\n", parHandle, parHandle);
|
parHandle = digi->GetParentHandle(parHandle); printf("%lu|%lX\n", parHandle, parHandle);
|
||||||
printf("%s\n", digi->GetPath(parHandle).c_str());
|
printf("%s\n", digi->GetPath(parHandle).c_str());
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
digi->ReadDigitizerSettings();
|
digi->ReadDigitizerSettings();
|
||||||
|
|
||||||
digi->SetPHADataFormat(1);
|
digi->SetPHADataFormat(1);
|
||||||
|
@ -156,6 +159,10 @@ int main(int argc, char* argv[]){
|
||||||
(t1.tv_nsec-t0.tv_nsec + t1.tv_sec*1e+9 - t0.tv_sec*1e+9)*1.0/1e9);
|
(t1.tv_nsec-t0.tv_nsec + t1.tv_sec*1e+9 - t0.tv_sec*1e+9)*1.0/1e9);
|
||||||
|
|
||||||
digi->CloseOutFile();
|
digi->CloseOutFile();
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
digi->CloseDigitizer();
|
digi->CloseDigitizer();
|
||||||
|
|
||||||
delete digi;
|
delete digi;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user