1.修改了海阳光学光谱仪派生类,以支持暗像素信息的获取。
2.针对FLAME设备添加了新的实时暗背景扣除函数。 3.修改了部分系统执行逻辑,以支持FLAME的正确运行。
This commit is contained in:
@ -110,16 +110,121 @@ void DataFileProcessor::LoadSingleDataFile(QString qstrFileName)
|
||||
printf("LoadWaveLengthFile open Failed.");
|
||||
return;
|
||||
}
|
||||
|
||||
int iExpoTime=0;
|
||||
std::vector<int> vecExpotime;
|
||||
std::vector<double> vecDTime;
|
||||
long long int llCount = (qfDataFile.size()) / (sizeof(DataFrame));
|
||||
for (int i=0;i<llCount;i++)
|
||||
{
|
||||
QByteArray qbDataFrame = qfDataFile.read(sizeof(DataFrame));
|
||||
memcpy(&dfTemp, qbDataFrame, sizeof(DataFrame));
|
||||
vecExpotime.push_back(dfTemp.usExposureTimeInMS);
|
||||
vecDTime.push_back(dfTemp.dTimes);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
void DataFileProcessor::RecoverBackground(QString qstrDataFileName, QString qstrBackgroundFileName)
|
||||
{
|
||||
int iExpoTime = 0;
|
||||
std::vector<int> vecExpotime;
|
||||
std::vector<double> vecDTime;
|
||||
DataFrame dfDataTemp;
|
||||
DataFrame m_dfBackground;
|
||||
|
||||
QString qstrFullFileName(qstrDataFileName+"recv");
|
||||
QFile qfDataRec(qstrFullFileName);
|
||||
bool bRes = qfDataRec.open(QFile::WriteOnly | QIODevice::Append);
|
||||
if (!bRes)
|
||||
{
|
||||
printf("WriteData QFile open Failed");
|
||||
return;
|
||||
}
|
||||
|
||||
QFile qfDataFile(qstrDataFileName);
|
||||
bRes = qfDataFile.open(QFile::ReadOnly);
|
||||
if (!bRes)
|
||||
{
|
||||
printf("qstrDataFileName open Failed.");
|
||||
return;
|
||||
}
|
||||
///
|
||||
std::vector<DataFrame> m_vecDataFrame;
|
||||
m_vecDataFrame.clear();
|
||||
DataFrame dfDarkTemp;
|
||||
|
||||
QFile qfData(qstrBackgroundFileName);
|
||||
bRes = qfData.open(QFile::ReadOnly);
|
||||
if (!bRes)
|
||||
{
|
||||
//qDebug() << "LoadTable open Failed.";
|
||||
printf("LoadTable open Failed.");
|
||||
return;
|
||||
}
|
||||
QString qstrTemp;
|
||||
QStringList qsList;
|
||||
while (!qfData.atEnd())
|
||||
{
|
||||
QString data;
|
||||
data = qfData.readLine();
|
||||
qsList = data.split(',');
|
||||
|
||||
dfDarkTemp.usExposureTimeInMS = qsList[0].toInt();
|
||||
for (int i = 0; i < qsList.size() - 1; i++)
|
||||
{
|
||||
dfDarkTemp.lData[i] = qsList[i + 1].toInt();
|
||||
qDebug() << qsList[i] << ";";
|
||||
}
|
||||
m_vecDataFrame.push_back(dfDarkTemp);
|
||||
qDebug() << qsList.size() << endl;
|
||||
}
|
||||
///
|
||||
|
||||
|
||||
long long int llCount = (qfDataFile.size()) / (sizeof(DataFrame));
|
||||
for (int i = 0; i < llCount; i++)
|
||||
{
|
||||
QByteArray qbDataFrame = qfDataFile.read(sizeof(DataFrame));
|
||||
memcpy(&dfDataTemp, qbDataFrame, sizeof(DataFrame));
|
||||
vecExpotime.push_back(dfDataTemp.usExposureTimeInMS);
|
||||
vecDTime.push_back(dfDataTemp.dTimes);
|
||||
|
||||
int iB = dfDataTemp.usExposureTimeInMS % 10;
|
||||
|
||||
m_dfBackground = m_vecDataFrame[iB];
|
||||
|
||||
for (int i = 0; i < 2048 ; i++)
|
||||
{
|
||||
dfDataTemp.lData[i] = dfDataTemp.lData[i] + m_dfBackground.lData[i];
|
||||
}
|
||||
|
||||
double dBackground = 0;
|
||||
int iCountBg = 0;
|
||||
for (int i=6;i<21;i++)
|
||||
{
|
||||
dBackground = dBackground +dfDataTemp.lData[i];
|
||||
iCountBg++;
|
||||
}
|
||||
|
||||
dBackground = dBackground / iCountBg;
|
||||
|
||||
for (int i = 0; i < 2048; i++)
|
||||
{
|
||||
dfDataTemp.lData[i] = dfDataTemp.lData[i] - dBackground;
|
||||
}
|
||||
|
||||
qfDataRec.write((char*)&dfDataTemp, sizeof(DataFrame));
|
||||
qfDataRec.flush();
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
void DataFileProcessor::GenerateFilePath()
|
||||
{
|
||||
m_qdtTime = QDateTime::currentDateTime();
|
||||
|
Reference in New Issue
Block a user