Files
TowerOptoSifAndSpectral/source/Thread/AbstractFSController.h
2021-12-08 17:43:27 +08:00

62 lines
1.5 KiB
C++

#pragma once
#include "pch.h"
#include "ATPControl_Serial_QT.h"
#include "OControl_USB.h"
#include <atomic>
#include <vector>
typedef struct tagFSInfo
{
ZZ_U8 ucDeviceModel;
int iInterface;
std::string strSN;
long lDepth;
float fMinFactor;
float fMaxFactor;
}FSInfo;
class CAbstractFSController :public QObject
{
Q_OBJECT
public:
CAbstractFSController(QObject* parent = nullptr);
virtual ~CAbstractFSController();
public:
//call first
virtual int SetRunParas(int iThreadID, FSInfo fsInfo);
//create derived class from base class
virtual int InitializeFSControl();
//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;
DeviceAttribute m_daDeviceAttr;
private:
int PerformAutoExposure();
int TakeDarkFrame();
int TakeSignalFrame();
DataFrame TakeOneFrame();
int SaveDataFile();
public slots:
virtual int StartAcquisitionSignal();
virtual int StartAcquisitionDark();
virtual int StopAcquisition();
virtual int ClearBuffer();
virtual int GetBuffer(std::vector<DataFrame> &pvecDataFrameDark, std::vector<DataFrame> &pvecDataFrameSignal);
signals:
void SignalAcqStarted();
void SignalAcqFinished_Signal(int iThreadID, int iFlagStatus);
void SignalAcqFinished_Dark (int iThreadID, int iFlagStatus);
};