Files
TowerOptoSifAndSpectral/main.cpp
DESKTOP-4HD0KC3\ZhangZhuo 1269e520e2 张卓修改没提交的代码
2025-03-10 10:03:01 +08:00

223 lines
7.3 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include "pch.h"
#include "ATPControl_Serial_QT.h"
#include "Logger.h"
#include "SystemConfigger.h"
#include "MainDataGrabber.h"
#include "DataFileProcessor.h"
#include "Scheduler.h"
#include "GY39Controller.h"
#include "MainDataUploader.h"
#include "VSMD12XMovementTest.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);
//////////////////////////////////////////////////////////////////////////for test
//MovementTest m_testVSMD12X;
////////////////////////////////////////////////////////////////////////////
//system("gpio mode 1 output");//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ų<EFBFBD>ʼ<EFBFBD><CABC>
//qDebug() << "gpio mode 1 output......" << endl;
//
//ZZ_ATPControl_Serial_Qt test;
//test.Initialize(0, "/dev/ttyS1", "2223344");
//////////////////////////////////////////////////////////////////////////
////
GY39Controller m_ctrlHumitureDetector;
DataFileProcessor m_dfpSaver;
ZZ_SysConfigger m_scConfiggerLoader;
Scheduler m_sTimer;
CMainDataGrabber m_mdgGrabber;
CMainDataUploader m_mduUploader;
ErrInfo m_eiErrInfo;
m_eiErrInfo.fChassisTempErr = 0;
m_eiErrInfo.fTecTempErr = 0;
m_eiErrInfo.iDataTransferErr = 0;
m_eiErrInfo.iShutterErr = 0;
////
bool bRes;
float m_fChassisTemp = 0, m_fChassisHum = 0;
RunTimeGrabberParams m_struRuntimeParams;
EContext m_struEC;
MEContext m_struMEC;
HumitureDeviceInfo m_struHumitureDI;
//////////////////////////////////////////////////////////////////////////logger
///create main system logger
QT_LOG::ZZ_InitLogger("/home/data/Log/");
//////////////////////////////////////////////////////////////////////////config
///turn on power supply
//////add support to dual channel
int iRet0 = 0,iRet1 = 0,iRet2 = 0,iRet3 = 0;
iRet0 = system("gpio mode 1 out");
iRet1 = system("gpio mode 4 out");
iRet2 = system("gpio mode 5 out");
iRet3 = system("gpio write 1 1");//上电
qDebug() << "gpio 1;4;5; ready"<<" Ret:"<< iRet0<< iRet1<< iRet2<< endl;
qDebug() << "gpio write 1 1......" <<" Ret:"<< iRet3<< endl;
// QString qstrCMD_A, qstrCMD_B, qstrCMD_Temp;
// qstrCMD_Temp = QString::fromStdString("4");
// qDebug() << qstrCMD_Temp << endl;
// qstrCMD_A = "gpio write " + qstrCMD_Temp + " 0";
//
// qstrCMD_Temp = QString::fromStdString("5");
// qDebug() << qstrCMD_Temp << endl;
// qstrCMD_B = "gpio write " + qstrCMD_Temp + " 0";
//
// qDebug() << qstrCMD_A << endl;
// qDebug() << qstrCMD_B << endl;
// system(qstrCMD_A.toLatin1());
// system(qstrCMD_B.toLatin1());
QThread::msleep(5000);
bRes = m_scConfiggerLoader.Initialize();
if (bRes)
{
return -1;
}
m_scConfiggerLoader.GetParams(m_struRuntimeParams, m_struEC, m_struMEC, m_struHumitureDI);
m_sTimer.SetAcqTimeParams(m_struRuntimeParams.atsParams);
//m_mduUploader.SetContext(m_struEC, m_struMEC);
//m_mduUploader.Initialize();
m_ctrlHumitureDetector.Initialize(m_struHumitureDI.qstrInterfaceName.toStdString());
//////////////////////////////////////////////////////////////////////////prepare
//m_sTimer.Preheating();
m_ctrlHumitureDetector.GetHumiture_retry(m_fChassisTemp, m_fChassisHum);
m_ctrlHumitureDetector.GetHumiture_retry(m_fChassisTemp, m_fChassisHum);
m_struEC.qstrCaseTemperature= QString("%1").arg(m_fChassisTemp);
m_struEC.qstrCaseHumidity = QString("%1").arg(m_fChassisHum);
m_dfpSaver.SetEnvironmentContex(m_struEC);
m_dfpSaver.SetManmadeEnviromentalContext(m_struMEC);
m_mduUploader.SetContext(m_struEC, m_struMEC);
//////////////////////////////////////////////////////////////////////////
QThread* m_pqDataGrabberThreadHolder = new QThread();
QThread* m_pqTimerThreadHolder = new QThread();
QThread* m_pqUploaderThreadHolder = new QThread();
m_mdgGrabber.moveToThread(m_pqDataGrabberThreadHolder);
m_sTimer.moveToThread(m_pqTimerThreadHolder);
m_mduUploader.moveToThread(m_pqUploaderThreadHolder);
//m_mdgGrabber.SetContext(m_struRuntimeParams, m_dfpSaver, m_sTimer);
m_mdgGrabber.SetContext(m_struRuntimeParams, m_dfpSaver, m_sTimer, m_mduUploader);
m_mdgGrabber.Init_Normal();
m_mduUploader.Initialize();
m_mduUploader.SetErr(m_eiErrInfo);
m_mduUploader.UploadInfo();
m_mduUploader.UploadErr();
m_pqDataGrabberThreadHolder->start();
m_pqTimerThreadHolder->start();
m_pqUploaderThreadHolder->start();
m_mdgGrabber.Init_Self();
m_sTimer.SelfStart();
//////////////////////////////////////////////////////////////////////////test
// DataFileProcessor testdp;
// ZZ_SysConfigger test;
// Scheduler testS;
//
// RunTimeGrabberParams testp;
// EContext testEC;
// MEContext testMEC;
// test.Initialize();
// test.LoadSettingsFromFile_System();
// test.LoadSettingsFromFile_MISC();
// test.GetGrabberRunParams(testp);
// test.GetECParams(testEC);
// test.GetMECParams(testMEC);
//
// testS.SetAcqTimeParams(testp.atsParams);
// testdp.SetEnvironmentContex(testEC);
// testdp.SetManmadeEnviromentalContext(testMEC);
//testdp.WriteDataFile();
//////////////////////////////////////////////////////////////////////////test
//CMainDataGrabber testDG;
//QThread* m_pqDataGrabberThreadHolder = new QThread();
//testDG.moveToThread(m_pqDataGrabberThreadHolder);
//testDG.SetContext(testp, testdp, testS);
//testDG.Init_Normal();
//testDG.SetGrabberFileProcessor(testdp);
//testDG.SetGrabberParams(testp);
//testDG.SetTimer(testS);
//testDG.InitThreadStatus();
//testDG.InitializeWorkers();
//testDG.SetupMsgPipelines();
//testDG.StartWorkers();
//m_pqDataGrabberThreadHolder->start();
//testDG.Init_Self();
//testDG.InitThreadStatus();
//testDG.InitializeWorkers();
//testDG.InitLS();
//testDG.SetupMsgPipelines();
//testDG.StartWorkers();
//testDG.StartGrab();
//
//QThread* m_pqTimerThreadHolder = new QThread();
//testS.moveToThread(m_pqTimerThreadHolder);
//m_pqTimerThreadHolder->start();
//testS.SelfStart();
//
//QString qstrTest = "This is a test message 2";
//qDebug() << qstrTest;
//cout << "This is a test message";
//
//test.LoadSettings_Test();
//
//ZZ_DataGrabberThread m_test;
//m_test.GrabOnce();
//QThread* m_pqDataGrabberThreadHolder;
//
//
//m_pqDataGrabberThreadHolder->start();
//m_test.TestGrabOnce();
//m_test.StartGrabCall();
//QThread::msleep(5000);
//
//m_test.StopTestGrab();
// ZZ_ATPControl_Serial_Qt m_ctrlATP;
// QByteArray qbTest;
// m_ctrlATP.ATPInitialize(7);
// m_ctrlATP.GetDeviceAttribute();
// m_ctrlATP.SetExposureTime(m_ctrlATP.m_adaDeviceAttr.iMinIntegrationTime);
// m_ctrlATP.RecvData(qbTest);
//m_test123;
//m_test123.Initialize("COM11");
//m_test123.GetHumiture(fTemp, fHum);
// int aaaaa = sizeof(unsigned long int);
// CalFrame OneFile;
// QString aa = "C:/Users/ZhangZhuo/Desktop/qepro.cal";
// QFile qfCalFile(aa);
// bRes = qfCalFile.open(QFile::ReadOnly);
// using namespace ZZ_MISCDEF;
// qfCalFile.read((char *)&OneFile.uiExposureTimeInMS, sizeof(ZZ_U32));//U32
// qfCalFile.read((char*)&OneFile.fTemperature, sizeof(double));
// qfCalFile.read((char*)&OneFile.iPixels, sizeof(int));
// qfCalFile.read((char*)OneFile.fWaveLength, sizeof(double)*OneFile.iPixels);
// qfCalFile.read((char*)OneFile.dCal_Gain, sizeof(double)*OneFile.iPixels);
// qfCalFile.read((char*)OneFile.dCal_Offset, sizeof(double)*OneFile.iPixels);
//////////////////////////////////////////////////////////////////////////
return a.exec();
}