#ifndef SCOPE_H #define SCOPE_H #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "macro.h" #include "ClassDigitizer.h" #include "CustomThreads.h" #include "CustomWidgets.h" //^==================================================== //^==================================================== class Scope : public QMainWindow{ Q_OBJECT public: Scope(Digitizer ** digi, unsigned int nDigi, ReadDataThread ** readDataThread, QMainWindow * parent = nullptr); ~Scope(); void closeEvent(QCloseEvent * event){ StopScope(); emit CloseWindow(); event->accept(); } public slots: void StartScope(); void StopScope(); void UpdateScope(); void ReadSettingsFromBoard(); void UpdatePanelFromMomeory(); signals: void CloseWindow(); void SendLogMsg(const QString &msg); void TellACQOnOff(const bool onOff); void UpdateScaler(); void UpdateOtherPanels(); private: void SetUpComboBoxSimple(RComboBox * &cb, QString str, int row, int col); void SetUpComboBox(RComboBox * &cb, QString str, int row, int col, const Reg para); void SetUpSpinBox(RSpinBox * &sb, QString str, int row, int col, const Reg para); void CleanUpSettingsGroupBox(); void SetUpPHAPanel(); void SetUpPSDPanel(); void EnableControl(bool enable); void UpdateComobox(RComboBox * &cb, const Reg para); void UpdateSpinBox(RSpinBox * &sb, const Reg para); void UpdatePHAPanel(); void UpdatePSDPanel(); Digitizer ** digi; unsigned short nDigi; unsigned short ID; // the id of digi, index of cbScopeDigi int ch2ns; bool traceOn[MaxNDigitizer]; ReadDataThread ** readDataThread; TimingThread * updateTraceThread; bool enableSignalSlot; RChart * plot; RChartView * plotView; QLineSeries * dataTrace[MaxNumberOfTrace]; // 2 analog, 2 digi RComboBox * cbScopeDigi; RComboBox * cbScopeCh; QPushButton * bnScopeStart; QPushButton * bnScopeStop; QPushButton * bnReadSettingsFromBoard; QLineEdit * leTriggerRate; QGroupBox * settingGroup; QGridLayout * settingLayout; /// common to PSD and PHA RSpinBox * sbReordLength; RSpinBox * sbPreTrigger; RSpinBox * sbDCOffset; RComboBox * cbDynamicRange; RComboBox * cbPolarity; /// PHA RSpinBox * sbInputRiseTime; RSpinBox * sbTriggerHoldOff; RSpinBox * sbThreshold; RComboBox * cbSmoothingFactor; RSpinBox * sbTrapRiseTime; RSpinBox * sbTrapFlatTop; RSpinBox * sbDecayTime; RSpinBox * sbPeakingTime; RSpinBox * sbPeakHoldOff; RComboBox * cbPeakAvg; RComboBox * cbBaselineAvg; RComboBox * cbAnaProbe1; RComboBox * cbAnaProbe2; RComboBox * cbDigiProbe1; RComboBox * cbDigiProbe2; /// PSD RSpinBox * sbShortGate; RSpinBox * sbLongGate; RSpinBox * sbGateOffset; }; #endif