added Sync panel
This commit is contained in:
		
							parent
							
								
									cad68c2e7c
								
							
						
					
					
						commit
						407924f863
					
				|  | @ -26,28 +26,27 @@ public: | |||
|   void SetSaveData(bool onOff)  {this->isSaveData = onOff;} | ||||
|   void SetScopeMode(bool onOff) {this->isScope = onOff;} | ||||
| 
 | ||||
|   void go(){ | ||||
|     mutex.lock(); | ||||
|     condition.wakeAll(); | ||||
|     mutex.unlock(); | ||||
|   } | ||||
|   // void go(){
 | ||||
|   //   mutex.lock();
 | ||||
|   //   condition.wakeAll();
 | ||||
|   //   mutex.unlock();
 | ||||
|   // }
 | ||||
| 
 | ||||
|   void run(){ | ||||
| 
 | ||||
|     stop = false; | ||||
| 
 | ||||
|     mutex.lock(); | ||||
|     condition.wait(&mutex); | ||||
|     mutex.unlock(); | ||||
|     // mutex.lock();
 | ||||
|     // condition.wait(&mutex);
 | ||||
|     // mutex.unlock();
 | ||||
| 
 | ||||
|     clock_gettime(CLOCK_REALTIME, &t0); | ||||
|     printf("--- %d, %ld nsec \n", ID, t0.tv_nsec); | ||||
|     ta = t0; | ||||
|     // clock_gettime(CLOCK_REALTIME, &t1);
 | ||||
| 
 | ||||
|     digi->StartACQ(); | ||||
| 
 | ||||
|     usleep(1000); // wait for some data;
 | ||||
|     // digi->StartACQ();
 | ||||
|     // usleep(1000); // wait for some data;
 | ||||
| 
 | ||||
|     do{ | ||||
|        | ||||
|  | @ -106,8 +105,8 @@ private: | |||
|   bool isScope; | ||||
|   unsigned long readCount;  | ||||
| 
 | ||||
|   QMutex mutex; | ||||
|   QWaitCondition condition; | ||||
|   // QMutex mutex;
 | ||||
|   // QWaitCondition condition;
 | ||||
| }; | ||||
| 
 | ||||
| //^#======================================================= Timing Thread
 | ||||
|  |  | |||
							
								
								
									
										74
									
								
								FSUDAQ.cpp
									
									
									
									
									
								
							
							
						
						
									
										74
									
								
								FSUDAQ.cpp
									
									
									
									
									
								
							|  | @ -834,7 +834,8 @@ void MainWindow::StartACQ(){ | |||
|     LogMsg("<font style=\"color: orange;\">===================== <b>Start a non-save Run</b></font>"); | ||||
|   } | ||||
| 
 | ||||
|   for( unsigned int i = 0; i < nDigi ; i++){ | ||||
|   //assume master board is the 0-th board
 | ||||
|   for( int i = (int) nDigi-1; i >= 0 ; i--){ | ||||
|     if( chkSaveData->isChecked() ) { | ||||
|       if( digi[i]->GetData()->OpenSaveFile((rawDataPath + "/" + prefix + "_" + QString::number(runID).rightJustified(3, '0')).toStdString()) == false ) { | ||||
|         LogMsg("Cannot open save file : " + QString::fromStdString(digi[i]->GetData()->GetOutFileName() ) + ". Probably read-only?"); | ||||
|  | @ -846,14 +847,16 @@ void MainWindow::StartACQ(){ | |||
|     digi[i]->WriteRegister(DPP::SoftwareClear_W, 1); | ||||
|     digi[i]->GetData()->ClearData(); | ||||
| 
 | ||||
|     digi[i]->StartACQ(); | ||||
| 
 | ||||
|     readDataThread[i]->start(); | ||||
|   } | ||||
|   if( chkSaveData->isChecked() ) SaveLastRunFile(); | ||||
| 
 | ||||
|   printf("------------ wait for 2 sec \n"); | ||||
|   usleep(2000*1000); | ||||
|   printf("------------ Go! \n"); | ||||
|   for( unsigned int i = 0; i < nDigi; i++) readDataThread[i]->go(); | ||||
|   // printf("------------ wait for 2 sec \n");
 | ||||
|   // usleep(1000*1000);
 | ||||
|   // printf("------------ Go! \n");
 | ||||
|   // for( unsigned int i = 0; i < nDigi; i++) readDataThread[i]->go();
 | ||||
| 
 | ||||
|   scalarThread->start(); | ||||
| 
 | ||||
|  | @ -973,14 +976,67 @@ void MainWindow::AutoRun(){ //TODO | |||
| 
 | ||||
| void MainWindow::SetSyncMode(){ | ||||
| 
 | ||||
|   // No sync
 | ||||
|   QDialog dialog; | ||||
|   dialog.setWindowTitle("Board Synchronization"); | ||||
| 
 | ||||
|   // using external start ( TRG-OUT (S-IN) --> S-IN )
 | ||||
|   QVBoxLayout * layout = new QVBoxLayout(&dialog); | ||||
| 
 | ||||
|   // using SW ( TRG-OUT(RUN) --> S-IN)
 | ||||
|   QLabel * lbInfo1 = new QLabel("This will reset 0x8100 and 0x811C \nMaster must be the 1st board.", &dialog); | ||||
|   lbInfo1->setStyleSheet("color : red;"); | ||||
| 
 | ||||
|   // using external Clock ( TRG-OUT(RUN) --> S-IN )
 | ||||
|   QPushButton * bnNoSync = new QPushButton("No Sync"); | ||||
|   QPushButton * bnMethod1 = new QPushButton("Software TRG-OUT --> TRG-IN (within 100 ticks)"); | ||||
|   QPushButton * bnMethod2 = new QPushButton("Software TRG-OUT --> S-IN (within 20 ticks)"); | ||||
|   QPushButton * bnMethod3 = new QPushButton("External TRG-OUT --> S-IN "); | ||||
| 
 | ||||
|   layout->addWidget(lbInfo1, 0); | ||||
|   layout->addWidget( bnNoSync, 2); | ||||
|   layout->addWidget(bnMethod1, 3); | ||||
|   layout->addWidget(bnMethod2, 4); | ||||
|   layout->addWidget(bnMethod3, 5); | ||||
| 
 | ||||
|   bnNoSync->setFixedHeight(40); | ||||
|   bnMethod1->setFixedHeight(40); | ||||
|   bnMethod2->setFixedHeight(40); | ||||
|   bnMethod3->setFixedHeight(40); | ||||
| 
 | ||||
|   connect(bnNoSync, &QPushButton::clicked, [&](){ | ||||
|     for(unsigned int i = 0; i < nDigi; i++){ | ||||
|       digi[i]->WriteRegister(DPP::AcquisitionControl, 0); | ||||
|       digi[i]->WriteRegister(DPP::FrontPanelIOControl, 0); | ||||
|     } | ||||
|     dialog.accept(); | ||||
|   }); | ||||
|    | ||||
|   connect(bnMethod1, &QPushButton::clicked, [&](){ | ||||
|     digi[0]->WriteRegister(DPP::AcquisitionControl, 0); | ||||
|     digi[0]->WriteRegister(DPP::FrontPanelIOControl, 0x10000); //RUN
 | ||||
|     for(unsigned int i = 1; i < nDigi; i++){ | ||||
|       digi[i]->WriteRegister(DPP::AcquisitionControl, 2); | ||||
|       digi[i]->WriteRegister(DPP::FrontPanelIOControl, 0x10000); // S-IN
 | ||||
|     } | ||||
|     dialog.accept(); | ||||
|   }); | ||||
|    | ||||
|   connect(bnMethod2, &QPushButton::clicked, [&](){ | ||||
|     digi[0]->WriteRegister(DPP::AcquisitionControl, 0); | ||||
|     digi[0]->WriteRegister(DPP::FrontPanelIOControl, 0x10000); //RUN
 | ||||
|     for(unsigned int i = 1; i < nDigi; i++){ | ||||
|       digi[i]->WriteRegister(DPP::AcquisitionControl, 1); | ||||
|       digi[i]->WriteRegister(DPP::FrontPanelIOControl, 0x30000); // S-IN
 | ||||
|     } | ||||
|     dialog.accept(); | ||||
|   });   | ||||
| 
 | ||||
|   connect(bnMethod3, &QPushButton::clicked, [&](){ | ||||
|     for(unsigned int i = 0; i < nDigi; i++){ | ||||
|       digi[i]->WriteRegister(DPP::AcquisitionControl, 1); | ||||
|       digi[i]->WriteRegister(DPP::FrontPanelIOControl, 0x30000); // S-IN
 | ||||
|     } | ||||
|     dialog.accept(); | ||||
|   }); | ||||
| 
 | ||||
|   dialog.exec(); | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -393,7 +393,7 @@ namespace DPP { | |||
| 
 | ||||
|     const std::vector<std::pair<std::string, unsigned int>> ListStartStopMode = {{"SW controlled", 0}, | ||||
|                                                                                  {"S-IN/GPI controlled", 1}, | ||||
|                                                                                  {"1st Trigger", 2}, | ||||
|                                                                                  {"1st TRG-IN", 2}, | ||||
|                                                                                  {"LVDS controlled", 3}}; | ||||
| 
 | ||||
|     const std::vector<std::pair<std::string, unsigned int>> ListACQStartArm = {{"ACQ STOP", 0}, | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	Block a user