forked from AustralianSynchrotron/ctgui
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdetector.h
More file actions
185 lines (149 loc) · 4.69 KB
/
detector.h
File metadata and controls
185 lines (149 loc) · 4.69 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
#ifndef DETECTOR_H
#define DETECTOR_H
#include <QObject>
#include <qtpv.h>
#include <QTimer>
#include <QDebug>
class Detector : public QObject {
Q_OBJECT;
public:
enum Camera {
NONE=0,
PCOedge2B,
PCOedge3B,
PCOedgeFibre,
ScintX,
HamaPapa,
Argus,
CPro,
HamaMama,
Xenia,
XeniaPPS,
BYPV
};
enum ImageFormat {
UNDEFINED=0,
TIFF,
HDF
};
static QString cameraName(Camera cam);
static const QList<Camera> knownCameras;
static Camera camera(const QString & _cameraName);
private:
QEpicsPv * setExposurePv; // AcquireTime
QEpicsPv * exposurePv; // AcquireTime (_RBV)
QEpicsPv * periodPv; // AcquirePeriod
QEpicsPv * numberPv; //NumImages
QEpicsPv * counterPv; // NumCapture
QEpicsPv * triggerModePv;//TriggerMode
QEpicsPv * imageModePv;//ImageMode
QEpicsPv * aqPv; //Acquire
QEpicsPv * enableTiffPv; // TIFF:EnableCallbacks
QEpicsPv * pathTiffPv;
QEpicsPv * pathSetTiffPv;
QEpicsPv * pathExistsTiffPv;
QEpicsPv * nameTiffPv;
QEpicsPv * nameTemplateTiffPv;
QEpicsPv * fileNumberTiffPv;
QEpicsPv * lastNameTiffPv;
QEpicsPv * autoSaveTiffPv;
QEpicsPv * autoIncrementTiffPv;
QEpicsPv * writeStatusTiffPv;
QEpicsPv * writeProggressTiffPv;
QEpicsPv * queUseTiffPv;
QEpicsPv * enableHdfPv; // HDF:EnableCallbacks
QEpicsPv * pathHdfPv;
QEpicsPv * pathSetHdfPv;
QEpicsPv * pathExistsHdfPv;
QEpicsPv * nameHdfPv;
QEpicsPv * nameTemplateHdfPv;
QEpicsPv * lastNameHdfPv;
QEpicsPv * autoSaveHdfPv;
QEpicsPv * autoIncrementHdfPv;
QEpicsPv * writeStatusHdfPv;
QEpicsPv * writeModeHdfPv;
QEpicsPv * writeProggressHdfPv;
QEpicsPv * captureTargetHdfPv;
QEpicsPv * captureProgressHdfPv;
QEpicsPv * captureHdfPv;
QEpicsPv * captureStatusHdfPv;
QEpicsPv * queUseHdfPv;
bool _con;
bool _hdf;
Camera _camera;
QString cameraPv;
QString _nameTiff;
QString _nameTemplateTiff;
QString _lastNameTiff;
QString _pathTiff;
QString _nameHdf;
QString _nameTemplateHdf;
QString _lastNameHdf;
QString _pathHdf;
QString _lastName;
public:
Detector(QObject * parent=0);
void setCamera(const QString & pvName);
void setCamera(Camera _cam);
inline const QString & pv() const {return cameraPv;}
inline double exposure() const {return _camera ? exposurePv->get().toDouble() : 0 ;}
inline double period() const { return _camera ? periodPv->get().toDouble() : 0 ; }
inline int number() const {return _camera ? numberPv->get().toInt() : 0 ;}
inline int counter() const {return _camera ? counterPv->get().toInt() : 0 ;}
inline int triggerMode() const {return _camera ? triggerModePv->get().toInt() : 0 ;}
inline const QString triggerModeString() const {return _camera ? triggerModePv->getEnumString() : QString() ;}
inline int imageMode() const {return _camera ? imageModePv->get().toInt() : 0 ;}
inline const QString imageModeString() const {return _camera ? imageModePv->getEnumString() : QString() ;}
inline bool isAcquiring() const {return _camera ? aqPv->get().toInt() : false ;}
inline bool isConnected() const {return _camera && _con;}
inline bool hdfReady() const {return _camera && _hdf;}
ImageFormat imageFormat() const;
bool imageFormat(ImageFormat fmt) const;
const QString & path(ImageFormat fmt) const;
const QString & nameTemplate(ImageFormat fmt) const ;
const QString & name(ImageFormat fmt) const;
const QString & lastName(ImageFormat fmt = UNDEFINED) const;
bool pathExists(ImageFormat fmt = UNDEFINED) const ;
bool isWriting(ImageFormat fmt = UNDEFINED) const ;
void waitDone();
void waitWritten();
public slots:
bool setExposure(double val);
bool setPeriod(double val);
bool setNumber(int val);
bool setImageMode(int imode);
bool setTriggerMode(int tmode);
bool setHardwareTriggering(bool set);
bool setImageFormat(ImageFormat fmt);
bool setName(ImageFormat fmt, const QString & fname);
bool setNameTemplate(ImageFormat fmt, const QString & ntemp);
bool setPath(const QString & _path);
bool start();
void stop();
bool acquire();
bool prepareForAcq(ImageFormat fmt, int nofFrames);
bool setAutoSave(bool autoSave);
signals:
void connectionChanged(bool);
void parameterChanged();
void counterChanged(int);
void fileNumberChanged(int);
void lastNameChanged(const QString & name);
void writingError(const QString & filename);
void queTiffChanged(int);
void queHdfChanged(int);
void writingStarted();
void writingFinished();
void done();
private slots:
void updateConnection();
void updateParameter();
void updateCounter();
void updateWriting();
void updateFileNumberTiff();
void updatelastNameTiff();
void updateQueUseTiff();
void updatelastNameHdf();
void updateQueUseHdf();
};
#endif // DETECTOR_H