Compare commits

..

No commits in common. "19a637f366c7e0ac7b7ddaa15c775c90f9770523" and "d55779468cde0f9a688ddfc7097ac9c0898c1dec" have entirely different histories.

5 changed files with 87 additions and 166 deletions

View File

@ -1,8 +1,7 @@
{ {
"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,

View File

@ -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 libqt6charts6-dev` `sudo apt install qt6-base-dev libcurl4-openssl-dev`
Digitizer firmware V2745-dpp-pha-2022092903.cup Digitizer firmware V2745-dpp-pha-2022092903.cup

View File

@ -6,7 +6,7 @@ TEMPLATE = app
TARGET = SOLARIS_DAQ TARGET = SOLARIS_DAQ
INCLUDEPATH += . INCLUDEPATH += .
QT += widgets charts QT += widgets
LIBS += -lcurl -lCAEN_FELib LIBS += -lcurl -lCAEN_FELib

View File

@ -9,10 +9,6 @@
#include <QFile> #include <QFile>
#include <QProcess> #include <QProcess>
#include <QChartView>
#include <QLineSeries>
#include <QValueAxis>
#include <unistd.h> #include <unistd.h>
//------ static memeber //------ static memeber
@ -30,8 +26,6 @@ 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);
@ -57,9 +51,8 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent){
leExpName->setAlignment(Qt::AlignHCenter); leExpName->setAlignment(Qt::AlignHCenter);
leExpName->setReadOnly(true); leExpName->setReadOnly(true);
bnOpenScope = new QPushButton("Open scope", this); QPushButton * 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()));
@ -72,7 +65,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()));
bnSOLSettings = new QPushButton("SOLARIS Settings", this); QPushButton * bnSOLSettings = new QPushButton("SOLARIS Settings", this);
bnSOLSettings->setEnabled(false); bnSOLSettings->setEnabled(false);
layout1->addWidget(bnProgramSettings, 0, 0); layout1->addWidget(bnProgramSettings, 0, 0);
@ -169,7 +162,8 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent){
if( OpenProgramSettings() ) OpenExpSettings(); if( OpenProgramSettings() ) OpenExpSettings();
bnOpenScope->setEnabled(true); //bnOpenDigitizers_clicked();
//OpenDigitizersSettings();
} }
@ -183,8 +177,6 @@ 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;
@ -202,12 +194,11 @@ 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();
} }
@ -240,17 +231,21 @@ void MainWindow::StopACQ(){
//^###################################################################### open and close digitizer //^###################################################################### open and close digitizer
void MainWindow::OpenDigitizers(){ void MainWindow::OpenDigitizers(){
LogMsg("<font style=\"color:blue;\">Opening " + QString::number(nDigi) + " Digitizers..... </font>"); //------- decode IPList
//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++){
LogMsg("IP : " + IPList[i] + " | " + QString::number(i+1) + "/" + QString::number(nDigi)); printf("=============================== %d/%d\n" , i, nDigi);
digi[i] = new Digitizer2Gen(); digi[i] = new Digitizer2Gen();
digi[i]->OpenDigitizer(("dig2://" + IPList[i]).toStdString().c_str()); digi[i]->OpenDigitizer("dig2://192.168.0.100/");
if(digi[i]->IsConnected()){ if(digi[i]->IsConnected()){
@ -259,13 +254,12 @@ 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);
@ -281,8 +275,6 @@ 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();
@ -316,49 +308,6 @@ 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");
@ -404,7 +353,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. Break by \",\", continue by \"-\". e.g. 192.168.0.100,102 for 2 digitizers, or 192.168.0.100-102 for 3 digitizers."); digi of the digitizers IP. 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.");
@ -416,7 +365,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(settingFilePath, &dialog); layout->addWidget(lSaveSettingPath, rowID, 1, 1, 2); lSaveSettingPath = new QLineEdit(QDir::current().absolutePath(), &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);});
@ -426,7 +375,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(analysisPath, &dialog); layout->addWidget(lAnalysisPath, rowID, 1, 1, 2); lAnalysisPath = new QLineEdit(QDir::home().absolutePath() + "/analysis", &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);});
@ -436,7 +385,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(dataPath, &dialog); layout->addWidget(lDataPath, rowID, 1, 1, 2); lDataPath = new QLineEdit("/mnt/data1", &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);});
@ -446,25 +395,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(IPListStr, &dialog); layout->addWidget(lIPDomain, rowID, 1, 1, 2); lIPDomain = new QLineEdit("192.168.0.100", &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(DatabaseIP, &dialog); layout->addWidget(lDatbaseIP, rowID, 1, 1, 2); lDatbaseIP = new QLineEdit("https://localhost:8086", &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(DatabaseName, &dialog); layout->addWidget(lDatbaseName, rowID, 1, 1, 2); lDatbaseName = new QLineEdit("SOLARIS", &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(ElogIP, &dialog); layout->addWidget(lElogIP, rowID, 1, 1, 2); lElogIP = new QLineEdit("https://localhost:8080", &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);
@ -526,7 +475,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 : IPListStr = line; break; case 3 : IPList = 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;
@ -541,7 +490,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 List : " + IPListStr); LogMsg(" Digi. IP Domain : " + IPList);
LogMsg(" Database IP : " + DatabaseIP); LogMsg(" Database IP : " + DatabaseIP);
LogMsg(" Database Name : " + DatabaseName); LogMsg(" Database Name : " + DatabaseName);
LogMsg(" ElogIP : " + ElogIP); LogMsg(" ElogIP : " + ElogIP);
@ -554,29 +503,11 @@ bool MainWindow::OpenProgramSettings(){
} }
} }
if( ret ){ 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; return true;
OpenProgramSettings();
}else{ }else{
bnProgramSettings->setStyleSheet("color: red;"); bnProgramSettings->setStyleSheet("color: red;");
@ -588,7 +519,7 @@ bool MainWindow::OpenProgramSettings(){
void MainWindow::SaveProgramSettings(){ void MainWindow::SaveProgramSettings(){
IPListStr = lIPDomain->text(); IPList = lIPDomain->text();
DatabaseIP = lDatbaseIP->text(); DatabaseIP = lDatbaseIP->text();
DatabaseName = lDatbaseName->text(); DatabaseName = lDatbaseName->text();
ElogIP = lElogIP->text(); ElogIP = lElogIP->text();
@ -604,7 +535,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((IPListStr+"\n").toStdString().c_str()); file.write((IPList+"\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());

View File

@ -11,7 +11,6 @@
#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
@ -86,99 +85,91 @@ 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 * bnStartACQ;
QPushButton * bnSOLSettings; QPushButton * bnStopACQ;
QLineEdit * leRunID;
QLineEdit * leRawDataPath;
QPushButton * bnOpenScope; DigiSettings * digiSetting;
QChart * plot;
QPushButton * bnStartACQ; QPlainTextEdit * logInfo;
QPushButton * bnStopACQ;
QLineEdit * leRunID;
QLineEdit * leRawDataPath;
DigiSettings * digiSetting; static Digitizer2Gen ** digi;
unsigned short nDigi;
std::vector<unsigned short> digiSerialNum;
QPlainTextEdit * logInfo; void StartACQ();
void StopACQ();
static Digitizer2Gen ** digi; ReadDataThread ** readDataThread;
unsigned short nDigi;
std::vector<unsigned short> digiSerialNum;
void StartACQ(); void LogMsg(QString msg);
void StopACQ(); bool logMsgHTMLMode = true;
ReadDataThread ** readDataThread; //---------------- Program settings
QLineEdit * lSaveSettingPath; // only live in ProgramSettigns()
QLineEdit * lAnalysisPath; // only live in ProgramSettigns()
QLineEdit * lDataPath; // only live in ProgramSettigns()
void LogMsg(QString msg); QLineEdit * lIPDomain;
bool logMsgHTMLMode = true; QLineEdit * lDatbaseIP;
QLineEdit * lDatbaseName;
QLineEdit * lElogIP;
//---------------- Program settings QString settingFilePath;
QLineEdit * lSaveSettingPath; // only live in ProgramSettigns() QString analysisPath;
QLineEdit * lAnalysisPath; // only live in ProgramSettigns() QString dataPath;
QLineEdit * lDataPath; // only live in ProgramSettigns() QString IPList;
QString DatabaseIP;
QString DatabaseName;
QString ElogIP;
QLineEdit * lIPDomain; //------------- experiment settings
QLineEdit * lDatbaseIP; bool isGitExist;
QLineEdit * lDatbaseName; bool useGit;
QLineEdit * lElogIP; QString expName;
QString rawDataFolder;
QString settingFilePath; unsigned int runID;
QString analysisPath; unsigned int elogID;
QString dataPath;
QString IPListStr;
QStringList IPList;
QString DatabaseIP;
QString DatabaseName;
QString ElogIP;
//------------- experiment settings
bool isGitExist;
bool useGit;
QString expName;
QString rawDataFolder;
unsigned int runID;
unsigned int elogID;
}; };