ENLIGHTEN
Cross-platform desktop GUI for Wasatch Photonics spectrometers
Loading...
Searching...
No Matches
backend.h
Go to the documentation of this file.
1
23
24#ifndef BACKEND_H
25#define BACKEND_H
26
27#include "acquisitionworker.h"
28#include "camera.h"
30#include "nodelistmodel.h"
31
32#include <peak/data_stream/peak_data_stream.hpp>
33#include <peak/device/peak_device.hpp>
34#include <peak/device/peak_device_descriptor.hpp>
35#include <peak/node_map/peak_node_map.hpp>
36
37#include <QObject>
38#include <string>
39#include <vector>
40
41class BackEnd : public QObject
42{
43 Q_OBJECT
47
48public:
49 explicit BackEnd(QObject* parent = nullptr);
50 ~BackEnd() override;
51
52 // Getter functions for Q_PROPERTY
53 NodeListModel* nodeList() const;
54 bool acquisitionRunning() const;
55 void updateCameraList();
56 int sequencerDuration() const;
57
58 // Handling Cameras
59 Q_INVOKABLE void openCamera(int index = -1);
60 void closeCamera();
61
62 // Start and stop image acquisition
63 Q_INVOKABLE void startAcquisition();
64 Q_INVOKABLE void stopAcquisition();
65
66 // Some special parameter functions
67 Q_INVOKABLE void applyPixelFormat(int index);
68 Q_INVOKABLE void applyRoi(QRect roi);
69 Q_INVOKABLE void resetRoi();
70
71 // Sequencer related functions
72 Q_INVOKABLE void prepareSequencer(int sequencerDuration);
73 Q_INVOKABLE void loadSequencerSet(int index);
74 Q_INVOKABLE void saveSequencerSet(int index);
75
76
77 Q_INVOKABLE void init();
78
79 Q_INVOKABLE void cameraSettingsStartup();
80
81 Q_INVOKABLE static QString Version() ;
82 Q_INVOKABLE static QString QtVersion() ;
83 Q_INVOKABLE static bool isQt6() ;
84
85signals:
86 // NOTIFY signals for Q_PROPERTY
91
92 // Other signals
94 QImage image, unsigned int iterator, unsigned long long timestamp, unsigned long long timestampDelta);
98 void closing();
99 void error(QString message);
101
102public slots:
105 void softwareTrigger();
106
107private:
108 // Private variables for Q_PROPERTY
109 std::shared_ptr<NodeListModel> m_nodeList;
112
113 // the IDS peak genericAPI objects
114 std::shared_ptr<peak::core::Device> m_device = nullptr;
115 std::shared_ptr<peak::core::NodeMap> m_nodeMap = nullptr;
116 std::shared_ptr<peak::core::DataStream> m_dataStream = nullptr;
117 std::vector<std::shared_ptr<peak::core::DeviceDescriptor>> m_devices;
118
119 // some other privates
120 std::shared_ptr<Camera> m_camera = nullptr;
121 std::string m_openedCamera;
122};
123
124#endif // BACKEND_H
The Camera class is used to configure, start and stop the camera's image acquisition.
Definition backend.h:38
std::shared_ptr< peak::core::NodeMap > m_nodeMap
Definition backend.h:115
void startupFinished()
int sequencerDuration
Definition backend.h:46
Q_INVOKABLE void openCamera(int index=-1)
Definition backend.cpp:151
Q_INVOKABLE void applyRoi(QRect roi)
Definition backend.cpp:313
std::shared_ptr< peak::core::Device > m_device
Definition backend.h:100
void switchToSequencerAcquisition()
Definition backend.cpp:470
void updateCameraList()
Definition backend.cpp:133
static Q_INVOKABLE bool isQt6()
Definition backend.cpp:536
std::shared_ptr< peak::core::DataStream > m_dataStream
Definition backend.h:101
void nodeListChanged()
Q_INVOKABLE void stopAcquisition()
Definition backend.cpp:270
std::string m_openedCamera
Definition backend.h:121
void softwareTrigger()
Definition backend.cpp:503
void cameraClosed()
void cameraOpened()
Q_INVOKABLE void startAcquisition()
Definition backend.cpp:252
void acquisitionRunningChanged()
int m_sequencerDuration
Definition backend.h:111
bool m_acquisitionRunning
Definition backend.h:110
std::shared_ptr< NodeListModel > m_nodeList
Definition backend.h:109
Q_INVOKABLE void cameraSettingsStartup()
Definition backend.cpp:109
Q_INVOKABLE void resetRoi()
Definition backend.cpp:341
void closeCamera()
Definition backend.cpp:220
void imageReceived(QImage image, double chunkDataExposureTime_ms)
BackEnd(QObject *parent=nullptr)
Definition backend.cpp:35
Q_INVOKABLE void applyPixelFormat(int index)
Definition backend.cpp:288
Q_INVOKABLE void init()
Definition backend.cpp:61
Q_INVOKABLE void loadSequencerSet(int index)
Definition backend.cpp:432
void sequenceListChanged()
void cameraAboutToClose()
void sequencerDurationChanged()
Q_INVOKABLE void saveSequencerSet(int index)
Definition backend.cpp:451
void closing()
static Q_INVOKABLE QString QtVersion()
Definition backend.cpp:313
bool acquisitionRunning
Definition backend.h:45
void error(QString message)
NodeListModel * nodeList
Definition backend.h:44
void switchToContinuousAcquisition()
Definition backend.cpp:489
static Q_INVOKABLE QString Version()
Definition backend.cpp:308
Q_INVOKABLE void prepareSequencer(int sequencerDuration)
Definition backend.cpp:371
std::shared_ptr< Camera > m_camera
Definition backend.h:120
std::vector< std::shared_ptr< peak::core::DeviceDescriptor > > m_devices
Definition backend.h:117
Definition camera.h:54
Definition device.h:31
Definition nodelistmodel.h:44
The ImageConverter class is used in a worker thread to convert buffers received from the datastream t...
The NodeListModel is a prototype for a camera's node map that can be displayed automatically in QML.
The AcquisitionWorker class is used in a worker thread to capture images from the device continuously...