mirror of
http://172.16.0.230/r/SIF/TowerOptoSifAndSpectral.git
synced 2025-10-19 11:49:42 +08:00
文件存储完成
This commit is contained in:
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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:
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
|
Reference in New Issue
Block a user