This commit is contained in:
xin
2025-11-04 17:19:32 +08:00
parent 030381aa5c
commit 7c9b5728b9
37 changed files with 677 additions and 191 deletions

View File

@ -4,8 +4,10 @@ DataFileProcessor::DataFileProcessor(QObject* parent /*= nullptr*/)
{
#ifdef _DEBUG
m_qstrFilePath = "E:/WorkSpace/TowerOptoSifAndSpectral/Data";
m_qstrDarkFilePath = "E:/WorkSpace/TowerOptoSifAndSpectral/Dark";
#else
m_qstrFilePath = "/home/data/Data";
m_qstrDarkFilePath="/home/data/Dark";
#endif // DEBUG
}
@ -33,21 +35,40 @@ void DataFileProcessor::SetData(std::vector<std::vector<DataFrame>> vecData)
{
m_vecData.clear();
m_vecData = vecData;
}
}
void DataFileProcessor::SetDarkData(std::vector<std::vector<DataFrame>> vecData) {
m_vecDarkData.clear();
m_vecDarkData = vecData;
}
bool DataFileProcessor::WriteDataFile()
{
//qDebug() << "start Thread Data Server GenerateFilePath";
GenerateFilePath();
//qDebug() << "start Thread Data Server WriteEnvironmentInfo";
WriteEnvironmentInfo();
WriteEnvironmentInfo(m_qstrFullFileName);
//qDebug() << "start Thread Data Server WriteDeviceInfo";
WriteDeviceInfo();
WriteDeviceInfo(m_qstrFullFileName);
//qDebug() << "start Thread Data Server WriteData";
WriteData();
WriteData(m_qstrFullFileName);
return 1;
}
bool DataFileProcessor::WriteDarkDataFile()
{
//qDebug() << "start Thread Data Server GenerateFilePath";
// GenerateFilePath();
//qDebug() << "start Thread Data Server WriteEnvironmentInfo";
WriteEnvironmentInfo(m_qstrDarkFileName);
//qDebug() << "start Thread Data Server WriteDeviceInfo";
WriteDeviceInfo(m_qstrDarkFileName);
//qDebug() << "start Thread Data Server WriteData";
WriteDarkData(m_qstrDarkFileName);
return 1;
}
@ -60,13 +81,15 @@ void DataFileProcessor::GenerateFilePath()
m_struEC.qstrUTCDateTime = m_qdtTime.toUTC().toString("yyyy_MM_dd hh:mm:ss");
m_qstrFullFileName = m_qstrFilePath + qstrAddYMD;
m_qstrDarkFileName = m_qstrDarkFilePath + qstrAddYMD;
QString qstrTemp= m_qstrFullFileName;
QString qstrTempDark = m_qstrDarkFileName;
if (m_struEC.qstrLocation=="")
{
m_struEC.qstrLocation = "Unknown";
}
m_qstrFullFileName= m_qstrFullFileName+"/"+m_struEC.qstrLocation + qstrAddHMS+".csv";
m_qstrFullFileName = m_qstrFullFileName+"/"+m_struEC.qstrLocation + qstrAddHMS+".csv";
m_qstrDarkFileName =m_qstrDarkFileName+"/"+m_struEC.qstrLocation+"_dark" + qstrAddHMS+".csv";
QDir qdirPath(qstrTemp);
if (!qdirPath.exists())
{
@ -76,12 +99,22 @@ void DataFileProcessor::GenerateFilePath()
qDebug() << "DataFileProcessor mkdir Failed.";
}
}
QDir qdirPathDark(qstrTempDark);
if (!qdirPathDark.exists()) {
bool bRes = qdirPathDark.mkpath(qstrTempDark);
if (!bRes) {
qDebug()<< "DataDarkFileProcessor mkdir Failed.";
}
}
}
bool DataFileProcessor::WriteEnvironmentInfo()
bool DataFileProcessor::WriteEnvironmentInfo(QString path)
{
if (path=="")
{path=m_qstrFullFileName;}
bool bRes = true;
QFile qfData(m_qstrFullFileName);
QFile qfData(path);
bRes = qfData.open(QFile::WriteOnly|QFile::Text|QFile::Truncate);
if (!bRes)
{
@ -145,9 +178,11 @@ bool DataFileProcessor::WriteEnvironmentInfo()
return bRes;
}
void DataFileProcessor::WriteDeviceInfo()
void DataFileProcessor::WriteDeviceInfo(QString path)
{
QFile qfData(m_qstrFullFileName);
if (path=="")
{path=m_qstrFullFileName;}
QFile qfData(path);
bool bRes = qfData.open(QFile::WriteOnly | QFile::Text | QIODevice::Append);
if (!bRes)
{
@ -215,9 +250,11 @@ void DataFileProcessor::WriteDeviceInfo()
qfData.close();
}
bool DataFileProcessor::WriteData()
bool DataFileProcessor::WriteData(QString path)
{
QFile qfData(m_qstrFullFileName);
if (path=="")
{path=m_qstrFullFileName;}
QFile qfData(path);
bool bRes = qfData.open(QFile::WriteOnly | QFile::Text | QIODevice::Append);
if (!bRes)
{
@ -260,6 +297,59 @@ bool DataFileProcessor::WriteData()
}
}
qfData.close();
bool res = true;
return res;
}
bool DataFileProcessor::WriteDarkData(QString path)
{
if (path=="")
{path=m_qstrDarkFileName;}
QFile qfData(path);
bool bRes = qfData.open(QFile::WriteOnly | QFile::Text | QIODevice::Append);
if (!bRes)
{
qDebug() << "WriteData open Failed.";
return 0;
}
QString qstrTemp;
qfData.write("Data Section");
qfData.write("\n");
using namespace ZZ_MISCDEF::IRIS;
for (int i=0;i<m_struDeviceContext.ucDeviceNumber;i++)
{
for (int j=0;j<m_vecDarkData[i].size();j++)
{
qstrTemp = QString::fromStdString(GetDeviceModelName(m_struDeviceContext.ucDeviceModel[i]));
qfData.write(qstrTemp.toLatin1());
qstrTemp = QString("_P%1").arg(j + 1);
qfData.write(qstrTemp.toLatin1());
qfData.write(",");
if ((m_vecDarkData[i][j].fTemperature < 5) /*&& (m_vecDarkData[i][j].fTemperature> -5)*/)
{
qfData.write("valid");
}
else
{
qfData.write("invalid");
}
qfData.write(",");
qstrTemp = QString::number(m_vecDarkData[i][j].usExposureTimeInMS);
qfData.write(qstrTemp.toLatin1());
for (int k=0;k< m_struDeviceContext.usPixels[i];k++)
{
qfData.write(",");
qstrTemp = QString::number(m_vecDarkData[i][j].lData[k]);
qfData.write(qstrTemp.toLatin1());
}
qfData.write("\n");
}
}
qfData.close();
bool res = true;
return res;
}

View File

@ -16,19 +16,23 @@ public:
void SetManmadeEnviromentalContext(MEContext struMEC);
void SetDeviceInfo(FSContext struDeviceContext);
void SetData(std::vector<std::vector<DataFrame>> vecData);
void SetDarkData(std::vector<std::vector<DataFrame>> vecData);
bool WriteDataFile();
bool WriteDarkDataFile();
private:
void GenerateFilePath();
bool WriteEnvironmentInfo();
void WriteDeviceInfo();
bool WriteData();
bool WriteEnvironmentInfo(QString path="");
void WriteDeviceInfo(QString path="");
bool WriteData(QString path="");
bool WriteDarkData(QString path="");
public:
private:
QString m_qstrFullFileName;
QString m_qstrDarkFileName;
QString m_qstrFileName;
QString m_qstrFilePath;
QString m_qstrDarkFilePath;
QDateTime m_qdtTime;
@ -36,4 +40,5 @@ private:
MEContext m_struMEC;
FSContext m_struDeviceContext;
std::vector<std::vector<DataFrame>> m_vecData;
std::vector<std::vector<DataFrame>> m_vecDarkData;
};

View File

@ -1,5 +1,5 @@
//////////////////////////////////////////////////////////////////////////
//<2F><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5><EFBFBD>ļ<EFBFBD>
//<2F><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5><EFBFBD>ļ<EFBFBD>
//////////////////////////////////////////////////////////////////////////
#pragma once
#include "pch.h"
@ -106,7 +106,7 @@ namespace ZZ_MISCDEF
};
//ATPָ<50><D6B8>ת<EFBFBD><D7AA>
//ATPָ<50><D6B8>ת<EFBFBD><D7AA>
namespace ATP
{
const int MAX_SPECTRUM_SIZE = 4096;
@ -145,7 +145,7 @@ namespace ZZ_MISCDEF
ATP6500
};
//<2F><><EFBFBD><EFBFBD>֡<EFBFBD><D6A1><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>֡<EFBFBD><D6A1><EFBFBD><EFBFBD>
typedef struct tagATPDataFrame
{
unsigned short usExposureTime;
@ -154,14 +154,14 @@ namespace ZZ_MISCDEF
double dTimes = 0;
}ATPDataFrame;
//<2F><EFBFBD><E8B1B8>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
//<2F><EFBFBD><E8B1B8>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
typedef struct tagATPDeviceInfo
{
std::string strPN;
std::string strSN;
}ATPDeviceInfo;
//<2F><EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
typedef struct tagATPDeviceAttribute
{
int iPixels;
@ -176,7 +176,7 @@ namespace ZZ_MISCDEF
}
//<2F><><EFBFBD>в<EFBFBD><D0B2><EFBFBD>
//<2F><><EFBFBD>в<EFBFBD><D0B2><EFBFBD>
namespace ZZ_RUNPARAMS
{
typedef struct tagErrorInfo
@ -236,6 +236,7 @@ namespace ZZ_MISCDEF
FSContext fscParams;
AcqTimeSettings atsParams;
AcqPosSettings apsParams;
bool issavedark;
}RunTimeGrabberParams;
typedef struct tagATPCalibrationSettings
@ -246,7 +247,7 @@ namespace ZZ_MISCDEF
}ATPCalibrationSettings;
}
//ϵͳ<CFB5><CDB3><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>
//ϵͳ<CFB5><CDB3><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>
namespace ZZ_DATAFILE
{
typedef struct tagEnvironmentalContext