mirror of
http://172.16.0.230/r/SIF/TowerOptoSifAndSpectral.git
synced 2025-12-16 11:33:31 +08:00
v2.1.3
This commit is contained in:
@ -562,6 +562,7 @@ int CMainDataGrabber::GrabOnceFinished()
|
||||
|
||||
// m_struAcqPosSetting.iPosition[i + 1];
|
||||
m_iFlagIsCapturing_Signal = 1;
|
||||
|
||||
emit SignalStartGrabOnce_Signal();
|
||||
while (m_iFlagIsCapturing_Signal)
|
||||
{
|
||||
@ -596,6 +597,7 @@ int CMainDataGrabber::GrabOnceFinished()
|
||||
|
||||
//m_struAcqPosSetting.iPosition[0];
|
||||
m_iFlagIsCapturing_Dark = 1;
|
||||
// todo : 机载时是否有实时采集暗电流
|
||||
emit SignalStartGrabOnce_Dark();
|
||||
while (m_iFlagIsCapturing_Dark)
|
||||
{
|
||||
@ -619,6 +621,9 @@ int CMainDataGrabber::GrabOnceFinished()
|
||||
}
|
||||
|
||||
std::vector<std::vector<DataFrame>> vecData;
|
||||
bool savedarkfile=true;
|
||||
|
||||
std::vector<std::vector<DataFrame>> vecDarkData;
|
||||
|
||||
for (ZZ_U8 i = 0; i < m_struDeviceContext.ucDeviceNumber; i++)
|
||||
{
|
||||
@ -629,6 +634,10 @@ int CMainDataGrabber::GrabOnceFinished()
|
||||
SubDataFrame(vecSignal[j], vecDark[j], m_struDeviceContext.usPixels[i]);
|
||||
}
|
||||
vecData.push_back(vecSignal);
|
||||
if (savedarkfile) {
|
||||
vecDarkData.push_back(vecDark);
|
||||
}
|
||||
|
||||
qDebug() << "ucDeviceNumber" << i << " Data Size" << vecSignal.size();
|
||||
//vecData[i].push_back();
|
||||
}
|
||||
@ -639,8 +648,15 @@ int CMainDataGrabber::GrabOnceFinished()
|
||||
m_pmduUploader->SetData(vecData);
|
||||
emit SignalPushOneDataFrame();
|
||||
m_pdfpSaver->SetData(vecData);
|
||||
if (savedarkfile) {
|
||||
m_pdfpSaver->SetDarkData(vecDarkData);
|
||||
|
||||
}
|
||||
qDebug() << "Thread Data Server: WriteDataFile Called";
|
||||
m_pdfpSaver->WriteDataFile();
|
||||
if (savedarkfile) {
|
||||
m_pdfpSaver->WriteDarkDataFile();
|
||||
}
|
||||
}
|
||||
|
||||
m_iFlagIsCapturing = 0;
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -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;
|
||||
};
|
||||
@ -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
|
||||
|
||||
@ -49,6 +49,9 @@ namespace QT_LOG
|
||||
outFile.open(QIODevice::WriteOnly | QIODevice::Append | QIODevice::Text);
|
||||
QTextStream ts(&outFile);
|
||||
ts << log_info << endl;
|
||||
|
||||
std::cout<<log_info.toStdString()<<std::endl;
|
||||
|
||||
outFile.close();
|
||||
|
||||
m_LogMutex.unlock();
|
||||
@ -56,7 +59,7 @@ namespace QT_LOG
|
||||
void logInit(QString logFile = "",int logLevel = 0)
|
||||
{
|
||||
|
||||
#ifndef DEBUG
|
||||
#ifndef _Debug
|
||||
if ((logLevel < 0) || (logLevel > 3))
|
||||
{
|
||||
m_LogLevel = 1;
|
||||
|
||||
@ -125,6 +125,39 @@
|
||||
struGrabberRTParams.fscParams = m_struFSContext;
|
||||
struGrabberRTParams.lscParam = m_struLSContext;
|
||||
struGrabberRTParams.apsParams = m_struAcqPosition;
|
||||
|
||||
|
||||
struGrabberRTParams.issavedark=false;
|
||||
// if (m_qjoJObj!= NULL) 判断m_qjoJObj是否有值
|
||||
if (m_qjoJObj.contains("savedark")== true) {
|
||||
QJsonValue savedarkValue = m_qjoJObj.value("savedark");
|
||||
// 判断 QJsonValue 的类型,并提取布尔值
|
||||
if (savedarkValue.isBool()) {
|
||||
struGrabberRTParams.issavedark = savedarkValue.toBool();
|
||||
qDebug() << "Found 'savedark' as boolean. Set issavedark to:" << struGrabberRTParams.issavedark;
|
||||
} else if (savedarkValue.isString()) {
|
||||
// 如果 JSON 中存储的是字符串 "true" 或 "false"
|
||||
QString savedarkStr = savedarkValue.toString();
|
||||
if (savedarkStr.compare("true", Qt::CaseInsensitive) == 0) {
|
||||
struGrabberRTParams.issavedark = true;
|
||||
qDebug() << "Found 'savedark' as string 'true'. Set issavedark to:" << struGrabberRTParams.issavedark;
|
||||
} else if (savedarkStr.compare("false", Qt::CaseInsensitive) == 0) {
|
||||
struGrabberRTParams.issavedark = false;
|
||||
qDebug() << "Found 'savedark' as string 'false'. Set issavedark to:" << struGrabberRTParams.issavedark;
|
||||
} else {
|
||||
qDebug() << "Warning: 'savedark' field has an unexpected string value:" << savedarkStr;
|
||||
// 如果值不是 "true" 或 "false",可以保持默认值或根据业务逻辑处理
|
||||
}
|
||||
} else {
|
||||
qDebug() << "Warning: 'savedark' field is neither boolean nor string. Value type:" << savedarkValue.type();
|
||||
// 可以选择保持默认值,或者根据需要抛出错误
|
||||
}
|
||||
}else {
|
||||
qDebug()<<"warning no savedark fied";
|
||||
}
|
||||
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@ -26,6 +26,7 @@ ZZ_HttpTransfer::~ZZ_HttpTransfer()
|
||||
|
||||
int ZZ_HttpTransfer::SendData()
|
||||
{
|
||||
return 0;
|
||||
if (m_pNetworkManagerThread == nullptr)
|
||||
{
|
||||
m_pNetworkManagerThread = new QNetworkAccessManager();
|
||||
@ -83,6 +84,7 @@ int ZZ_HttpTransfer::SendData()
|
||||
|
||||
int ZZ_HttpTransfer::SendInfo()
|
||||
{
|
||||
return 0;
|
||||
if (m_pNetworkManager == nullptr)
|
||||
{
|
||||
m_pNetworkManager = new QNetworkAccessManager();
|
||||
@ -156,6 +158,7 @@ int ZZ_HttpTransfer::SendInfo()
|
||||
|
||||
int ZZ_HttpTransfer::SendErr()
|
||||
{
|
||||
return 0;
|
||||
if (m_pNetworkManager == nullptr)
|
||||
{
|
||||
m_pNetworkManager = new QNetworkAccessManager();
|
||||
|
||||
Reference in New Issue
Block a user