Compare commits
2 Commits
d55779468c
...
19a637f366
Author | SHA1 | Date | |
---|---|---|---|
|
19a637f366 | ||
|
9dc44b5070 |
3
.vscode/settings.json
vendored
3
.vscode/settings.json
vendored
|
@ -1,7 +1,8 @@
|
||||||
{
|
{
|
||||||
"files.associations": {
|
"files.associations": {
|
||||||
"script.C": "cpp",
|
"script.C": "cpp",
|
||||||
"SOLARIS_Qt6_DAQ.pro" : "makefile"
|
"SOLARIS_Qt6_DAQ.pro": "makefile",
|
||||||
|
"qlineseries": "cpp"
|
||||||
},
|
},
|
||||||
|
|
||||||
"better-comments.multilineComments": true,
|
"better-comments.multilineComments": true,
|
||||||
|
|
|
@ -6,7 +6,7 @@ CAEN_DIG2_v1.5.3
|
||||||
|
|
||||||
CAEN_FELIB_v1.2.2
|
CAEN_FELIB_v1.2.2
|
||||||
|
|
||||||
`sudo apt install qt6-base-dev libcurl4-openssl-dev`
|
`sudo apt install qt6-base-dev libcurl4-openssl-dev libqt6charts6-dev`
|
||||||
|
|
||||||
Digitizer firmware V2745-dpp-pha-2022092903.cup
|
Digitizer firmware V2745-dpp-pha-2022092903.cup
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@ TEMPLATE = app
|
||||||
TARGET = SOLARIS_DAQ
|
TARGET = SOLARIS_DAQ
|
||||||
INCLUDEPATH += .
|
INCLUDEPATH += .
|
||||||
|
|
||||||
QT += widgets
|
QT += widgets charts
|
||||||
|
|
||||||
LIBS += -lcurl -lCAEN_FELib
|
LIBS += -lcurl -lCAEN_FELib
|
||||||
|
|
||||||
|
|
125
mainwindow.cpp
125
mainwindow.cpp
|
@ -9,6 +9,10 @@
|
||||||
#include <QFile>
|
#include <QFile>
|
||||||
#include <QProcess>
|
#include <QProcess>
|
||||||
|
|
||||||
|
#include <QChartView>
|
||||||
|
#include <QLineSeries>
|
||||||
|
#include <QValueAxis>
|
||||||
|
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
//------ static memeber
|
//------ static memeber
|
||||||
|
@ -26,6 +30,8 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent){
|
||||||
digiSetting = NULL;
|
digiSetting = NULL;
|
||||||
readDataThread = NULL;
|
readDataThread = NULL;
|
||||||
|
|
||||||
|
plot = new QChart();
|
||||||
|
|
||||||
QWidget * mainLayoutWidget = new QWidget(this);
|
QWidget * mainLayoutWidget = new QWidget(this);
|
||||||
setCentralWidget(mainLayoutWidget);
|
setCentralWidget(mainLayoutWidget);
|
||||||
QVBoxLayout * layoutMain = new QVBoxLayout(mainLayoutWidget);
|
QVBoxLayout * layoutMain = new QVBoxLayout(mainLayoutWidget);
|
||||||
|
@ -51,8 +57,9 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent){
|
||||||
leExpName->setAlignment(Qt::AlignHCenter);
|
leExpName->setAlignment(Qt::AlignHCenter);
|
||||||
leExpName->setReadOnly(true);
|
leExpName->setReadOnly(true);
|
||||||
|
|
||||||
QPushButton * bnOpenScope = new QPushButton("Open scope", this);
|
bnOpenScope = new QPushButton("Open scope", this);
|
||||||
bnOpenScope->setEnabled(false);
|
bnOpenScope->setEnabled(false);
|
||||||
|
connect(bnOpenScope, &QPushButton::clicked, this, &MainWindow::OpenScope);
|
||||||
|
|
||||||
bnOpenDigitizers = new QPushButton("Open Digitizers", this);
|
bnOpenDigitizers = new QPushButton("Open Digitizers", this);
|
||||||
connect(bnOpenDigitizers, SIGNAL(clicked()), this, SLOT(OpenDigitizers()));
|
connect(bnOpenDigitizers, SIGNAL(clicked()), this, SLOT(OpenDigitizers()));
|
||||||
|
@ -65,7 +72,7 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent){
|
||||||
bnDigiSettings->setEnabled(false);
|
bnDigiSettings->setEnabled(false);
|
||||||
connect(bnDigiSettings, SIGNAL(clicked()), this, SLOT(OpenDigitizersSettings()));
|
connect(bnDigiSettings, SIGNAL(clicked()), this, SLOT(OpenDigitizersSettings()));
|
||||||
|
|
||||||
QPushButton * bnSOLSettings = new QPushButton("SOLARIS Settings", this);
|
bnSOLSettings = new QPushButton("SOLARIS Settings", this);
|
||||||
bnSOLSettings->setEnabled(false);
|
bnSOLSettings->setEnabled(false);
|
||||||
|
|
||||||
layout1->addWidget(bnProgramSettings, 0, 0);
|
layout1->addWidget(bnProgramSettings, 0, 0);
|
||||||
|
@ -162,8 +169,7 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent){
|
||||||
|
|
||||||
if( OpenProgramSettings() ) OpenExpSettings();
|
if( OpenProgramSettings() ) OpenExpSettings();
|
||||||
|
|
||||||
//bnOpenDigitizers_clicked();
|
bnOpenScope->setEnabled(true);
|
||||||
//OpenDigitizersSettings();
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -177,6 +183,8 @@ MainWindow::~MainWindow(){
|
||||||
//delete bnNewExp;
|
//delete bnNewExp;
|
||||||
//delete logInfo;
|
//delete logInfo;
|
||||||
|
|
||||||
|
if( plot != NULL )delete plot;
|
||||||
|
|
||||||
//---- need manually delete
|
//---- need manually delete
|
||||||
if( digiSetting != NULL ) delete digiSetting;
|
if( digiSetting != NULL ) delete digiSetting;
|
||||||
|
|
||||||
|
@ -194,11 +202,12 @@ void MainWindow::StartACQ(){
|
||||||
digi[i]->ProgramPHA(false);
|
digi[i]->ProgramPHA(false);
|
||||||
digi[i]->SetPHADataFormat(1);// only save 1 trace
|
digi[i]->SetPHADataFormat(1);// only save 1 trace
|
||||||
|
|
||||||
//TODO :: save file
|
//TODO =========================== save file
|
||||||
remove("haha_000.sol"); // remove file
|
remove("haha_000.sol"); // remove file
|
||||||
digi[i]->OpenOutFile("haha");// haha_000.sol
|
digi[i]->OpenOutFile("haha");// haha_000.sol
|
||||||
digi[i]->StartACQ();
|
digi[i]->StartACQ();
|
||||||
|
|
||||||
|
//TODO ========================== Sync start.
|
||||||
readDataThread[i]->start();
|
readDataThread[i]->start();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -231,21 +240,17 @@ void MainWindow::StopACQ(){
|
||||||
//^###################################################################### open and close digitizer
|
//^###################################################################### open and close digitizer
|
||||||
void MainWindow::OpenDigitizers(){
|
void MainWindow::OpenDigitizers(){
|
||||||
|
|
||||||
//------- decode IPList
|
LogMsg("<font style=\"color:blue;\">Opening " + QString::number(nDigi) + " Digitizers..... </font>");
|
||||||
//TODO --------
|
|
||||||
nDigi = 1;
|
|
||||||
|
|
||||||
LogMsg("Opening digitizers.....");
|
|
||||||
|
|
||||||
digi = new Digitizer2Gen*[nDigi];
|
digi = new Digitizer2Gen*[nDigi];
|
||||||
readDataThread = new ReadDataThread*[nDigi];
|
readDataThread = new ReadDataThread*[nDigi];
|
||||||
|
|
||||||
for( int i = 0; i < nDigi; i++){
|
for( int i = 0; i < nDigi; i++){
|
||||||
|
|
||||||
printf("=============================== %d/%d\n" , i, nDigi);
|
LogMsg("IP : " + IPList[i] + " | " + QString::number(i+1) + "/" + QString::number(nDigi));
|
||||||
|
|
||||||
digi[i] = new Digitizer2Gen();
|
digi[i] = new Digitizer2Gen();
|
||||||
digi[i]->OpenDigitizer("dig2://192.168.0.100/");
|
digi[i]->OpenDigitizer(("dig2://" + IPList[i]).toStdString().c_str());
|
||||||
|
|
||||||
if(digi[i]->IsConnected()){
|
if(digi[i]->IsConnected()){
|
||||||
|
|
||||||
|
@ -254,12 +259,13 @@ void MainWindow::OpenDigitizers(){
|
||||||
LogMsg("Opened digitizer : <font style=\"color:red;\">" + QString::number(digi[i]->GetSerialNumber()) + "</font>");
|
LogMsg("Opened digitizer : <font style=\"color:red;\">" + QString::number(digi[i]->GetSerialNumber()) + "</font>");
|
||||||
bnStartACQ->setEnabled(true);
|
bnStartACQ->setEnabled(true);
|
||||||
bnStopACQ->setEnabled(false);
|
bnStopACQ->setEnabled(false);
|
||||||
|
bnOpenScope->setEnabled(true);
|
||||||
|
|
||||||
readDataThread[i] = new ReadDataThread(digi[i], this);
|
readDataThread[i] = new ReadDataThread(digi[i], this);
|
||||||
connect(readDataThread[i], &ReadDataThread::sendMsg, this, &MainWindow::LogMsg);
|
connect(readDataThread[i], &ReadDataThread::sendMsg, this, &MainWindow::LogMsg);
|
||||||
|
|
||||||
}else{
|
}else{
|
||||||
LogMsg("Cannot open digitizer. Use a dummy. with serial number " + QString::number(i));
|
LogMsg("Cannot open digitizer. Use a dummy with serial number " + QString::number(i));
|
||||||
digi[i]->SetDummy();
|
digi[i]->SetDummy();
|
||||||
digiSerialNum.push_back(i);
|
digiSerialNum.push_back(i);
|
||||||
|
|
||||||
|
@ -274,6 +280,8 @@ void MainWindow::OpenDigitizers(){
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::CloseDigitizers(){
|
void MainWindow::CloseDigitizers(){
|
||||||
|
|
||||||
|
if( digi == NULL) return;
|
||||||
|
|
||||||
for( int i = 0; i < nDigi; i++){
|
for( int i = 0; i < nDigi; i++){
|
||||||
digi[i]->CloseDigitizer();
|
digi[i]->CloseDigitizer();
|
||||||
|
@ -308,6 +316,49 @@ void MainWindow::CloseDigitizers(){
|
||||||
bnOpenDigitizers->setFocus();
|
bnOpenDigitizers->setFocus();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//^###################################################################### Open Scope
|
||||||
|
void MainWindow::OpenScope(){
|
||||||
|
|
||||||
|
QMainWindow * scope = new QMainWindow(this);
|
||||||
|
scope->setWindowTitle("Scope");
|
||||||
|
scope->setGeometry(0, 0, 1000, 800);
|
||||||
|
|
||||||
|
QWidget * layoutWidget = new QWidget(scope);
|
||||||
|
scope->setCentralWidget(layoutWidget);
|
||||||
|
QGridLayout * layout = new QGridLayout(layoutWidget);
|
||||||
|
layoutWidget->setLayout(layout);
|
||||||
|
|
||||||
|
|
||||||
|
plot->removeAllSeries();
|
||||||
|
|
||||||
|
QLineSeries * data = new QLineSeries(this);
|
||||||
|
data->setName("data");
|
||||||
|
|
||||||
|
//--------- add data
|
||||||
|
data->append(1, 2);
|
||||||
|
data->append(2, 2);
|
||||||
|
data->append(3, 5);
|
||||||
|
data->append(4, 2);
|
||||||
|
|
||||||
|
plot->addSeries(data);
|
||||||
|
|
||||||
|
|
||||||
|
plot->createDefaultAxes(); /// this must be after addSeries();
|
||||||
|
plot->axes(Qt::Vertical).first()->setRange(0, 10); /// this must be after createDefaultAxes();
|
||||||
|
plot->axes(Qt::Horizontal).first()->setRange(0, 5);
|
||||||
|
|
||||||
|
QChartView * plotView = new QChartView(plot);
|
||||||
|
plotView->setRenderHints(QPainter::Antialiasing);
|
||||||
|
|
||||||
|
//scope->setCentralWidget(plotView);
|
||||||
|
layout->addWidget(plotView);
|
||||||
|
|
||||||
|
|
||||||
|
scope->show();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//^###################################################################### Open digitizer setting panel
|
||||||
void MainWindow::OpenDigitizersSettings(){
|
void MainWindow::OpenDigitizersSettings(){
|
||||||
LogMsg("Open digitizers Settings Panel");
|
LogMsg("Open digitizers Settings Panel");
|
||||||
|
|
||||||
|
@ -353,7 +404,7 @@ void MainWindow::ProgramSettings(){
|
||||||
helpInfo->appendHtml("These 2 paths will be used when <font style=\"color : blue;\"> New/Change/Reload Exp </font>");
|
helpInfo->appendHtml("These 2 paths will be used when <font style=\"color : blue;\"> New/Change/Reload Exp </font>");
|
||||||
helpInfo->appendHtml("<p></p>");
|
helpInfo->appendHtml("<p></p>");
|
||||||
helpInfo->appendHtml("<font style=\"color : blue;\"> Digitizers IP List </font> is the list of IP \
|
helpInfo->appendHtml("<font style=\"color : blue;\"> Digitizers IP List </font> is the list of IP \
|
||||||
digi of the digitizers IP. e.g. 192.168.0.100,102 for 2 digitizers, or 192.168.0.100-102 for 3 digitizers.");
|
digi of the digitizers IP. Break by \",\", continue by \"-\". e.g. 192.168.0.100,102 for 2 digitizers, or 192.168.0.100-102 for 3 digitizers.");
|
||||||
helpInfo->appendHtml("<p></p>");
|
helpInfo->appendHtml("<p></p>");
|
||||||
helpInfo->appendHtml("<font style=\"color : blue;\"> Database IP </font> or <font style=\"color : blue;\"> Elog IP </font> can be empty. In that case, no database and elog will be used.");
|
helpInfo->appendHtml("<font style=\"color : blue;\"> Database IP </font> or <font style=\"color : blue;\"> Elog IP </font> can be empty. In that case, no database and elog will be used.");
|
||||||
|
|
||||||
|
@ -365,7 +416,7 @@ void MainWindow::ProgramSettings(){
|
||||||
QLabel *lbSaveSettingPath = new QLabel("Settings Save Path", &dialog);
|
QLabel *lbSaveSettingPath = new QLabel("Settings Save Path", &dialog);
|
||||||
lbSaveSettingPath->setAlignment(Qt::AlignRight | Qt::AlignCenter);
|
lbSaveSettingPath->setAlignment(Qt::AlignRight | Qt::AlignCenter);
|
||||||
layout->addWidget(lbSaveSettingPath, rowID, 0);
|
layout->addWidget(lbSaveSettingPath, rowID, 0);
|
||||||
lSaveSettingPath = new QLineEdit(QDir::current().absolutePath(), &dialog); layout->addWidget(lSaveSettingPath, rowID, 1, 1, 2);
|
lSaveSettingPath = new QLineEdit(settingFilePath, &dialog); layout->addWidget(lSaveSettingPath, rowID, 1, 1, 2);
|
||||||
|
|
||||||
QPushButton * bnSaveSettingPath = new QPushButton("browser", &dialog); layout->addWidget(bnSaveSettingPath, rowID, 3);
|
QPushButton * bnSaveSettingPath = new QPushButton("browser", &dialog); layout->addWidget(bnSaveSettingPath, rowID, 3);
|
||||||
connect(bnSaveSettingPath, &QPushButton::clicked, this, [=](){this->OpenDirectory(0);});
|
connect(bnSaveSettingPath, &QPushButton::clicked, this, [=](){this->OpenDirectory(0);});
|
||||||
|
@ -375,7 +426,7 @@ void MainWindow::ProgramSettings(){
|
||||||
QLabel *lbAnalysisPath = new QLabel("Analysis Path", &dialog);
|
QLabel *lbAnalysisPath = new QLabel("Analysis Path", &dialog);
|
||||||
lbAnalysisPath->setAlignment(Qt::AlignRight | Qt::AlignCenter);
|
lbAnalysisPath->setAlignment(Qt::AlignRight | Qt::AlignCenter);
|
||||||
layout->addWidget(lbAnalysisPath, rowID, 0);
|
layout->addWidget(lbAnalysisPath, rowID, 0);
|
||||||
lAnalysisPath = new QLineEdit(QDir::home().absolutePath() + "/analysis", &dialog); layout->addWidget(lAnalysisPath, rowID, 1, 1, 2);
|
lAnalysisPath = new QLineEdit(analysisPath, &dialog); layout->addWidget(lAnalysisPath, rowID, 1, 1, 2);
|
||||||
|
|
||||||
QPushButton * bnAnalysisPath = new QPushButton("browser", &dialog); layout->addWidget(bnAnalysisPath, rowID, 3);
|
QPushButton * bnAnalysisPath = new QPushButton("browser", &dialog); layout->addWidget(bnAnalysisPath, rowID, 3);
|
||||||
connect(bnAnalysisPath, &QPushButton::clicked, this, [=](){this->OpenDirectory(1);});
|
connect(bnAnalysisPath, &QPushButton::clicked, this, [=](){this->OpenDirectory(1);});
|
||||||
|
@ -385,7 +436,7 @@ void MainWindow::ProgramSettings(){
|
||||||
QLabel *lbDataPath = new QLabel("Data Path", &dialog);
|
QLabel *lbDataPath = new QLabel("Data Path", &dialog);
|
||||||
lbDataPath->setAlignment(Qt::AlignRight | Qt::AlignCenter);
|
lbDataPath->setAlignment(Qt::AlignRight | Qt::AlignCenter);
|
||||||
layout->addWidget(lbDataPath, rowID, 0);
|
layout->addWidget(lbDataPath, rowID, 0);
|
||||||
lDataPath = new QLineEdit("/mnt/data1", &dialog); layout->addWidget(lDataPath, rowID, 1, 1, 2);
|
lDataPath = new QLineEdit(dataPath, &dialog); layout->addWidget(lDataPath, rowID, 1, 1, 2);
|
||||||
|
|
||||||
QPushButton * bnDataPath = new QPushButton("browser", &dialog); layout->addWidget(bnDataPath, rowID, 3);
|
QPushButton * bnDataPath = new QPushButton("browser", &dialog); layout->addWidget(bnDataPath, rowID, 3);
|
||||||
connect(bnDataPath, &QPushButton::clicked, this, [=](){this->OpenDirectory(2);});
|
connect(bnDataPath, &QPushButton::clicked, this, [=](){this->OpenDirectory(2);});
|
||||||
|
@ -395,25 +446,25 @@ void MainWindow::ProgramSettings(){
|
||||||
QLabel *lbIPDomain = new QLabel("Digitizers IP List", &dialog);
|
QLabel *lbIPDomain = new QLabel("Digitizers IP List", &dialog);
|
||||||
lbIPDomain->setAlignment(Qt::AlignRight | Qt::AlignCenter);
|
lbIPDomain->setAlignment(Qt::AlignRight | Qt::AlignCenter);
|
||||||
layout->addWidget(lbIPDomain, rowID, 0);
|
layout->addWidget(lbIPDomain, rowID, 0);
|
||||||
lIPDomain = new QLineEdit("192.168.0.100", &dialog); layout->addWidget(lIPDomain, rowID, 1, 1, 2);
|
lIPDomain = new QLineEdit(IPListStr, &dialog); layout->addWidget(lIPDomain, rowID, 1, 1, 2);
|
||||||
//-------- DataBase IP
|
//-------- DataBase IP
|
||||||
rowID ++;
|
rowID ++;
|
||||||
QLabel *lbDatbaseIP = new QLabel("Database IP", &dialog);
|
QLabel *lbDatbaseIP = new QLabel("Database IP", &dialog);
|
||||||
lbDatbaseIP->setAlignment(Qt::AlignRight | Qt::AlignCenter);
|
lbDatbaseIP->setAlignment(Qt::AlignRight | Qt::AlignCenter);
|
||||||
layout->addWidget(lbDatbaseIP, rowID, 0);
|
layout->addWidget(lbDatbaseIP, rowID, 0);
|
||||||
lDatbaseIP = new QLineEdit("https://localhost:8086", &dialog); layout->addWidget(lDatbaseIP, rowID, 1, 1, 2);
|
lDatbaseIP = new QLineEdit(DatabaseIP, &dialog); layout->addWidget(lDatbaseIP, rowID, 1, 1, 2);
|
||||||
//-------- DataBase name
|
//-------- DataBase name
|
||||||
rowID ++;
|
rowID ++;
|
||||||
QLabel *lbDatbaseName = new QLabel("Database Name", &dialog);
|
QLabel *lbDatbaseName = new QLabel("Database Name", &dialog);
|
||||||
lbDatbaseName->setAlignment(Qt::AlignRight | Qt::AlignCenter);
|
lbDatbaseName->setAlignment(Qt::AlignRight | Qt::AlignCenter);
|
||||||
layout->addWidget(lbDatbaseName, rowID, 0);
|
layout->addWidget(lbDatbaseName, rowID, 0);
|
||||||
lDatbaseName = new QLineEdit("SOLARIS", &dialog); layout->addWidget(lDatbaseName, rowID, 1, 1, 2);
|
lDatbaseName = new QLineEdit(DatabaseName, &dialog); layout->addWidget(lDatbaseName, rowID, 1, 1, 2);
|
||||||
//-------- Elog IP
|
//-------- Elog IP
|
||||||
rowID ++;
|
rowID ++;
|
||||||
QLabel *lbElogIP = new QLabel("Elog IP", &dialog);
|
QLabel *lbElogIP = new QLabel("Elog IP", &dialog);
|
||||||
lbElogIP->setAlignment(Qt::AlignRight | Qt::AlignCenter);
|
lbElogIP->setAlignment(Qt::AlignRight | Qt::AlignCenter);
|
||||||
layout->addWidget(lbElogIP, rowID, 0);
|
layout->addWidget(lbElogIP, rowID, 0);
|
||||||
lElogIP = new QLineEdit("https://localhost:8080", &dialog); layout->addWidget(lElogIP, rowID, 1, 1, 2);
|
lElogIP = new QLineEdit(ElogIP, &dialog); layout->addWidget(lElogIP, rowID, 1, 1, 2);
|
||||||
|
|
||||||
rowID ++;
|
rowID ++;
|
||||||
QPushButton *button1 = new QPushButton("OK and Save", &dialog);
|
QPushButton *button1 = new QPushButton("OK and Save", &dialog);
|
||||||
|
@ -475,7 +526,7 @@ bool MainWindow::OpenProgramSettings(){
|
||||||
case 0 : settingFilePath = line; break;
|
case 0 : settingFilePath = line; break;
|
||||||
case 1 : analysisPath = line; break;
|
case 1 : analysisPath = line; break;
|
||||||
case 2 : dataPath = line; break;
|
case 2 : dataPath = line; break;
|
||||||
case 3 : IPList = line; break;
|
case 3 : IPListStr = line; break;
|
||||||
case 4 : DatabaseIP = line; break;
|
case 4 : DatabaseIP = line; break;
|
||||||
case 5 : DatabaseName = line; break;
|
case 5 : DatabaseName = line; break;
|
||||||
case 6 : ElogIP = line; break;
|
case 6 : ElogIP = line; break;
|
||||||
|
@ -490,7 +541,7 @@ bool MainWindow::OpenProgramSettings(){
|
||||||
LogMsg("Setting File Path : " + settingFilePath);
|
LogMsg("Setting File Path : " + settingFilePath);
|
||||||
LogMsg(" Analysis Path : " + analysisPath);
|
LogMsg(" Analysis Path : " + analysisPath);
|
||||||
LogMsg(" Data Path : " + dataPath);
|
LogMsg(" Data Path : " + dataPath);
|
||||||
LogMsg(" Digi. IP Domain : " + IPList);
|
LogMsg(" Digi. IP List : " + IPListStr);
|
||||||
LogMsg(" Database IP : " + DatabaseIP);
|
LogMsg(" Database IP : " + DatabaseIP);
|
||||||
LogMsg(" Database Name : " + DatabaseName);
|
LogMsg(" Database Name : " + DatabaseName);
|
||||||
LogMsg(" ElogIP : " + ElogIP);
|
LogMsg(" ElogIP : " + ElogIP);
|
||||||
|
@ -503,10 +554,28 @@ bool MainWindow::OpenProgramSettings(){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if( ret ){
|
|
||||||
return true;
|
|
||||||
|
|
||||||
OpenProgramSettings();
|
if( ret ){
|
||||||
|
|
||||||
|
//------- decode IPListStr
|
||||||
|
nDigi = 0;
|
||||||
|
QStringList parts = IPListStr.split(".");
|
||||||
|
QString IPDomain = parts[0] + "." + parts[1] + "." + parts[2] + ".";
|
||||||
|
parts = parts[3].split(",");
|
||||||
|
for(int i = 0; i < parts.size(); i++){
|
||||||
|
if( parts[i].indexOf("-") != -1){
|
||||||
|
QStringList haha = parts[i].split("-");
|
||||||
|
for( int j = haha[0].toInt(); j <= haha.last().toInt(); j++){
|
||||||
|
IPList << IPDomain + QString::number(j);
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
IPList << IPDomain + parts[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
nDigi = IPList.size();
|
||||||
|
|
||||||
|
return true;
|
||||||
|
|
||||||
}else{
|
}else{
|
||||||
|
|
||||||
|
@ -519,7 +588,7 @@ bool MainWindow::OpenProgramSettings(){
|
||||||
|
|
||||||
void MainWindow::SaveProgramSettings(){
|
void MainWindow::SaveProgramSettings(){
|
||||||
|
|
||||||
IPList = lIPDomain->text();
|
IPListStr = lIPDomain->text();
|
||||||
DatabaseIP = lDatbaseIP->text();
|
DatabaseIP = lDatbaseIP->text();
|
||||||
DatabaseName = lDatbaseName->text();
|
DatabaseName = lDatbaseName->text();
|
||||||
ElogIP = lElogIP->text();
|
ElogIP = lElogIP->text();
|
||||||
|
@ -535,7 +604,7 @@ void MainWindow::SaveProgramSettings(){
|
||||||
file.write((settingFilePath+"\n").toStdString().c_str());
|
file.write((settingFilePath+"\n").toStdString().c_str());
|
||||||
file.write((analysisPath+"\n").toStdString().c_str());
|
file.write((analysisPath+"\n").toStdString().c_str());
|
||||||
file.write((dataPath+"\n").toStdString().c_str());
|
file.write((dataPath+"\n").toStdString().c_str());
|
||||||
file.write((IPList+"\n").toStdString().c_str());
|
file.write((IPListStr+"\n").toStdString().c_str());
|
||||||
file.write((DatabaseIP+"\n").toStdString().c_str());
|
file.write((DatabaseIP+"\n").toStdString().c_str());
|
||||||
file.write((DatabaseName+"\n").toStdString().c_str());
|
file.write((DatabaseName+"\n").toStdString().c_str());
|
||||||
file.write((ElogIP+"\n").toStdString().c_str());
|
file.write((ElogIP+"\n").toStdString().c_str());
|
||||||
|
|
123
mainwindow.h
123
mainwindow.h
|
@ -11,6 +11,7 @@
|
||||||
#include <QScrollBar>
|
#include <QScrollBar>
|
||||||
#include <QPushButton>
|
#include <QPushButton>
|
||||||
#include <QMutex>
|
#include <QMutex>
|
||||||
|
#include <QChart>
|
||||||
|
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <time.h> // time in nano-sec
|
#include <time.h> // time in nano-sec
|
||||||
|
@ -85,91 +86,99 @@ private:
|
||||||
//=================================================
|
//=================================================
|
||||||
|
|
||||||
class MainWindow : public QMainWindow{
|
class MainWindow : public QMainWindow{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
MainWindow(QWidget *parent = nullptr);
|
MainWindow(QWidget *parent = nullptr);
|
||||||
~MainWindow();
|
~MainWindow();
|
||||||
|
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
|
|
||||||
void OpenDigitizers();
|
void OpenDigitizers();
|
||||||
void CloseDigitizers();
|
void CloseDigitizers();
|
||||||
|
|
||||||
|
void OpenScope();
|
||||||
|
|
||||||
void OpenDigitizersSettings();
|
void OpenDigitizersSettings();
|
||||||
|
|
||||||
|
|
||||||
void ProgramSettings();
|
void ProgramSettings();
|
||||||
bool OpenProgramSettings();
|
bool OpenProgramSettings();
|
||||||
void SaveProgramSettings();
|
void SaveProgramSettings();
|
||||||
void OpenDirectory(int id);
|
void OpenDirectory(int id);
|
||||||
|
|
||||||
void SetupNewExp();
|
void SetupNewExp();
|
||||||
bool OpenExpSettings();
|
bool OpenExpSettings();
|
||||||
void CreateNewExperiment(const QString newExpName);
|
void CreateNewExperiment(const QString newExpName);
|
||||||
void ChangeExperiment(const QString newExpName);
|
void ChangeExperiment(const QString newExpName);
|
||||||
void CreateRawDataFolderAndLink(const QString newExpName);
|
void CreateRawDataFolderAndLink(const QString newExpName);
|
||||||
|
|
||||||
signals :
|
signals :
|
||||||
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
QPushButton * bnProgramSettings;
|
QPushButton * bnProgramSettings;
|
||||||
QPushButton * bnNewExp;
|
QPushButton * bnNewExp;
|
||||||
QLineEdit * leExpName;
|
QLineEdit * leExpName;
|
||||||
|
|
||||||
QPushButton * bnOpenDigitizers;
|
QPushButton * bnOpenDigitizers;
|
||||||
QPushButton * bnCloseDigitizers;
|
QPushButton * bnCloseDigitizers;
|
||||||
QPushButton * bnDigiSettings;
|
|
||||||
|
QPushButton * bnDigiSettings;
|
||||||
|
QPushButton * bnSOLSettings;
|
||||||
|
|
||||||
QPushButton * bnStartACQ;
|
QPushButton * bnOpenScope;
|
||||||
QPushButton * bnStopACQ;
|
QChart * plot;
|
||||||
QLineEdit * leRunID;
|
|
||||||
QLineEdit * leRawDataPath;
|
|
||||||
|
|
||||||
DigiSettings * digiSetting;
|
QPushButton * bnStartACQ;
|
||||||
|
QPushButton * bnStopACQ;
|
||||||
|
QLineEdit * leRunID;
|
||||||
|
QLineEdit * leRawDataPath;
|
||||||
|
|
||||||
QPlainTextEdit * logInfo;
|
DigiSettings * digiSetting;
|
||||||
|
|
||||||
static Digitizer2Gen ** digi;
|
QPlainTextEdit * logInfo;
|
||||||
unsigned short nDigi;
|
|
||||||
std::vector<unsigned short> digiSerialNum;
|
|
||||||
|
|
||||||
void StartACQ();
|
static Digitizer2Gen ** digi;
|
||||||
void StopACQ();
|
unsigned short nDigi;
|
||||||
|
std::vector<unsigned short> digiSerialNum;
|
||||||
|
|
||||||
ReadDataThread ** readDataThread;
|
void StartACQ();
|
||||||
|
void StopACQ();
|
||||||
|
|
||||||
void LogMsg(QString msg);
|
ReadDataThread ** readDataThread;
|
||||||
bool logMsgHTMLMode = true;
|
|
||||||
|
|
||||||
//---------------- Program settings
|
void LogMsg(QString msg);
|
||||||
QLineEdit * lSaveSettingPath; // only live in ProgramSettigns()
|
bool logMsgHTMLMode = true;
|
||||||
QLineEdit * lAnalysisPath; // only live in ProgramSettigns()
|
|
||||||
QLineEdit * lDataPath; // only live in ProgramSettigns()
|
|
||||||
|
|
||||||
QLineEdit * lIPDomain;
|
//---------------- Program settings
|
||||||
QLineEdit * lDatbaseIP;
|
QLineEdit * lSaveSettingPath; // only live in ProgramSettigns()
|
||||||
QLineEdit * lDatbaseName;
|
QLineEdit * lAnalysisPath; // only live in ProgramSettigns()
|
||||||
QLineEdit * lElogIP;
|
QLineEdit * lDataPath; // only live in ProgramSettigns()
|
||||||
|
|
||||||
QString settingFilePath;
|
QLineEdit * lIPDomain;
|
||||||
QString analysisPath;
|
QLineEdit * lDatbaseIP;
|
||||||
QString dataPath;
|
QLineEdit * lDatbaseName;
|
||||||
QString IPList;
|
QLineEdit * lElogIP;
|
||||||
QString DatabaseIP;
|
|
||||||
QString DatabaseName;
|
|
||||||
QString ElogIP;
|
|
||||||
|
|
||||||
//------------- experiment settings
|
QString settingFilePath;
|
||||||
bool isGitExist;
|
QString analysisPath;
|
||||||
bool useGit;
|
QString dataPath;
|
||||||
QString expName;
|
QString IPListStr;
|
||||||
QString rawDataFolder;
|
QStringList IPList;
|
||||||
unsigned int runID;
|
QString DatabaseIP;
|
||||||
unsigned int elogID;
|
QString DatabaseName;
|
||||||
|
QString ElogIP;
|
||||||
|
|
||||||
|
//------------- experiment settings
|
||||||
|
bool isGitExist;
|
||||||
|
bool useGit;
|
||||||
|
QString expName;
|
||||||
|
QString rawDataFolder;
|
||||||
|
unsigned int runID;
|
||||||
|
unsigned int elogID;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user