QXRD  0.11.16
qxrddetector.h
Go to the documentation of this file.
1 #ifndef QXRDDETECTOR_H
2 #define QXRDDETECTOR_H
3 
4 #include "qcepmacros.h"
5 #include "qcepproperty.h"
6 #include "qcepobject.h"
7 #include <QDoubleSpinBox>
8 #include <QComboBox>
9 #include "qcepimagedata-ptr.h"
10 #include "qxrdacquisition-ptr.h"
11 #include "qxrdexperiment-ptr.h"
12 #include "qxrddetector-ptr.h"
13 #include "qxrddetectorproxy-ptr.h"
16 #include <QScriptEngine>
17 #include <QSemaphore>
18 #include "qcepimagequeue.h"
19 #include "qxrdroicoordinates-ptr.h"
20 
21 class QxrdDetector : public QcepObject, public QEnableSharedFromThis<QxrdDetector>
22 {
23  Q_OBJECT
24 
25 public:
26  explicit QxrdDetector(QcepSettingsSaverWPtr saver,
27  QxrdExperimentWPtr expt,
29  int detType,
30  int detNum,
31  QcepObject *parent);
32  void initialize();
33  virtual ~QxrdDetector();
34 
37 
38  static QScriptValue toScriptValue(QScriptEngine *engine, const QxrdDetectorPtr &det);
39  static void fromScriptValue(const QScriptValue &obj, QxrdDetectorPtr &det);
40 
41  virtual void pushPropertiesToProxy(QxrdDetectorProxyPtr proxy);
43 
44  static void pushDefaultsToProxy(QxrdDetectorProxyPtr proxy, int detType);
45 
46  void printMessage(QString msg, QDateTime ts=QDateTime::currentDateTime()) const;
47  void criticalMessage(QString msg, QDateTime ts=QDateTime::currentDateTime()) const;
48  void statusMessage(QString msg, QDateTime ts=QDateTime::currentDateTime()) const;
49 
50  void readSettings(QSettings *settings, QString section);
51  void writeSettings(QSettings *settings, QString section);
52 
54 
55  enum {
59  };
60 
61 signals:
62 
63 public slots:
64  bool isEnabled();
65 
66  bool checkDetectorEnabled();
67 
68  virtual void startDetector();
69  virtual void stopDetector();
70 
71  virtual void onExposureTimeChanged();
72  virtual void beginAcquisition(double exposure);
73  virtual void endAcquisition();
74  virtual void shutdownAcquisition();
75 
76  void openControlWindow();
77 
79  void startOrStop(bool enabled);
80 
81  virtual void beginFrame();
84 
85  int roiCount();
87 
89  double scalerCounts(int chan);
90 
91 protected:
97 
98 private:
99  QMutex m_Mutex;
100  QSemaphore m_NAcquiredImages;
102 
103 public:
104  Q_PROPERTY(int detectorNumber READ get_DetectorNumber WRITE set_DetectorNumber STORED false)
105  QCEP_INTEGER_PROPERTY(DetectorNumber)
106 
107  Q_PROPERTY(int detectorType READ get_DetectorType WRITE set_DetectorType)
108  QCEP_INTEGER_PROPERTY(DetectorType)
109 
110  Q_PROPERTY(QString detectorTypeName READ get_DetectorTypeName WRITE set_DetectorTypeName STORED false)
111  QCEP_STRING_PROPERTY(DetectorTypeName)
112 
113  Q_PROPERTY(bool enabled READ get_Enabled WRITE set_Enabled)
114  QCEP_BOOLEAN_PROPERTY(Enabled)
115 
116  Q_PROPERTY(QString detectorName READ get_DetectorName WRITE set_DetectorName)
117  QCEP_STRING_PROPERTY(DetectorName)
118 
119  Q_PROPERTY(int nCols READ get_NCols WRITE set_NCols STORED false)
120  QCEP_INTEGER_PROPERTY(NCols)
121 
122  Q_PROPERTY(int nRows READ get_NRows WRITE set_NRows STORED false)
123  QCEP_INTEGER_PROPERTY(NRows)
124 
125  Q_PROPERTY(int hBinning READ get_HBinning WRITE set_HBinning STORED false)
126  QCEP_INTEGER_PROPERTY(HBinning)
127 
128  Q_PROPERTY(int vBinning READ get_VBinning WRITE set_VBinning STORED false)
129  QCEP_INTEGER_PROPERTY(VBinning)
130 
131  Q_PROPERTY(QString extension READ get_Extension WRITE set_Extension)
132  QCEP_STRING_PROPERTY(Extension)
133 };
134 
135 #endif // QXRDDETECTOR_H
QSharedPointer< QxrdDetectorControlWindow > QxrdDetectorControlWindowPtr
void statusMessage(QString msg, QDateTime ts=QDateTime::currentDateTime()) const
QSharedPointer< QxrdDetectorProxy > QxrdDetectorProxyPtr
virtual void pushPropertiesToProxy(QxrdDetectorProxyPtr proxy)
QxrdExperimentWPtr m_Experiment
Definition: qxrddetector.h:93
QcepImageBaseQueue m_AcquiredImages
Definition: qxrddetector.h:101
QxrdDetector(QcepSettingsSaverWPtr saver, QxrdExperimentWPtr expt, QxrdAcquisitionWPtr acq, int detType, int detNum, QcepObject *parent)
static QScriptValue toScriptValue(QScriptEngine *engine, const QxrdDetectorPtr &det)
virtual void onExposureTimeChanged()
void criticalMessage(QString msg, QDateTime ts=QDateTime::currentDateTime()) const
void printMessage(QString msg, QDateTime ts=QDateTime::currentDateTime()) const
QSharedPointer< QxrdROICoordinates > QxrdROICoordinatesPtr
QxrdExperimentWPtr experiment()
QString extension
Definition: qxrddetector.h:131
virtual void pullPropertiesfromProxy(QxrdDetectorProxyPtr proxy)
QString detectorTypeName
Definition: qxrddetector.h:110
QMutex m_Mutex
Definition: qxrddetector.h:99
QxrdAcquisitionWPtr m_Acquisition
Definition: qxrddetector.h:94
QWeakPointer< QxrdExperiment > QxrdExperimentWPtr
void openControlWindow()
bool checkDetectorEnabled()
void enqueueAcquiredFrame(QcepImageDataBasePtr img)
QxrdROICoordinatesPtr roi(int i)
void startOrStop(bool enabled)
QVector< double > QcepDoubleVector
Definition: qcepmacros.h:19
virtual QcepImageDataBasePtr acquireFrame()
virtual void beginFrame()
static void fromScriptValue(const QScriptValue &obj, QxrdDetectorPtr &det)
#define QCEP_INTEGER_PROPERTY(propname)
Definition: qcepproperty.h:698
QxrdDetectorProcessorPtr m_Processor
Definition: qxrddetector.h:95
void writeSettings(QSettings *settings, QString section)
void readSettings(QSettings *settings, QString section)
QcepSettingsSaverWPtr m_Saver
Definition: qxrddetector.h:92
virtual void startDetector()
QSharedPointer< QxrdDetectorProcessor > QxrdDetectorProcessorPtr
#define QCEP_STRING_PROPERTY(propname)
Definition: qcepproperty.h:664
QxrdDetectorProcessorPtr processor()
QxrdDetectorControlWindowPtr m_DetectorControlWindow
Definition: qxrddetector.h:96
QxrdAcquisitionWPtr acquisition()
#define QCEP_BOOLEAN_PROPERTY(propname)
Definition: qcepproperty.h:732
virtual void stopDetector()
virtual ~QxrdDetector()
QWeakPointer< QxrdAcquisition > QxrdAcquisitionWPtr
QString detectorName
Definition: qxrddetector.h:116
static void pushDefaultsToProxy(QxrdDetectorProxyPtr proxy, int detType)
virtual QcepImageDataBasePtr acquireFrameIfAvailable()
QcepDoubleVector scalerCounts()
virtual void shutdownAcquisition()
QSharedPointer< QxrdDetector > QxrdDetectorPtr
virtual void endAcquisition()
QSharedPointer< QcepImageDataBase > QcepImageDataBasePtr
void initialize()
QSemaphore m_NAcquiredImages
Definition: qxrddetector.h:100
virtual void beginAcquisition(double exposure)
QWeakPointer< QcepSettingsSaver > QcepSettingsSaverWPtr