added ELog, Influx, tested
This commit is contained in:
		
							parent
							
								
									9e514216af
								
							
						
					
					
						commit
						5719171bdc
					
				
							
								
								
									
										216
									
								
								FSUDAQ.cpp
									
									
									
									
									
								
							
							
						
						
									
										216
									
								
								FSUDAQ.cpp
									
									
									
									
									
								
							| 
						 | 
				
			
			@ -11,6 +11,8 @@
 | 
			
		|||
#include <QDialog>
 | 
			
		||||
#include <QFileDialog>
 | 
			
		||||
#include <QScrollArea>
 | 
			
		||||
#include <QProcess>
 | 
			
		||||
#include <QMessageBox>
 | 
			
		||||
 | 
			
		||||
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent){
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -58,40 +60,48 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent){
 | 
			
		|||
  }
 | 
			
		||||
 | 
			
		||||
  {//^====================== influx and Elog
 | 
			
		||||
    QGroupBox * otherBox = new QGroupBox("Misc.", mainLayoutWidget);
 | 
			
		||||
    QGroupBox * otherBox = new QGroupBox("Database and Elog", mainLayoutWidget);
 | 
			
		||||
    layoutMain->addWidget(otherBox);
 | 
			
		||||
    QGridLayout * layout = new QGridLayout(otherBox);
 | 
			
		||||
    layout->setSpacing(2);
 | 
			
		||||
    layout->setVerticalSpacing(1);
 | 
			
		||||
 | 
			
		||||
    int rowID = 0;
 | 
			
		||||
    bnLock = new QPushButton("Unlock", this);
 | 
			
		||||
    bnLock->setChecked(true);
 | 
			
		||||
    layout->addWidget(bnLock, rowID, 0);
 | 
			
		||||
 | 
			
		||||
    QLabel * lbInfluxIP = new QLabel("Influx IP : ", this);
 | 
			
		||||
    lbInfluxIP->setAlignment(Qt::AlignRight | Qt::AlignCenter);
 | 
			
		||||
    layout->addWidget(lbInfluxIP, 0, 0);
 | 
			
		||||
    layout->addWidget(lbInfluxIP, rowID, 1);
 | 
			
		||||
 | 
			
		||||
    leInfluxIP = new QLineEdit(this);
 | 
			
		||||
    leInfluxIP->setReadOnly(true);
 | 
			
		||||
    layout->addWidget(leInfluxIP, 0, 1);
 | 
			
		||||
    layout->addWidget(leInfluxIP, rowID, 2);
 | 
			
		||||
 | 
			
		||||
    QLabel * lbDatabaseName = new QLabel("Database Name : ", this);
 | 
			
		||||
    lbDatabaseName->setAlignment(Qt::AlignRight | Qt::AlignCenter);
 | 
			
		||||
    layout->addWidget(lbDatabaseName, 0, 2);
 | 
			
		||||
    layout->addWidget(lbDatabaseName, rowID, 3);
 | 
			
		||||
 | 
			
		||||
    leDatabaseName = new QLineEdit(this);
 | 
			
		||||
    leDatabaseName->setReadOnly(true);
 | 
			
		||||
    layout->addWidget(leDatabaseName, 0, 3);
 | 
			
		||||
 | 
			
		||||
    layout->addWidget(leDatabaseName, rowID, 4);
 | 
			
		||||
 | 
			
		||||
    rowID ++;
 | 
			
		||||
    QLabel * lbElogIP = new QLabel("Elog IP : ", this);
 | 
			
		||||
    lbElogIP->setAlignment(Qt::AlignRight | Qt::AlignCenter);
 | 
			
		||||
    layout->addWidget(lbElogIP, 1, 0);
 | 
			
		||||
    layout->addWidget(lbElogIP, rowID, 1);
 | 
			
		||||
 | 
			
		||||
    leElogIP = new QLineEdit(this);
 | 
			
		||||
    leElogIP->setReadOnly(true);
 | 
			
		||||
    layout->addWidget(leElogIP, 1, 1);
 | 
			
		||||
    layout->addWidget(leElogIP, rowID, 2);
 | 
			
		||||
 | 
			
		||||
    bnLock = new QPushButton("Unlock", this);
 | 
			
		||||
    bnLock->setChecked(true);
 | 
			
		||||
    layout->addWidget(bnLock, 1, 3);
 | 
			
		||||
    QLabel * lbElogName = new QLabel("Elog Name : ", this);
 | 
			
		||||
    lbElogName->setAlignment(Qt::AlignRight | Qt::AlignCenter);
 | 
			
		||||
    layout->addWidget(lbElogName, rowID, 3);
 | 
			
		||||
 | 
			
		||||
    leElogName = new QLineEdit(this);
 | 
			
		||||
    leElogName->setReadOnly(true);
 | 
			
		||||
    layout->addWidget(leElogName, rowID, 4);
 | 
			
		||||
 | 
			
		||||
    connect(bnLock, &QPushButton::clicked, this, [=](){
 | 
			
		||||
      if( leInfluxIP->isReadOnly() ){
 | 
			
		||||
| 
						 | 
				
			
			@ -100,10 +110,17 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent){
 | 
			
		|||
        leInfluxIP->setReadOnly(false);
 | 
			
		||||
        leDatabaseName->setReadOnly(false);
 | 
			
		||||
        leElogIP->setReadOnly(false);
 | 
			
		||||
        leElogName->setReadOnly(false);
 | 
			
		||||
 | 
			
		||||
        leInfluxIP->setEnabled(true);
 | 
			
		||||
        leDatabaseName->setEnabled(true);
 | 
			
		||||
        leElogIP->setEnabled(true);
 | 
			
		||||
        leElogName->setEnabled(true);
 | 
			
		||||
 | 
			
		||||
        leInfluxIP->setStyleSheet("color : blue;");
 | 
			
		||||
        leDatabaseName->setStyleSheet("color : blue;");
 | 
			
		||||
        leElogIP->setStyleSheet("color : blue;");
 | 
			
		||||
        leElogName->setStyleSheet("color : blue;");
 | 
			
		||||
 | 
			
		||||
      }else{
 | 
			
		||||
        bnLock->setText("Unlock");
 | 
			
		||||
| 
						 | 
				
			
			@ -111,18 +128,23 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent){
 | 
			
		|||
        leInfluxIP->setReadOnly(true);
 | 
			
		||||
        leDatabaseName->setReadOnly(true);
 | 
			
		||||
        leElogIP->setReadOnly(true);
 | 
			
		||||
        leElogName->setReadOnly(true);
 | 
			
		||||
 | 
			
		||||
        leInfluxIP->setStyleSheet("");
 | 
			
		||||
        leDatabaseName->setStyleSheet("");
 | 
			
		||||
        leElogIP->setStyleSheet("");
 | 
			
		||||
        leElogName->setStyleSheet("");
 | 
			
		||||
 | 
			
		||||
        influxIP = leInfluxIP->text();
 | 
			
		||||
        dataBaseName = leDatabaseName->text();
 | 
			
		||||
        elogIP = leElogIP->text();
 | 
			
		||||
        elogName = leElogName->text();
 | 
			
		||||
 | 
			
		||||
        SaveProgramSettings();
 | 
			
		||||
 | 
			
		||||
        SetUpInflux();
 | 
			
		||||
 | 
			
		||||
        if( elogName != "" ) CheckElog();
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
    });
 | 
			
		||||
| 
						 | 
				
			
			@ -232,6 +254,11 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent){
 | 
			
		|||
  prefix = "temp";
 | 
			
		||||
  runID = 0;
 | 
			
		||||
  elogID = 0;
 | 
			
		||||
  elogName = "";
 | 
			
		||||
  elogUser = "";
 | 
			
		||||
  elogPWD = "";
 | 
			
		||||
  influxIP = "";
 | 
			
		||||
  dataBaseName = "";
 | 
			
		||||
  programSettingsFilePath = QDir::current().absolutePath() + "/programSettings.txt";
 | 
			
		||||
  LoadProgramSettings();
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -240,6 +267,8 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent){
 | 
			
		|||
 | 
			
		||||
  SetUpInflux();
 | 
			
		||||
 | 
			
		||||
  CheckElog();
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
MainWindow::~MainWindow(){
 | 
			
		||||
| 
						 | 
				
			
			@ -276,8 +305,12 @@ void MainWindow::OpenDataPath(){
 | 
			
		|||
  //qDebug() << fileDialog.selectedFiles();
 | 
			
		||||
  if( result > 0 ) {
 | 
			
		||||
    leDataPath->setText(fileDialog.selectedFiles().at(0));
 | 
			
		||||
    rawDataPath = leDataPath->text();
 | 
			
		||||
    bnStartACQ->setEnabled(true);
 | 
			
		||||
  }else{
 | 
			
		||||
    leDataPath->clear();
 | 
			
		||||
    rawDataPath = "";
 | 
			
		||||
    bnStartACQ->setEnabled(false);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  SaveProgramSettings();
 | 
			
		||||
| 
						 | 
				
			
			@ -304,6 +337,9 @@ void MainWindow::LoadProgramSettings(){
 | 
			
		|||
      if( count == 1 ) influxIP = line;
 | 
			
		||||
      if( count == 2 ) dataBaseName = line;
 | 
			
		||||
      if( count == 3 ) elogIP = line;
 | 
			
		||||
      if( count == 4 ) elogName = line;
 | 
			
		||||
      if( count == 5 ) elogUser = line;
 | 
			
		||||
      if( count == 6 ) elogPWD = line;
 | 
			
		||||
 | 
			
		||||
      count ++;
 | 
			
		||||
      line = in.readLine();
 | 
			
		||||
| 
						 | 
				
			
			@ -314,6 +350,17 @@ void MainWindow::LoadProgramSettings(){
 | 
			
		|||
    leInfluxIP->setText(influxIP);
 | 
			
		||||
    leDatabaseName->setText(dataBaseName);
 | 
			
		||||
    leElogIP->setText(elogIP);
 | 
			
		||||
    leElogName->setText(elogName);
 | 
			
		||||
 | 
			
		||||
    logMsgHTMLMode = false;
 | 
			
		||||
    LogMsg("Raw Data Path : " + rawDataPath);
 | 
			
		||||
    LogMsg("    Influx IP : " + influxIP);
 | 
			
		||||
    LogMsg("Database Name : " + dataBaseName);
 | 
			
		||||
    LogMsg("      Elog IP : " + elogIP);
 | 
			
		||||
    LogMsg("    Elog Name : " + elogName);
 | 
			
		||||
    LogMsg("    Elog User : " + elogUser);
 | 
			
		||||
    LogMsg("     Elog PWD : " + elogPWD);
 | 
			
		||||
    logMsgHTMLMode = true;
 | 
			
		||||
 | 
			
		||||
    //check is rawDataPath exist, if not, create one
 | 
			
		||||
    QDir rawDataDir;
 | 
			
		||||
| 
						 | 
				
			
			@ -343,6 +390,9 @@ void MainWindow::SaveProgramSettings(){
 | 
			
		|||
  file.write((influxIP+"\n").toStdString().c_str());
 | 
			
		||||
  file.write((dataBaseName+"\n").toStdString().c_str());
 | 
			
		||||
  file.write((elogIP+"\n").toStdString().c_str());
 | 
			
		||||
  file.write((elogName+"\n").toStdString().c_str());
 | 
			
		||||
  file.write((elogUser+"\n").toStdString().c_str());
 | 
			
		||||
  file.write((elogPWD+"\n").toStdString().c_str());
 | 
			
		||||
  file.write("//------------end of file.\n");
 | 
			
		||||
  
 | 
			
		||||
  file.close();
 | 
			
		||||
| 
						 | 
				
			
			@ -494,6 +544,8 @@ void MainWindow::OpenDigitizers(){
 | 
			
		|||
  WaitForDigitizersOpen(false);
 | 
			
		||||
  bnStopACQ->setEnabled(false);
 | 
			
		||||
 | 
			
		||||
  if( rawDataPath == "" ) bnStartACQ->setEnabled(false);
 | 
			
		||||
 | 
			
		||||
  SetupScalar();
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -700,8 +752,11 @@ void MainWindow::UpdateScalar(){
 | 
			
		|||
  lbLastUpdateTime->setText("Last update: " + QDateTime::currentDateTime().toString("MM.dd hh:mm:ss"));
 | 
			
		||||
 | 
			
		||||
  //printf("----------------------\n");
 | 
			
		||||
  uint64_t totalFileSize = 0;
 | 
			
		||||
  for( unsigned int iDigi = 0; iDigi < nDigi; iDigi++){
 | 
			
		||||
    digiMTX[iDigi].lock();
 | 
			
		||||
 | 
			
		||||
    if( chkSaveData->isChecked() ) totalFileSize += digi[iDigi]->GetData()->GetTotalFileSize();
 | 
			
		||||
    for( int i = 0; i < digi[iDigi]->GetNChannels(); i++){
 | 
			
		||||
      if( digi[iDigi]->GetChannelOnOff(i) == true ) {
 | 
			
		||||
        //printf(" %3d %2d | %7.2f %7.2f \n", digi[iDigi]->GetSerialNumber(), i, digi[iDigi]->GetData()->TriggerRate[i], digi[iDigi]->GetData()->NonPileUpRate[i]);
 | 
			
		||||
| 
						 | 
				
			
			@ -718,6 +773,7 @@ void MainWindow::UpdateScalar(){
 | 
			
		|||
  }
 | 
			
		||||
 | 
			
		||||
  if( influx ){
 | 
			
		||||
    if( chkSaveData->isChecked() ) influx->AddDataPoint("FileSize value=" + std::to_string(totalFileSize));
 | 
			
		||||
    influx->WriteData(dataBaseName.toStdString());
 | 
			
		||||
    influx->ClearDataPointsBuffer();
 | 
			
		||||
  }
 | 
			
		||||
| 
						 | 
				
			
			@ -726,7 +782,6 @@ void MainWindow::UpdateScalar(){
 | 
			
		|||
 | 
			
		||||
//***************************************************************
 | 
			
		||||
//***************************************************************
 | 
			
		||||
 | 
			
		||||
void MainWindow::StartACQ(){
 | 
			
		||||
  if( digi == nullptr ) return;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -770,13 +825,31 @@ void MainWindow::StartACQ(){
 | 
			
		|||
  bnStartACQ->setEnabled(false);
 | 
			
		||||
  bnStopACQ->setEnabled(true);
 | 
			
		||||
  bnOpenScope->setEnabled(false);
 | 
			
		||||
 | 
			
		||||
  {//^=== elog and database
 | 
			
		||||
    if( influx ){
 | 
			
		||||
      influx->AddDataPoint("RunID value=" + std::to_string(runID));
 | 
			
		||||
      influx->AddDataPoint("SavingData,ExpName=" +  elogName.toStdString() + " value=1");
 | 
			
		||||
      influx->WriteData(dataBaseName.toStdString());
 | 
			
		||||
      influx->ClearDataPointsBuffer();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if( elogID > 0 && chkSaveData->isChecked() ){
 | 
			
		||||
      QString msg = "================================= Run-" + QString::number(runID).rightJustified(3, '0') + "<p>" 
 | 
			
		||||
                    + QDateTime::currentDateTime().toString("MM.dd hh:mm:ss") + "<p>"
 | 
			
		||||
                    + startComment + "<p>"
 | 
			
		||||
                    "---------------------------------<p>";
 | 
			
		||||
      WriteElog(msg, "Run Log", "Run", runID);
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void MainWindow::StopACQ(){
 | 
			
		||||
  if( digi == nullptr ) return;
 | 
			
		||||
 | 
			
		||||
  bool commentResult = true;
 | 
			
		||||
  if( chkSaveData->isChecked() ) commentResult = CommentDialog(true);
 | 
			
		||||
  if( chkSaveData->isChecked() ) commentResult = CommentDialog(false);
 | 
			
		||||
  if( commentResult == false) return;
 | 
			
		||||
 | 
			
		||||
  if( chkSaveData->isChecked() ) {
 | 
			
		||||
| 
						 | 
				
			
			@ -816,6 +889,29 @@ void MainWindow::StopACQ(){
 | 
			
		|||
  bnStartACQ->setEnabled(true);
 | 
			
		||||
  bnStopACQ->setEnabled(false);
 | 
			
		||||
  bnOpenScope->setEnabled(true);
 | 
			
		||||
 | 
			
		||||
  {//^=== elog and database
 | 
			
		||||
    if( influx ){
 | 
			
		||||
      influx->AddDataPoint("SavingData,ExpName=" +  elogName.toStdString() + " value=0");
 | 
			
		||||
      influx->WriteData(dataBaseName.toStdString());
 | 
			
		||||
      influx->ClearDataPointsBuffer();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if( elogID > 0 && chkSaveData->isChecked()){
 | 
			
		||||
      QString msg = QDateTime::currentDateTime().toString("MM.dd hh:mm:ss") + "<p>" + stopComment + "<p>";
 | 
			
		||||
      uint64_t totalFileSize = 0;
 | 
			
		||||
      for(unsigned int i = 0 ; i < nDigi; i++){
 | 
			
		||||
        uint64_t fileSize = digi[i]->GetData()->GetTotalFileSize();
 | 
			
		||||
        totalFileSize += fileSize;
 | 
			
		||||
        msg += "Digi-" + QString::number(digi[i]->GetSerialNumber()) + " Size : " + QString::number(fileSize/1024./1024., 'f', 2) + " MB<p>";
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      msg += "..... Total File Size : " + QString::number(totalFileSize/1024./1024., 'f', 2) + "MB<p>" +              
 | 
			
		||||
             "=================================<p>";  
 | 
			
		||||
      AppendElog(msg);
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void MainWindow::AutoRun(){ //TODO
 | 
			
		||||
| 
						 | 
				
			
			@ -1071,6 +1167,98 @@ void MainWindow::SetUpInflux(){
 | 
			
		|||
    influx = nullptr;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if( influx == nullptr ){
 | 
			
		||||
    leInfluxIP->setEnabled(false);
 | 
			
		||||
    leDatabaseName->setEnabled(false);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void MainWindow::CheckElog(){
 | 
			
		||||
 | 
			
		||||
  if( elogIP != "" && elogName != "" &&  elogUser != "" && elogPWD != "" ){
 | 
			
		||||
    WriteElog("Testing communication.", "Testing communication.", "Other", 0);
 | 
			
		||||
    AppendElog("test append elog.");
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if( elogID >= 0 ) {
 | 
			
		||||
    LogMsg("Elog testing OK.");
 | 
			
		||||
    return;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  //QMessageBox::information(nullptr, "Information", "Elog write Fail.\nPlease set the elog User and PWD in the programSettings.txt.\nline 6 = user.\nline 7 = pwd.");
 | 
			
		||||
  LogMsg("Elog testing Fail");
 | 
			
		||||
  if( elogIP == "" ) LogMsg("no elog IP");
 | 
			
		||||
  if( elogName == "" ) LogMsg("no elog Name");
 | 
			
		||||
  if( elogUser == "" ) LogMsg("no elog User name. Please set it in the programSettings.txt, line 6.");
 | 
			
		||||
  if( elogPWD == "" ) LogMsg("no elog User pwd. Please set it in the programSettings.txt, line 7.");
 | 
			
		||||
  if( elogID < 0 ) LogMsg("Possible elog IP, Name, User name, or pwd incorrect");
 | 
			
		||||
  leElogIP->setEnabled(false);
 | 
			
		||||
  leElogName->setEnabled(false);
 | 
			
		||||
  
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void MainWindow::WriteElog(QString htmlText, QString subject, QString category, int runNumber){
 | 
			
		||||
 | 
			
		||||
  //if( elogID < 0 ) return;
 | 
			
		||||
  if( elogName == "" ) return;
 | 
			
		||||
  if( elogUser == "" ) return;
 | 
			
		||||
  if( elogPWD == "" ) return;
 | 
			
		||||
  QStringList arg;
 | 
			
		||||
  arg << "-h" << elogIP << "-p" << "8080" << "-l" << elogName << "-u" << elogUser << elogPWD << "-a" << "Author=FSUDAQ";
 | 
			
		||||
  if( runNumber > 0 ) arg << "-a" << "RunNo=" + QString::number(runNumber);
 | 
			
		||||
  if( category != "" ) arg << "-a" << "Category=" + category;
 | 
			
		||||
  arg << "-a" << "Subject=" + subject 
 | 
			
		||||
      << "-n " << "2" <<  htmlText  ;
 | 
			
		||||
  QProcess elogBash(this);
 | 
			
		||||
  elogBash.start("elog", arg); 
 | 
			
		||||
  elogBash.waitForFinished();
 | 
			
		||||
  QString output = QString::fromUtf8(elogBash.readAllStandardOutput());
 | 
			
		||||
 | 
			
		||||
  QRegularExpression regex("ID=(\\d+)");
 | 
			
		||||
 | 
			
		||||
  QRegularExpressionMatch match = regex.match(output);
 | 
			
		||||
  if (match.hasMatch()) {
 | 
			
		||||
    QString id = match.captured(1);
 | 
			
		||||
    elogID = id.toInt();
 | 
			
		||||
  } else {
 | 
			
		||||
    elogID = -1;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void MainWindow::AppendElog(QString appendHtmlText){
 | 
			
		||||
  if( elogID < 1 ) return;
 | 
			
		||||
  if( elogName == "" ) return;
 | 
			
		||||
  
 | 
			
		||||
  QProcess elogBash(this);
 | 
			
		||||
  QStringList arg;
 | 
			
		||||
  arg << "-h" << elogIP << "-p" << "8080" << "-l" << elogName << "-u" << elogUser << elogPWD << "-w" << QString::number(elogID);
 | 
			
		||||
  //retrevie the elog
 | 
			
		||||
  elogBash.start("elog", arg); 
 | 
			
		||||
  elogBash.waitForFinished();
 | 
			
		||||
  QString output = QString::fromUtf8(elogBash.readAllStandardOutput());
 | 
			
		||||
  //qDebug() << output;
 | 
			
		||||
  QString separator = "========================================";
 | 
			
		||||
  int index = output.indexOf(separator);
 | 
			
		||||
  if( index != -1){
 | 
			
		||||
    QString originalHtml = output.mid(index + separator.length());
 | 
			
		||||
    arg.clear();
 | 
			
		||||
    arg << "-h" << elogIP << "-p" << "8080" << "-l" << elogName << "-u" << elogUser << elogPWD << "-e" << QString::number(elogID)
 | 
			
		||||
        << "-n" << "2" << originalHtml + "<br>" + appendHtmlText;
 | 
			
		||||
    
 | 
			
		||||
    elogBash.start("elog", arg); 
 | 
			
		||||
    elogBash.waitForFinished();
 | 
			
		||||
    output = QString::fromUtf8(elogBash.readAllStandardOutput());
 | 
			
		||||
    index = output.indexOf("ID=");
 | 
			
		||||
    if( index != -1 ){
 | 
			
		||||
      elogID = output.mid(index+3).toInt();
 | 
			
		||||
    }else{
 | 
			
		||||
      elogID = -1;
 | 
			
		||||
    }
 | 
			
		||||
  }else{
 | 
			
		||||
    elogID = -1;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//***************************************************************
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										16
									
								
								FSUDAQ.h
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								FSUDAQ.h
									
									
									
									
									
								
							| 
						 | 
				
			
			@ -66,6 +66,10 @@ private slots:
 | 
			
		|||
 | 
			
		||||
  void SetUpInflux();
 | 
			
		||||
 | 
			
		||||
  void CheckElog();
 | 
			
		||||
  void WriteElog(QString htmlText, QString subject, QString category, int runNumber);
 | 
			
		||||
  void AppendElog(QString appendHtmlText);
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
 | 
			
		||||
  Digitizer ** digi;
 | 
			
		||||
| 
						 | 
				
			
			@ -75,10 +79,7 @@ private:
 | 
			
		|||
  QString rawDataPath;
 | 
			
		||||
  QString prefix;
 | 
			
		||||
  unsigned int runID;
 | 
			
		||||
  unsigned int elogID;
 | 
			
		||||
  QString influxIP;
 | 
			
		||||
  QString dataBaseName;
 | 
			
		||||
  QString elogIP;
 | 
			
		||||
  int elogID;
 | 
			
		||||
 | 
			
		||||
  QPushButton * bnOpenDigitizers;
 | 
			
		||||
  QPushButton * bnCloseDigitizers;
 | 
			
		||||
| 
						 | 
				
			
			@ -94,12 +95,19 @@ private:
 | 
			
		|||
  //@----- influx
 | 
			
		||||
  InfluxDB * influx;
 | 
			
		||||
 | 
			
		||||
  QString influxIP;
 | 
			
		||||
  QString dataBaseName;
 | 
			
		||||
  QLineEdit * leInfluxIP;
 | 
			
		||||
  QLineEdit * leDatabaseName;
 | 
			
		||||
  QPushButton * bnLock;
 | 
			
		||||
  
 | 
			
		||||
  //@----- Elog
 | 
			
		||||
  QString elogIP;
 | 
			
		||||
  QString elogName;
 | 
			
		||||
  QString elogUser;
 | 
			
		||||
  QString elogPWD;
 | 
			
		||||
  QLineEdit * leElogIP;
 | 
			
		||||
  QLineEdit * leElogName;
 | 
			
		||||
 | 
			
		||||
  //@----- log msg
 | 
			
		||||
  QPlainTextEdit * logInfo;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -11,7 +11,7 @@ QT += core widgets charts
 | 
			
		|||
#QMAKE_CXXFLAGS += `root-config --cflags --glibs`
 | 
			
		||||
#LIBS += -lCAENDigitizer  `root-config --cflags --glibs`
 | 
			
		||||
 | 
			
		||||
#QMAKE_CXXFLAGS += -g
 | 
			
		||||
QMAKE_CXXFLAGS += -g
 | 
			
		||||
LIBS += -lCAENDigitizer -lcurl
 | 
			
		||||
 | 
			
		||||
# You can make your code fail to compile if you use deprecated APIs.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,6 +4,8 @@ This is a DAQ for 1st gen CAEN digitizer for V1725, V17255S, V1230 with PHA and
 | 
			
		|||
 | 
			
		||||
It has scope (updated every half-sec), allow full control of the digitizer (except LVDS), and allow saving waevform.
 | 
			
		||||
 | 
			
		||||
It can be connected to InfluxDB v1.8 and Elog.
 | 
			
		||||
 | 
			
		||||
# Required / Development enviroment
 | 
			
		||||
 | 
			
		||||
Ubuntu 22.04
 | 
			
		||||
| 
						 | 
				
			
			@ -14,7 +16,11 @@ CAENCOmm_v1.5.3
 | 
			
		|||
 | 
			
		||||
CAENDigitizer_v2.17.1
 | 
			
		||||
 | 
			
		||||
`sudo apt install qt6-base-dev libcurl4-openssl-dev libqt6charts6-dev`
 | 
			
		||||
`sudo apt install qt6-base-dev libcurl4-openssl-dev libqt6charts6-dev elog`
 | 
			
		||||
 | 
			
		||||
The elog installed using apt is 3.1.3. If a higher version is needed. Please go to https://elog.psi.ch/elog/
 | 
			
		||||
 | 
			
		||||
The libcurl4 is need for pushing data to InfluxDB v1.8
 | 
			
		||||
 | 
			
		||||
# Compile
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue
	
	Block a user