文件存储完成

This commit is contained in:
2021-12-08 17:43:27 +08:00
parent 3de7eb3da7
commit ec8bb49b8f
26 changed files with 373 additions and 75 deletions

View File

@ -42,6 +42,7 @@ int CAbstractFSController::InitializeFSControl()
qDebug() << "OSIFAlpha Not Opened";
return 2;
}
break;
case DeviceModel::OSIFBeta:
m_pFSCtrl = new OceanOptics_lib;
@ -83,9 +84,9 @@ int CAbstractFSController::InitializeFSControl()
}
int iRes = m_pFSCtrl->GetDeviceAttribute(m_daDeviceAttr);
if (iRes !=0 )
if (iRes != 0)
{
qDebug() << "GetDeviceAttribute Failed"<< iRes;
qDebug() << "GetDeviceAttribute Failed" << iRes;
return 4;
}
@ -93,6 +94,12 @@ int CAbstractFSController::InitializeFSControl()
return 0;
}
int CAbstractFSController::GetDeviceAttr(DeviceAttribute &daAttr)
{
daAttr = m_daDeviceAttr;
return 0;
}
int CAbstractFSController::PerformAutoExposure()
{
qDebug() << "--------------------------Starting PerformAutoExposure" << " Thread ID:" << m_iThreadID;
@ -146,13 +153,13 @@ int CAbstractFSController::PerformAutoExposure()
return 2;
}
HeapSort(dfTemp.usData, m_daDeviceAttr.iPixels);
HeapSort(dfTemp.lData, m_daDeviceAttr.iPixels);
double dSum = 0;
int iCount = m_daDeviceAttr.iPixels / 100;
for (int i = 0; i < iCount; i++)
{
dSum += dfTemp.usData[i];
dSum += dfTemp.lData[i];
}
double dTemp = dSum / iCount;
@ -219,6 +226,10 @@ int CAbstractFSController::PerformAutoExposure()
qDebug() << "Err:PerformAutoExposure Failed.Exit Code:3";
return 3;
}
else
{
qDebug() << "Warning:PerformAutoExposure exceed max integration time.Will be limited to 30sec";
}
bFlagIsOverMaxExposureTime = true;
break;
}
@ -291,7 +302,10 @@ int CAbstractFSController::StartAcquisitionSignal()
// m_pFSCtrl->SetExposureTime(10000000);
// m_pFSCtrl->GetExposureTime(iii);
// m_pFSCtrl->SingleShot(struDF);
PerformAutoExposure();
//PerformAutoExposure();
TakeSignalFrame();
qDebug() << "Stop acq Signal" << " Thread ID:" << m_iThreadID;
@ -321,10 +335,13 @@ int CAbstractFSController::ClearBuffer()
return 0;
}
int CAbstractFSController::GetBuffer(std::vector<DataFrame> *pvecDataFrameDark, std::vector<DataFrame> *pvecDataFrameSignal)
int CAbstractFSController::GetBuffer(std::vector<DataFrame> &pvecDataFrameDark, std::vector<DataFrame> &pvecDataFrameSignal)
{
pvecDataFrameDark = &m_vecDataFrameDark;
pvecDataFrameSignal = &m_vecDataFrameSignal;
for (size_t i=0; i < m_vecDataFrameSignal.size(); i++)
{
pvecDataFrameSignal.push_back(m_vecDataFrameSignal[i]);
pvecDataFrameDark.push_back(m_vecDataFrameDark[i]);
}
return 0;
}

View File

@ -28,7 +28,9 @@ public:
//create derived class from base class
virtual int InitializeFSControl();
DataFrame GetLastDataFrame();
//sync info
virtual int GetDeviceAttr(DeviceAttribute &daAttr);
//DataFrame GetLastDataFrame();
private:
CIrisFSBase *m_pFSCtrl;
@ -50,7 +52,7 @@ public slots:
virtual int StartAcquisitionDark();
virtual int StopAcquisition();
virtual int ClearBuffer();
virtual int GetBuffer(std::vector<DataFrame> *pvecDataFrameDark, std::vector<DataFrame> *pvecDataFrameSignal);
virtual int GetBuffer(std::vector<DataFrame> &pvecDataFrameDark, std::vector<DataFrame> &pvecDataFrameSignal);
signals:

View File

@ -48,6 +48,14 @@ void CMainDataGrabber::Delay_MSec(ZZ_U16 usMS)
qeLoop.exec();
}
void CMainDataGrabber::SubDataFrame(DataFrame& dfLeft, DataFrame const dfRight, int iCount)
{
for (int i = 0; i < iCount; i++)
{
dfLeft.lData[i] = dfLeft.lData[i]- dfRight.lData[i];
}
}
int CMainDataGrabber::SetGrabberParams(RunTimeGrabberParams struGrabberRTParams)
{
m_struAcqTime = struGrabberRTParams.atsParams;
@ -108,8 +116,18 @@ int CMainDataGrabber::InitializeWorkers()
CAbstractFSController* m_pWorkThread = new CAbstractFSController;
m_pWorkThread->SetRunParas(i, fsInfo);
m_pWorkThread->InitializeFSControl();
DeviceAttribute daAttrTemp;
m_pWorkThread->GetDeviceAttr(daAttrTemp);
m_struDeviceContext.usPixels[i] = (ZZ_U16)daAttrTemp.iPixels;
for (ZZ_U16 j=0;j< daAttrTemp.iPixels;j++)
{
m_struDeviceContext.fWavelength[i][j] = daAttrTemp.fWaveLengthInNM[j];
}
m_pControlThread.push_back(m_pWorkThread);
}
m_pdfpSaver->SetDeviceInfo(m_struDeviceContext);
return 0;
}
@ -298,7 +316,7 @@ int CMainDataGrabber::GrabOnceFinished()
}
m_iFlagIsCapturing = 1;
m_struAcqPosSetting.iTotalPosition = 2;
m_struAcqPosSetting.iTotalPosition = 5;
//m_pdfpSaver->WriteDataFile();
for (ZZ_U8 i = 0; i < m_struDeviceContext.ucDeviceNumber; i++)
@ -329,11 +347,20 @@ int CMainDataGrabber::GrabOnceFinished()
}
std::vector<DataFrame> test,test1;
std::vector<std::vector<DataFrame>> vecData;
for (ZZ_U8 i = 0; i < m_struDeviceContext.ucDeviceNumber; i++)
{
m_pControlThread[i]->GetBuffer(&test, &test1);
std::vector<DataFrame> vecDark, vecSignal, vecResult;
m_pControlThread[i]->GetBuffer(vecDark, vecSignal);
for (size_t j=0;j< vecDark.size();j++)
{
SubDataFrame(vecSignal[j], vecDark[j], m_struDeviceContext.usPixels[i]);
}
vecData.push_back(vecSignal);
}
m_pdfpSaver->SetData(vecData);
m_pdfpSaver->WriteDataFile();
// qDebug() << "-------------------------------------------busy" << QTime::currentTime().toString();
// QThread::msleep(5000);
// return 0;

View File

@ -38,6 +38,7 @@ private:
QTimer *m_GrabTimer;
private:
void Delay_MSec(ZZ_U16 usMS);
void SubDataFrame(DataFrame& dfLeft, DataFrame const dfRight,int iCount);
public:
//Call this first
int SetGrabberParams(RunTimeGrabberParams struGrabberRTParams);