1.修改了海阳光学光谱仪派生类,以支持暗像素信息的获取。

2.针对FLAME设备添加了新的实时暗背景扣除函数。
3.修改了部分系统执行逻辑,以支持FLAME的正确运行。
This commit is contained in:
2023-07-17 11:26:56 +08:00
parent 16d745ed5f
commit 3ce267dccf
19 changed files with 371 additions and 105 deletions

View File

@ -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();