Files
TowerOptoSifAndSpectral/source/CaptureThread/AbstractFSController.h

72 lines
1.7 KiB
C
Raw Normal View History

2021-11-24 17:38:18 +08:00
#pragma once
#include "pch.h"
#include "ATPControl_Serial_QT.h"
#include "OControl_USB.h"
2021-11-24 17:38:18 +08:00
#include <atomic>
#include <vector>
2021-11-24 17:38:18 +08:00
typedef struct tagFSInfo
{
ZZ_U8 ucDeviceModel;
2021-12-13 17:18:24 +08:00
std::string strInterface;
std::string strSN;
long lDepth;
float fMinFactor;
float fMaxFactor;
}FSInfo;
2021-11-24 17:38:18 +08:00
class CAbstractFSController :public QObject
{
Q_OBJECT
public:
CAbstractFSController(QObject* parent = nullptr);
virtual ~CAbstractFSController();
public:
std::atomic_int iFlagInit{ 0 };
2021-11-24 17:38:18 +08:00
public:
//call first
virtual int SetRunParas(int iThreadID, FSInfo fsInfo);
2021-11-24 17:38:18 +08:00
//create derived class from base class
virtual int InitializeFSControl();
virtual int InitializeFSControl_Self();
2021-11-24 17:38:18 +08:00
2021-12-08 17:43:27 +08:00
//sync info
virtual int GetDeviceAttr(DeviceAttribute &daAttr);
//DataFrame GetLastDataFrame();
private:
CIrisFSBase *m_pFSCtrl;
int m_iThreadID;
FSInfo m_fsInfo;
//DataFrame m_dfDark,m_dfSignal;
std::vector<DataFrame> m_vecDataFrameDark, m_vecDataFrameSignal;
2021-11-24 17:38:18 +08:00
DeviceAttribute m_daDeviceAttr;
//QE NLC
QString m_qstrCalFilePath;
std::vector<double> m_vecNonLinearCalP;
private:
int PerformAutoExposure();
int TakeDarkFrame();
int TakeSignalFrame();
DataFrame TakeOneFrame();
int SaveDataFile();
//QE NLC
int LoadQEProLinearCalibrationFile();
public slots:
virtual int StartAcquisitionSignal();
virtual int StartAcquisitionDark();
2021-11-24 17:38:18 +08:00
virtual int StopAcquisition();
virtual int ClearBuffer();
2021-12-08 17:43:27 +08:00
virtual int GetBuffer(std::vector<DataFrame> &pvecDataFrameDark, std::vector<DataFrame> &pvecDataFrameSignal);
2021-11-24 17:38:18 +08:00
signals:
void SignalInit_Self();
2021-11-24 17:38:18 +08:00
void SignalAcqStarted();
void SignalAcqFinished_Signal(int iThreadID, int iFlagStatus);
void SignalAcqFinished_Dark (int iThreadID, int iFlagStatus);
2021-11-24 17:38:18 +08:00
};