Merge remote-tracking branch 'origin/zhangzhuo'

This commit is contained in:
2021-12-16 15:52:25 +08:00
17 changed files with 404 additions and 52 deletions

View File

@ -21,6 +21,7 @@ include_directories("source/Settings")
include_directories("source/Thread")
include_directories("source/LinearShutter")
include_directories("source/OSIF/include")
include_directories("source/Misc_Detector")
link_directories("source/OSIF/DLib")
link_directories("/home/pi/SeaBrease/lib")

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,31 +1,31 @@
[DEVICE INFO]
TotalSpectrometer=1
TotalSpectrometer=2
[FS1]
Model=OSIFAlpha
Port=-1
UID=QEP02975
AEMax=0.85
AEMin=0.75
Depth=230000
[FS2]
Model=OSIFBeta
Port=-1
UID=FLMS15815
AEMax=0.85
AEMin=0.75
Depth=65535
[FS2]
Model=OSIFBeta
Port=-1
UID=QEP02975
AEMax=0.85
AEMin=0.75
Depth=230000
[FS3]
Model=Null
[LINEAR SHUTTER]
Port=COM8
Type=1
DCID=1
TotalPosition=2
TotalPosition=6
Position0=2000
Position1=110000
Position2=220000
Position3=330000
Position4=440000
Position5=550000
[HUMITURE]
Port=COM11

View File

@ -1 +1 @@
{"BeginTime":"16:43","IntervalTime":"10","EndTime":"16:45","Location":"beijing","GPS_Longtitude":"117","GPS_Latitude":"118","GPS_Altitude":"50","GPS_North":"on","InstallationTime":"2021-11-18","ISIFCalibrationTime":"2021-11-26","IS1CalibrationTime":"2021-11-19","NameOfMaintenanceStaff":"renlixin","PhoneNumberOfMaintenanceStaff":"110110110","DownloadUserID":"newuser","DownlaodAddress":"http:\/\/www.iris-rs.cn","SIFUpCalFile":"dat1","SIFDownCalFile1":"dat2","SIFDownCalFile2":"dat2","SIFDownCalFile3":"dat3","IS1UpCalFile":"dat1","IS1DownCalFile1":"sdaf","IS1DownCalFile2":"dat2","IS1DownCalFile3":"asdf","HTTPServer":"192.168.2.1"}
{"BeginTime":"8:00","IntervalTime":"10","EndTime":"18:00","Location":"beijing","GPS_Longtitude":"117","GPS_Latitude":"118","GPS_Altitude":"50","GPS_North":"on","InstallationTime":"2021-11-18","ISIFCalibrationTime":"2021-11-26","IS1CalibrationTime":"2021-11-19","NameOfMaintenanceStaff":"renlixin","PhoneNumberOfMaintenanceStaff":"110110110","DownloadUserID":"newuser","DownlaodAddress":"http:\/\/www.iris-rs.cn","SIFUpCalFile":"dat1","SIFDownCalFile1":"dat2","SIFDownCalFile2":"dat2","SIFDownCalFile3":"dat3","IS1UpCalFile":"dat1","IS1DownCalFile1":"sdaf","IS1DownCalFile2":"dat2","IS1DownCalFile3":"asdf","HTTPServer":"192.168.2.1"}

112
main.cpp
View File

@ -5,46 +5,98 @@
#include "MainDataGrabber.h"
#include "DataFileProcessor.h"
#include "Scheduler.h"
#include "GY39Controller.h"
using namespace std;
#pragma once
int main(int argc, char *argv[])
{
using namespace ZZ_MISCDEF::ZZ_RUNPARAMS;
using namespace ZZ_MISCDEF::MISC_DETECTOR;
QCoreApplication a(argc, argv);
//////////////////////////////////////////////////////////////////////////
////
GY39Controller m_ctrlHumitureDetector;
DataFileProcessor m_dfpSaver;
ZZ_SysConfigger m_scConfiggerLoader;
Scheduler m_sTimer;
CMainDataGrabber m_mdgGrabber;
////
bool bRes;
float m_fChassisTemp, m_fChassisHum;
RunTimeGrabberParams m_struRuntimeParams;
EContext m_struEC;
MEContext m_struMEC;
HumitureDeviceInfo m_struHumitureDI;
//////////////////////////////////////////////////////////////////////////logger
//QT_LOG::ZZ_InitLogger(QCoreApplication::applicationDirPath() + "/Log/");
//////////////////////////////////////////////////////////////////////////configger
DataFileProcessor testdp;
ZZ_SysConfigger test;
Scheduler testS;
//m_test123;
//m_test123.Initialize("COM11");
//m_test123.GetHumiture(fTemp, fHum);
//////////////////////////////////////////////////////////////////////////config
bRes = m_scConfiggerLoader.Initialize();
if (bRes)
{
return -1;
}
RunTimeGrabberParams testp;
EContext testEC;
MEContext testMEC;
test.Initialize();
test.LoadSettingsFromFile_System();
test.LoadSettingsFromFile_MISC();
test.GetGrabberRunParams(testp);
test.GetECParams(testEC);
test.GetMECParams(testMEC);
m_scConfiggerLoader.GetParams(m_struRuntimeParams, m_struEC, m_struMEC, m_struHumitureDI);
testS.SetAcqTimeParams(testp.atsParams);
m_sTimer.SetAcqTimeParams(m_struRuntimeParams.atsParams);
m_dfpSaver.SetEnvironmentContex(m_struEC);
m_dfpSaver.SetManmadeEnviromentalContext(m_struMEC);
m_ctrlHumitureDetector.Initialize(m_struHumitureDI.qstrInterfaceName.toStdString());
//////////////////////////////////////////////////////////////////////////prepare
m_sTimer.Preheating();
m_ctrlHumitureDetector.GetHumiture_retry(m_fChassisTemp, m_fChassisHum);
//////////////////////////////////////////////////////////////////////////
QThread* m_pqDataGrabberThreadHolder = new QThread();
QThread* m_pqTimerThreadHolder = new QThread();
testdp.SetEnvironmentContex(testEC);
testdp.SetManmadeEnviromentalContext(testMEC);
m_mdgGrabber.moveToThread(m_pqDataGrabberThreadHolder);
m_sTimer.moveToThread(m_pqTimerThreadHolder);
m_mdgGrabber.SetContext(m_struRuntimeParams, m_dfpSaver, m_sTimer);
m_mdgGrabber.Init_Normal();
m_pqDataGrabberThreadHolder->start();
m_pqTimerThreadHolder->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
using namespace ZZ_MISCDEF::ZZ_RUNPARAMS;
CMainDataGrabber testDG;
QThread* m_pqDataGrabberThreadHolder = new QThread();
testDG.moveToThread(m_pqDataGrabberThreadHolder);
testDG.SetContext(testp, testdp, testS);
testDG.Init_Normal();
//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);
@ -52,23 +104,19 @@ int main(int argc, char *argv[])
//testDG.InitializeWorkers();
//testDG.SetupMsgPipelines();
//testDG.StartWorkers();
m_pqDataGrabberThreadHolder->start();
testDG.Init_Self();
//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();
//QThread* m_pqTimerThreadHolder = new QThread();
//testS.moveToThread(m_pqTimerThreadHolder);
//m_pqTimerThreadHolder->start();
//testS.SelfStart();
//QString qstrTest = "This is a test message 2";
//qDebug() << qstrTest;

View File

@ -13,7 +13,7 @@ namespace ZZ_MISCDEF
typedef unsigned char ZZ_U8;
typedef unsigned short int ZZ_U16;
typedef unsigned long int ZZ_U32;
typedef long int ZZ_S32;
typedef long int ZZ_S32;
namespace IRIS
@ -311,4 +311,12 @@ namespace ZZ_MISCDEF
}ATPDataHeader;
}
//misc detector
namespace MISC_DETECTOR
{
typedef struct tagHumitureDeviceInfo
{
QString qstrInterfaceName;
}HumitureDeviceInfo;
}
};

View File

@ -0,0 +1,159 @@
#include "GY39Controller.h"
#include "ZZ_Types.h"
using namespace ZZ_MISCDEF;
GY39Controller::GY39Controller(QObject* parent /*= nullptr*/)
{
m_pSerialPort = new QSerialPort;
m_iBaudRate = 9600;
}
GY39Controller::~GY39Controller()
{
if (m_pSerialPort != NULL)
{
delete m_pSerialPort;
}
}
int GY39Controller::SendCommand(QByteArray qbCommand)
{
qint64 qi64Write = m_pSerialPort->write(qbCommand);
if (qi64Write != qbCommand.size())
{
qDebug() << "Err:write Failed.Exit Code:1" << qi64Write;
return 1;
}
return 0;
}
int GY39Controller::RecvHumitureData(QByteArray &qbData)
{
qbData.clear();
qbData = m_pSerialPort->readAll();
int iCounter = 0;
while (qbData.size() < 15)
{
m_pSerialPort->waitForReadyRead(50);
QByteArray qbTemp = m_pSerialPort->readAll();
qbData.append(qbTemp);
if (iCounter > 10)
{
qDebug() << "Err:RecvHumitureData Failed,Not Enough Data.Exit Code:1" << qbData.size();
return 1;
}
iCounter++;
}
return 0;
}
int GY39Controller::ParseHumitureData(QByteArray &qbData)
{
ZZ_U8 cTempH8, cTempL8, cHumH8, cHumL8;
cTempH8 = qbData[4];
cTempL8 = qbData[5];
cHumH8 = qbData[10];
cHumL8 = qbData[11];
float fTemp = (cTempH8 << 8) | cTempL8;
fTemp = fTemp / 100;
float fHum = (cHumH8 << 8) | cHumL8;
fHum = fHum / 100;
m_fTemperature = fTemp;
m_fHumidity = fHum;
return 0;
}
int GY39Controller::Initialize(std::string ucPortName, bool bAuto15/*=false*/, bool bAuto45/*=false*/)
{
QString qstrPortName = QString::fromStdString(ucPortName);
m_pSerialPort->setPortName(qstrPortName);
m_pSerialPort->setReadBufferSize(512);
bool bRes = m_pSerialPort->setBaudRate(m_iBaudRate);
if (!bRes)
{
qDebug() << "Err:setBaudRate Failed.Exit Code:1";
//std::cout << "Err.setBaudRate Failed" << std::endl;
return 1;
}
bRes = m_pSerialPort->open(QIODevice::ReadWrite);
if (!bRes)
{
qDebug() << "Err:open Failed.Exit Code:2";
//std::cout << "Err.open Failed" << std::endl;
return 2;
}
QByteArray qbSend;
if (bAuto15==false && bAuto45==false)
{
qbSend.resize(3);
qbSend[0] = (ZZ_U8)0xA5;
qbSend[1] = (ZZ_U8)0x00;
qbSend[2] = (ZZ_U8)0xA5;
}
if (bAuto15 == true && bAuto45 == true)
{
qbSend.resize(3);
qbSend[0] = (ZZ_U8)0xA5;
qbSend[1] = (ZZ_U8)0x03;
qbSend[2] = (ZZ_U8)0xA8;
}
SendCommand(qbSend);
return 0;
}
int GY39Controller::GetHumiture(float &fTemp, float &fHum)
{
QByteArray qbSend,qbRecv;
qbSend.resize(3);
qbSend[0] = (ZZ_U8)0xA5;
qbSend[1] = (ZZ_U8)0x52;
qbSend[2] = (ZZ_U8)0xF7;
int iRes = SendCommand(qbSend);
if (iRes)
{
return iRes;
}
iRes = RecvHumitureData(qbRecv);
if (iRes)
{
return iRes;
}
ParseHumitureData(qbRecv);
fTemp = m_fTemperature;
fHum = m_fHumidity;
return 0;
}
int GY39Controller::GetHumiture_retry(float &fTemp, float &fHum)
{
int iCount = 0;
while (iCount<3)
{
if (GetHumiture(fTemp, fHum) == 0)
{
return 0;
}
else
{
iCount++;
}
}
return 1;
}

View File

@ -0,0 +1,24 @@
#pragma once
#include "pch.h"
class GY39Controller :public QObject
{
Q_OBJECT
public:
GY39Controller(QObject* parent = nullptr);
~GY39Controller();
private:
int SendCommand(QByteArray qbCommand);
int RecvHumitureData(QByteArray &qbData);
int ParseHumitureData(QByteArray &qbData);
public:
int Initialize(std::string ucPortName,bool bAuto15 = false,bool bAuto45 = false);
int GetHumiture(float &fTemp, float &fHum);
int GetHumiture_retry(float &fTemp, float &fHum);
public slots:
signals:
private:
int m_iBaudRate;
QSerialPort *m_pSerialPort;
float m_fTemperature, m_fHumidity;
};

View File

@ -33,6 +33,7 @@
delete m_qsDeviceConfig;
}
m_qsDeviceConfig = new QSettings(m_qstrDeviceConfigFilePath, QSettings::IniFormat);
////FS
m_struFSContext.ucDeviceNumber = m_qsDeviceConfig->value(QString("DEVICE INFO/TotalSpectrometer"),-1).toInt();
if (m_struFSContext.ucDeviceNumber == -1)
{
@ -60,6 +61,7 @@
m_struFSContext.lDepth[i] = lDepth;
}
////LS
m_struAcqPosition.iTotalPosition = m_qsDeviceConfig->value(QString("LINEAR SHUTTER/TotalPosition"), -1).toInt();
if (m_struAcqPosition.iTotalPosition == -1)
{
@ -77,6 +79,9 @@
m_struLSContext.ucCmdID = m_qsDeviceConfig->value(QString("LINEAR SHUTTER/DCID")).toInt();
m_struLSContext.ucProtocolType = m_qsDeviceConfig->value(QString("LINEAR SHUTTER/Type")).toInt();
m_struLSContext.strInterface = m_qsDeviceConfig->value(QString("LINEAR SHUTTER/Port")).toString().toStdString();
//////////////////////////////////////////////////////////////////////////humiture
m_struHumitureDeviceInfo.qstrInterfaceName = m_qsDeviceConfig->value(QString("HUMITURE/Port")).toString();
//////////////////////////////////////////////////////////////////////////load json settings
qfJConfig.setFileName(m_qstrJSONConfigFilePath);
bool bRes = qfJConfig.open(QIODevice::ReadOnly);
@ -94,6 +99,21 @@
return 2;
}
m_qjoJObj = m_qjdJDoc.object();
int iRes = LoadSettingsFromFile_System();
if (iRes)
{
qDebug() << " SysConfigger Initialize Err...LoadSettingsFromFile_System";
return iRes;
}
iRes = LoadSettingsFromFile_MISC();
if (iRes)
{
qDebug() << " SysConfigger Initialize Err...LoadSettingsFromFile_MISC";
return iRes;
}
return 0;
}
@ -118,6 +138,21 @@
return 0;
}
int ZZ_SysConfigger::GetMiscParams(HumitureDeviceInfo &struHDI)
{
struHDI = m_struHumitureDeviceInfo;
return 0;
}
int ZZ_SysConfigger::GetParams(RunTimeGrabberParams &struGrabberRTParams, EContext &struEC, MEContext &struMEC, HumitureDeviceInfo &struHDI)
{
GetGrabberRunParams(struGrabberRTParams);
GetECParams(struEC);
GetMECParams(struMEC);
GetMiscParams(struHDI);
return 0;
}
int ZZ_SysConfigger::LoadSettingsFromFile_IS1()
{
m_struIS1Info.qstrCalFile_U0 = m_qjoJObj.value("IS1UpCalFile").toString();

View File

@ -3,7 +3,7 @@
#include "ZZ_Types.h"
using namespace ZZ_MISCDEF::ZZ_RUNPARAMS;
using namespace ZZ_MISCDEF::ZZ_DATAFILE;
using namespace ZZ_MISCDEF::MISC_DETECTOR;
class ZZ_SysConfigger :public QObject
{
Q_OBJECT
@ -16,6 +16,8 @@ public:
int GetGrabberRunParams(RunTimeGrabberParams &struGrabberRTParams);
int GetECParams(EContext &struEC);
int GetMECParams(MEContext &struMEC);
int GetMiscParams(HumitureDeviceInfo &struHDI);
int GetParams(RunTimeGrabberParams &struGrabberRTParams, EContext &struEC, MEContext &struMEC, HumitureDeviceInfo &struHDI);
int LoadSettingsFromFile_IS1();
int LoadSettingsFromFile_iSIF();
@ -38,6 +40,7 @@ public:
LSContext m_struLSContext;
FSContext m_struFSContext;
AcqPosSettings m_struAcqPosition;
HumitureDeviceInfo m_struHumitureDeviceInfo;
//////////////////////////////////////////////////////////////////////////
EContext m_struEC;
MEContext m_struMEC;

View File

@ -381,7 +381,7 @@ int CMainDataGrabber::GrabOnceFinished()
for (int i=0;i< m_struAcqPosSetting.iTotalPosition-1;i++)
{
////move to
m_ctrlLS.ILMES_MoveToPos(i+1);
// m_ctrlLS.ILMES_MoveToPos(i+1);
m_struAcqPosSetting.iPosition[i + 1];
m_iFlagIsCapturing_Signal = 1;
emit SignalStartGrabOnce_Signal();
@ -392,7 +392,7 @@ int CMainDataGrabber::GrabOnceFinished()
////move to
m_ctrlLS.ILMES_MoveToPos(0);
// m_ctrlLS.ILMES_MoveToPos(0);
m_struAcqPosSetting.iPosition[0];
m_iFlagIsCapturing_Dark = 1;
emit SignalStartGrabOnce_Dark();

View File

@ -44,20 +44,27 @@ void Scheduler::StartAsPlanned()
while (!bStopWait)
{
QThread::msleep(100);
if (m_struAcqTime.qtStartTime >= qtTime && qtTime < m_struAcqTime.qtStopTime)
if (m_struAcqTime.qtStartTime <= qtTime && qtTime < m_struAcqTime.qtStopTime)
{
bStopWait = true;
}
}
int iIntervalInMS = m_struAcqTime.qtInterval.hour() * 3600 * 1000 + m_struAcqTime.qtInterval.minute() * 60 * 1000 + m_struAcqTime.qtInterval.second() * 1000;
int iIntervalInMS = m_struAcqTime.qtInterval.hour() * 3600 * 1000 + m_struAcqTime.qtInterval.minute() * 60 * 1000 + m_struAcqTime.qtInterval.second() * 1000;
m_GrabTimer->start(iIntervalInMS);
}
int Scheduler::OnTimeCounter()
{
QTime qtTime = QTime::currentTime();
if (m_struAcqTime.qtStartTime <= qtTime && qtTime < m_struAcqTime.qtStopTime)
{
return 1;
qDebug() << "Non working time. Idling......";
}
emit SignalGrabOnce();
return 0;
}