mirror of
http://172.16.0.230/r/SIF/TowerOptoSifAndSpectral.git
synced 2025-10-18 19:39:43 +08:00
1.添加了对双通道光闸系统的支持。 2.针对QEPro系列硬件添加了非线性矫正 3.进行了完整的实际采集测试,通过。 4.优化统一了ATP基类内置自动曝光函数。
72 lines
1.7 KiB
C++
72 lines
1.7 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;
|
|
std::string strInterface;
|
|
std::string strSN;
|
|
long lDepth;
|
|
float fMinFactor;
|
|
float fMaxFactor;
|
|
}FSInfo;
|
|
|
|
class CAbstractFSController :public QObject
|
|
{
|
|
Q_OBJECT
|
|
public:
|
|
CAbstractFSController(QObject* parent = nullptr);
|
|
virtual ~CAbstractFSController();
|
|
public:
|
|
std::atomic_int iFlagInit{ 0 };
|
|
public:
|
|
//call first
|
|
virtual int SetRunParas(int iThreadID, FSInfo fsInfo);
|
|
|
|
//create derived class from base class
|
|
virtual int InitializeFSControl();
|
|
virtual int InitializeFSControl_Self();
|
|
|
|
//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;
|
|
|
|
//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();
|
|
virtual int StopAcquisition();
|
|
virtual int ClearBuffer();
|
|
virtual int GetBuffer(std::vector<DataFrame> &pvecDataFrameDark, std::vector<DataFrame> &pvecDataFrameSignal);
|
|
|
|
|
|
signals:
|
|
void SignalInit_Self();
|
|
void SignalAcqStarted();
|
|
void SignalAcqFinished_Signal(int iThreadID, int iFlagStatus);
|
|
void SignalAcqFinished_Dark (int iThreadID, int iFlagStatus);
|
|
}; |