Files
IRIS_FODIS/main.cpp
zhangzhuo 3ce267dccf 1.修改了海阳光学光谱仪派生类,以支持暗像素信息的获取。
2.针对FLAME设备添加了新的实时暗背景扣除函数。
3.修改了部分系统执行逻辑,以支持FLAME的正确运行。
2023-07-17 11:26:56 +08:00

170 lines
4.3 KiB
C++

#include "pch.h"
#include "Logger.h"
#include "Source/Settings/SysConfigger.h"
#include "BD357Ctrl.h"
#include "MainGrabber.h"
#include "ZZ_Types.h"
#include "DataFileProcessor.h"
#include "MakeDarkCurrentTable.h"
using namespace std;
int main(int argc, char* argv[])
{
using namespace ZZ_MISCDEF::ZZ_RUNPARAMS;
using namespace ZZ_MISCDEF::MISC_DETECTOR;
QCoreApplication a(argc, argv);
QEventLoop qeLoop;
QTimer::singleShot(30000, &qeLoop, SLOT(quit()));
qeLoop.exec();
//指示灯控制
system("gpio mode 4 out");
system("gpio mode 5 out");
qDebug() << "system(gpio mode 4 out)";
qDebug() << "system(gpio mode 5 out)";
OneFSContext m_struFSParam;//参数类
GPSInfo m_struGPSInfo;
//FodisRP m_struMiscRunParams;
ZZ_SysConfigger m_syscfSettings;//控制类
BD357Controller m_ctrlGPS;
CMainGrabber m_mgMainGrabber;//主采集
DataFileProcessor m_dfpDataSaver;
//////////////////////////////////////////////////////////////////////////test code block
//DataFrame aaaa;
//int xxxx = sizeof(aaaa);
//m_dfpDataSaver.LoadWaveLengthFile("E:/WavelengthInfo.txt");
//m_dfpDataSaver.LoadSingleDataFile("D:/15_55_18.datrecv");
//m_dfpDataSaver.RecoverBackground("D:/15_55_18.dat", "D:/DCTable.txt");
//////////////////////////////////////////////////////////////////////////test code block
//////////////////////////////////////////////////////////////////////////Check Settings File
bool bRes = false;
QFileInfo m_qfiSettingFileInfo("/home/data/Setting/DeviceSettings.ini");
if (!m_qfiSettingFileInfo.isFile())
{
printf ("DeviceSettings File Missing !!! Will create from default one.");
QDir qdirPath("/home/data/Setting");
if (!qdirPath.exists())
{
bool bRes = qdirPath.mkpath("/home/data/Setting");
if (!bRes)
{
qDebug() << "DataFileProcessor mkdir Failed.";
return -1;
}
}
bool bRes = QFile::copy("/root/DeviceSettings.ini", "/home/data/Setting/DeviceSettings.ini");
if (!bRes)
{
qDebug() << " QFile::copy Failed.";
return -2;
}
}
//////////////////////////////////////////////////////////////////////////Check Settings File
//////////////////////////////////////////////////////////////////////////Load Settings File
///configger
m_syscfSettings.Initialize();
bRes = m_syscfSettings.LoadSettings_FS(m_struFSParam);
if (!bRes)
{
//qDebug() << "LoadSettings_FS Err." << endl;
printf("LoadSettings_FS Err.");
return 1;
}
bRes = m_syscfSettings.LoadSettings_GPS(m_struGPSInfo);
if (!bRes)
{
//qDebug() << "LoadSettings_GPS Err." << endl;
printf("LoadSettings_GPS Err.");
return 1;
}
/////
//////////////////////////////////////////////////////////////////////////Check DCTable
using namespace ZZ_MISCDEF;
if (m_struFSParam.ucDeviceModel== DeviceModel::FLAME)
{
//do nothing
}
else
{
QFileInfo m_qfiDCTFileInfo("/home/data/Data/DCTable.txt");
if (!m_qfiDCTFileInfo.isFile())
{
printf("DCTable File Missing !!! Will create from default one.");
QDir qdirPath("/home/data/Data");
if (!qdirPath.exists())
{
bool bRes = qdirPath.mkpath("/home/data/Data");
if (!bRes)
{
qDebug() << "DataFileProcessor mkdir Failed.";
return -1;
}
}
bool bRes = QFile::copy("/root/DCTable.txt", "/home/data/Data/DCTable.txt");
if (!bRes)
{
qDebug() << " QFile::copy Failed.";
return -2;
}
}
}
//////////////////////////////////////////////////////////////////////////Check DCTable
////////////////////////////////test only
//MakeDCT m_test;
//m_test.SetRunParams(m_struFSParam);
//m_test.Initialize();
//m_test.MakeTable();
//m_test.Initialize_Part();
//m_test.LoadTable();
////////////////////////////////test only
m_ctrlGPS.SetContext(m_mgMainGrabber);//初始化gps
m_ctrlGPS.SetupMessagePipeline();
m_ctrlGPS.Initialize(m_struGPSInfo);
QThread* m_pqDataGrabberThreadHolder = new QThread();
m_mgMainGrabber.moveToThread(m_pqDataGrabberThreadHolder);
m_mgMainGrabber.SetRunParams(m_struFSParam);//初始化主采集线程
m_mgMainGrabber.SetContext(m_ctrlGPS, m_dfpDataSaver);
m_pqDataGrabberThreadHolder->start();
m_mgMainGrabber.Initialize();//开始工作
//m_ctrlGPS.SyncDateOnce();
cout << "System Started..." << endl;
///////
//long long int a1;// 8
//long long b; // 8
//double c; // 8
//qDebug()<<sizeof(a1)<< sizeof(b)<<sizeof(c);
/////
return a.exec();
}