联调通过

This commit is contained in:
2021-12-13 17:18:24 +08:00
parent ec8bb49b8f
commit b101e74763
30 changed files with 396 additions and 92 deletions

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

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,26 +1,31 @@
[DEVICE INFO] [DEVICE INFO]
TotalSpectrometer=2 TotalSpectrometer=1
[FS1] [FS1]
Model=OSIFAlpha
Port=-1
UID=QEP02975
AEMax=0.85
AEMin=0.75
Depth=230000
[FS2]
Model=OSIFBeta Model=OSIFBeta
Port=-1 Port=-1
UID=FLMS15815 UID=FLMS15815
AEMax=0.85 AEMax=0.85
AEMin=0.75 AEMin=0.75
Depth=65535 Depth=65535
[FS2]
Model=OSIFAlpha
Port=-1
UID=QEP02975
AEMax=0.85
AEMin=0.75
Depth=65535
[FS3] [FS3]
Model=Null Model=Null
[LINEAR SHUTTER] [LINEAR SHUTTER]
Port=4 Port=COM8
Type=0 Type=1
DCID=1 DCID=1
TotalPosition=2 TotalPosition=6
Position0=100000 Position0=2000
Position1=200000 Position1=110000
Position2=220000
Position3=330000
Position4=440000
Position5=550000

View File

@ -4,6 +4,7 @@
#include "SystemConfigger.h" #include "SystemConfigger.h"
#include "MainDataGrabber.h" #include "MainDataGrabber.h"
#include "DataFileProcessor.h" #include "DataFileProcessor.h"
#include "Scheduler.h"
using namespace std; using namespace std;
#pragma once #pragma once
@ -18,6 +19,8 @@ int main(int argc, char *argv[])
//////////////////////////////////////////////////////////////////////////configger //////////////////////////////////////////////////////////////////////////configger
DataFileProcessor testdp; DataFileProcessor testdp;
ZZ_SysConfigger test; ZZ_SysConfigger test;
Scheduler testS;
RunTimeGrabberParams testp; RunTimeGrabberParams testp;
EContext testEC; EContext testEC;
MEContext testMEC; MEContext testMEC;
@ -28,6 +31,10 @@ int main(int argc, char *argv[])
test.GetECParams(testEC); test.GetECParams(testEC);
test.GetMECParams(testMEC); test.GetMECParams(testMEC);
testS.SetAcqTimeParams(testp.atsParams);
testdp.SetEnvironmentContex(testEC); testdp.SetEnvironmentContex(testEC);
testdp.SetManmadeEnviromentalContext(testMEC); testdp.SetManmadeEnviromentalContext(testMEC);
//testdp.WriteDataFile(); //testdp.WriteDataFile();
@ -38,19 +45,22 @@ int main(int argc, char *argv[])
testDG.moveToThread(m_pqDataGrabberThreadHolder); testDG.moveToThread(m_pqDataGrabberThreadHolder);
testDG.SetGrabberFileProcessor(testdp); testDG.SetGrabberFileProcessor(testdp);
testDG.SetGrabberParams(testp); testDG.SetGrabberParams(testp);
testDG.SetTimer(testS);
testDG.InitThreadStatus(); testDG.InitThreadStatus();
testDG.InitializeWorkers(); testDG.InitializeWorkers();
testDG.InitLS();
testDG.SetupMsgPipelines(); testDG.SetupMsgPipelines();
testDG.StartWorkers(); testDG.StartWorkers();
m_pqDataGrabberThreadHolder->start(); m_pqDataGrabberThreadHolder->start();
testDG.StartGrab(); //testDG.StartGrab();
QThread* m_pqTimerThreadHolder = new QThread();
testS.moveToThread(m_pqTimerThreadHolder);
m_pqTimerThreadHolder->start();
testS.SelfStart();
//QString qstrTest = "This is a test message 2"; //QString qstrTest = "This is a test message 2";
//qDebug() << qstrTest; //qDebug() << qstrTest;

View File

@ -25,9 +25,9 @@ ZZ_ATPControl_Serial_Qt::~ZZ_ATPControl_Serial_Qt()
// } // }
int ZZ_ATPControl_Serial_Qt::Initialize(bool bIsUSBMode, ZZ_U8 ucPortNumber, std::string strDeviceName) int ZZ_ATPControl_Serial_Qt::Initialize(bool bIsUSBMode, std::string ucPortNumber, std::string strDeviceName)
{ {
QString qstrPortName = QString("COM%1").arg(ucPortNumber); QString qstrPortName = QString::fromStdString(ucPortNumber);
m_pSerialPort->setPortName(qstrPortName); m_pSerialPort->setPortName(qstrPortName);
m_pSerialPort->setReadBufferSize(512); m_pSerialPort->setReadBufferSize(512);

View File

@ -21,7 +21,7 @@ public:
//<2F><><EFBFBD>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD> //<2F><><EFBFBD>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD>
//int SetBaudRate(int iBaud); //int SetBaudRate(int iBaud);
//<2F><>ʼ<EFBFBD><CABC><EFBFBD> //<2F><>ʼ<EFBFBD><CABC><EFBFBD>
int Initialize(bool bIsUSBMode, ZZ_U8 ucPortNumber, std::string strDeviceName); int Initialize(bool bIsUSBMode, std::string ucPortNumber, std::string strDeviceName);
//<2F>ر<EFBFBD><D8B1> //<2F>ر<EFBFBD><D8B1>
void Close(); void Close();

View File

@ -15,7 +15,7 @@ public:
//<2F><>ʼ<EFBFBD><CABC><EFBFBD> //<2F><>ʼ<EFBFBD><CABC><EFBFBD>
//<2F>˴<EFBFBD>stringΪָ<CEAA><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD>ocean<61><6E><EFBFBD><EFBFBD><EFBFBD>ǵIJ<C7B5><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>и<EFBFBD><D0B8><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>c/c++<2B><>׼<EFBFBD><D7BC><EFBFBD><EFBFBD> //<2F>˴<EFBFBD>stringΪָ<CEAA><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD>ocean<61><6E><EFBFBD><EFBFBD><EFBFBD>ǵIJ<C7B5><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>и<EFBFBD><D0B8><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>c/c++<2B><>׼<EFBFBD><D7BC><EFBFBD><EFBFBD>
//0Ϊ<30>޴<EFBFBD><DEB4>󣬲<EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ز<EFBFBD>ֵͬ //0Ϊ<30>޴<EFBFBD><DEB4>󣬲<EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ز<EFBFBD>ֵͬ
virtual int Initialize(bool bIsUSBMode,ZZ_U8 ucPortNumber,std::string strDeviceName) = 0; virtual int Initialize(bool bIsUSBMode, std::string ucPortNumber,std::string strDeviceName) = 0;
//<2F>ر<EFBFBD><D8B1> //<2F>ر<EFBFBD><D8B1>
virtual void Close() = 0; virtual void Close() = 0;

View File

@ -13,7 +13,7 @@ OceanOptics_lib::~OceanOptics_lib()
} }
//ʹ<><CAB9>ͷ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>#include "api/SeaBreezeWrapper.h" //ʹ<><CAB9>ͷ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>#include "api/SeaBreezeWrapper.h"
int OceanOptics_lib::Initialize(bool bIsUSBMode, ZZ_U8 ucPortNumber, std::string strDeviceName) int OceanOptics_lib::Initialize(bool bIsUSBMode, std::string ucPortNumber, std::string strDeviceName)
{ {
int flag; int flag;
int error; int error;

Binary file not shown.

View File

@ -183,7 +183,7 @@ namespace ZZ_MISCDEF
{ {
ZZ_U8 ucDeviceNumber; ZZ_U8 ucDeviceNumber;
ZZ_U8 ucDeviceModel[MAX_DEVICENUMBER_FS]; ZZ_U8 ucDeviceModel[MAX_DEVICENUMBER_FS];
int iInterface[MAX_DEVICENUMBER_FS]; std::string strInterface[MAX_DEVICENUMBER_FS];
std::string strSN[MAX_DEVICENUMBER_FS]; std::string strSN[MAX_DEVICENUMBER_FS];
long lDepth[MAX_DEVICENUMBER_FS]; long lDepth[MAX_DEVICENUMBER_FS];
float fMinFactor[MAX_DEVICENUMBER_FS]; float fMinFactor[MAX_DEVICENUMBER_FS];
@ -194,7 +194,7 @@ namespace ZZ_MISCDEF
typedef struct tagLinearShutterContext typedef struct tagLinearShutterContext
{ {
ZZ_U8 ucPort; std::string strInterface;
ZZ_U8 ucProtocolType; ZZ_U8 ucProtocolType;
ZZ_U8 ucCmdID; ZZ_U8 ucCmdID;
}LSContext; }LSContext;

View File

@ -10,6 +10,7 @@ public:
virtual void Close() = 0; virtual void Close() = 0;
virtual std::string ReadAll() = 0; virtual std::string ReadAll() = 0;
virtual std::string ReadAll(int iWait) = 0;
virtual int Write(const std::string strSend) = 0; virtual int Write(const std::string strSend) = 0;
}; };

View File

@ -188,7 +188,7 @@ bool CVSMD12XControl::GetStatus(MSInfo &stuMotorParam)
int iRet = m_pAbsPort->Write(strCMD); int iRet = m_pAbsPort->Write(strCMD);
QThread::msleep(200); //QThread::msleep(200);
std::string strRecv = m_pAbsPort->ReadAll(); std::string strRecv = m_pAbsPort->ReadAll();
ParseReturnedParam(strRecv); ParseReturnedParam(strRecv);
@ -295,6 +295,7 @@ bool CVSMD12XControl::MoveTo(int iAbsPulse)
int iRet = m_pAbsPort->Write(strCMD); int iRet = m_pAbsPort->Write(strCMD);
QThread::msleep(200); QThread::msleep(200);
//Delay_MSec(200);
m_pAbsPort->ReadAll(); m_pAbsPort->ReadAll();
@ -309,6 +310,7 @@ bool CVSMD12XControl::MoveTo(int iAbsPulse)
while (!bFlagIsStopped) while (!bFlagIsStopped)
{ {
QThread::msleep(200); QThread::msleep(200);
//Delay_MSec(200);
GetStatus(m_stuMSInfo); GetStatus(m_stuMSInfo);
ZZ_U8 ucFlag = m_stuMSInfo.uiFlags & 0x000000FF; ZZ_U8 ucFlag = m_stuMSInfo.uiFlags & 0x000000FF;
ucFlag = ucFlag & 0x10; ucFlag = ucFlag & 0x10;
@ -370,7 +372,8 @@ bool CVSMD12XControl::StartBackZero()
int iRet = m_pAbsPort->Write(strCMD); int iRet = m_pAbsPort->Write(strCMD);
QThread::msleep(200); //QThread::msleep(200);
//Delay_MSec(200);
std::string strRecv = m_pAbsPort->ReadAll(); std::string strRecv = m_pAbsPort->ReadAll();
@ -383,6 +386,7 @@ bool CVSMD12XControl::StartBackZero()
while (!bFlagIsStopped) while (!bFlagIsStopped)
{ {
QThread::msleep(200); QThread::msleep(200);
//Delay_MSec(200);
GetStatus(m_stuMSInfo); GetStatus(m_stuMSInfo);
ZZ_U8 ucFlag = m_stuMSInfo.uiFlags & 0x000000FF; ZZ_U8 ucFlag = m_stuMSInfo.uiFlags & 0x000000FF;
ucFlag = ucFlag & 0x10; ucFlag = ucFlag & 0x10;
@ -1151,10 +1155,63 @@ bool CVSMD12XControl::ParseReturnedString(std::string &strRecv, int iType)
bool CVSMD12XControl::ParseReturnedParam(std::string &strRecv) bool CVSMD12XControl::ParseReturnedParam(std::string &strRecv)
{ {
while (uchar(strRecv[0]) != 0xff && strRecv.size() > 0)
{
//std::cout << strRecv.size() << endl;
strRecv.erase(strRecv.begin());
//std::cout << strRecv.size() << endl;
}
int iTry = 0;
while (strRecv.size() < 2)
{
std::string strRecv1 = m_pAbsPort->ReadAll();
if (strRecv1.size() == 0)
{
return false;
}
strRecv = strRecv + strRecv1;
iTry++;
if (iTry == 2)
{
return false;
}
}
if (strRecv[2]==0x2) if (strRecv[2]==0x2)
{ {
//strRecv.erase(0, 3); //strRecv.erase(0, 3);
//strRecv.erase(strRecv.size() - 3, 3); //strRecv.erase(strRecv.size() - 3, 3);
int iRetry = 0;
while (strRecv.size() != 21)
{
std::string strRecvTemp = "";
strRecvTemp = m_pAbsPort->ReadAll(20);
if (strRecvTemp.size() == 0)
{
return false;
}
strRecv = strRecv + strRecvTemp;
iRetry++;
if (iRetry == 5)
{
return false;
}
if (strRecv.size() > 21)
{
return false;
}
//return false;
}
if (strRecv.size() != 21) if (strRecv.size() != 21)
{ {
return false; return false;
@ -1317,6 +1374,13 @@ char* CVSMD12XControl::VSMD_Split(char* cStr, char cSplit)
return NULL; return NULL;
} }
void CVSMD12XControl::Delay_MSec(ZZ_U16 usMS)
{
QEventLoop qeLoop;
QTimer::singleShot(usMS, &qeLoop, SLOT(quit()));
qeLoop.exec();
}
// int CVSMD12XControl::add(int a, int b) // int CVSMD12XControl::add(int a, int b)
// { // {
// return a + b; // return a + b;

View File

@ -139,5 +139,8 @@ private:
bool ParseReturnedParam(std::string &strRecv); bool ParseReturnedParam(std::string &strRecv);
void VSMD_BitShift(ZZ_U8* src, unValue* dst); void VSMD_BitShift(ZZ_U8* src, unValue* dst);
char* VSMD_Split(char* cStr, char cSplit); char* VSMD_Split(char* cStr, char cSplit);
//////////////////////////////////////////////////////////////////////////qt
void Delay_MSec(ZZ_U16 usMS);
}; };

View File

@ -7,15 +7,15 @@ using namespace ZZ_MISCDEF;
typedef struct tagTransportLayerInfomation typedef struct tagTransportLayerInfomation
{ {
//Serial //Serial
int iPortType; int iPortType = 0;
int iPortNumber; int iPortNumber;
int indexBaudRate; int iIndexBaudRate;
int iBaudRate; int iBaudRate = 9600;
int indexParity, indexBytesize, indexStopBits; //Mode int indexParity = 0, indexBytesize = 3, indexStopBits = 0; //Mode
bool Hw; bool Hw;
bool Sw; bool Sw;
bool Dtr, Rts; bool Dtr, Rts;
QString qstrFullPortName = "";
//Bit //Bit
//Stop //Stop
//MODEM CONTROL setting //MODEM CONTROL setting
@ -34,11 +34,11 @@ typedef struct tagMotorStatusInfo
typedef struct tagControllerParams typedef struct tagControllerParams
{ {
int bdr; //baud int bdr = 9600; //baud
int mcs; //microsteps 0:full 1:half 2:4 3:8 4:16 5:32 6:64 7:128 8:256 int mcs = 6; //microsteps 0:full 1:half 2:4 3:8 4:16 5:32 6:64 7:128 8:256
float spd; //velocity float spd = 64000; //velocity
float acc; //acceleration float acc = 100000; //acceleration
float dec; //deceleration float dec = 100000; //deceleration
float cra; //acc state current float cra; //acc state current
float crn; //normal state current float crn; //normal state current
float crh; //hold state current float crh; //hold state current
@ -46,11 +46,11 @@ typedef struct tagControllerParams
ZZ_U8 s1r; ZZ_U8 s1r;
ZZ_U8 s2f; ZZ_U8 s2f;
ZZ_U8 s2r; ZZ_U8 s2r;
ZZ_U8 zmd; //zero mode ZZ_U8 zmd = 3; //zero mode
ZZ_U8 osv; //open state sensor value ZZ_U8 osv = 0; //open state sensor value
ZZ_U8 snr; //zero sensor ZZ_U8 snr = 0; //zero sensor
ZZ_U8 zsp; //zero safe position ZZ_U8 zsp = 200; //zero safe position
float zsd; //zero velocity float zsd = 50000; //zero velocity
}ControllerParams; }ControllerParams;
typedef union typedef union

View File

@ -31,7 +31,17 @@ CZZ_SeiralPort_QT::~CZZ_SeiralPort_QT()
// { // {
// bRes = false; // bRes = false;
// } // }
QString qstrPortName = QString("COM%1").arg(m_piSettings.iPortNumber); QString qstrPortName;
if (m_piSettings.qstrFullPortName != "")
{
qstrPortName = m_piSettings.qstrFullPortName;
qDebug() << m_piSettings.qstrFullPortName;
}
else
{
qstrPortName = QString("COM%1").arg(m_piSettings.iPortNumber);
}
//QString qstrPortName = QString("COM%1").arg(m_piSettings.iPortNumber);
m_pSerialPort->setPortName(qstrPortName); m_pSerialPort->setPortName(qstrPortName);
m_pSerialPort->setReadBufferSize(512); m_pSerialPort->setReadBufferSize(512);
bRes = m_pSerialPort->setBaudRate(m_piSettings.iBaudRate); bRes = m_pSerialPort->setBaudRate(m_piSettings.iBaudRate);
@ -63,7 +73,7 @@ void CZZ_SeiralPort_QT::Close()
std::string CZZ_SeiralPort_QT::ReadAll() std::string CZZ_SeiralPort_QT::ReadAll()
{ {
m_pSerialPort->waitForReadyRead(); m_pSerialPort->waitForReadyRead(1000);
qbaRecv.clear(); qbaRecv.clear();
qbaRecv = m_pSerialPort->readAll(); qbaRecv = m_pSerialPort->readAll();
std::string strRet(qbaRecv.constData(), qbaRecv.length()); std::string strRet(qbaRecv.constData(), qbaRecv.length());
@ -95,6 +105,15 @@ std::string CZZ_SeiralPort_QT::ReadAll()
// return strRet; // return strRet;
} }
std::string CZZ_SeiralPort_QT::ReadAll(int iWait)
{
m_pSerialPort->waitForReadyRead(iWait);
qbaRecv.clear();
qbaRecv = m_pSerialPort->readAll();
std::string strRet(qbaRecv.constData(), qbaRecv.length());
return strRet;
}
int CZZ_SeiralPort_QT::Write(const std::string strSend) int CZZ_SeiralPort_QT::Write(const std::string strSend)
{ {
QByteArray qbaTest(strSend.c_str(),(int)strSend.length()); QByteArray qbaTest(strSend.c_str(),(int)strSend.length());

View File

@ -19,6 +19,7 @@ public:
virtual void Close(); virtual void Close();
virtual std::string ReadAll(); virtual std::string ReadAll();
virtual std::string ReadAll(int iWait);
virtual int Write(const std::string strSend); virtual int Write(const std::string strSend);
}; };

View File

@ -32,31 +32,31 @@
delete m_qsDeviceConfig; delete m_qsDeviceConfig;
} }
m_qsDeviceConfig = new QSettings(m_qstrDeviceConfigFilePath, QSettings::IniFormat); m_qsDeviceConfig = new QSettings(m_qstrDeviceConfigFilePath, QSettings::IniFormat);
m_struDeviceContext.ucDeviceNumber = m_qsDeviceConfig->value(QString("DEVICE INFO/TotalSpectrometer"),-1).toInt(); m_struFSContext.ucDeviceNumber = m_qsDeviceConfig->value(QString("DEVICE INFO/TotalSpectrometer"),-1).toInt();
if (m_struDeviceContext.ucDeviceNumber == -1) if (m_struFSContext.ucDeviceNumber == -1)
{ {
qDebug() << "DEVICE INFO TotalSpectrometer Value Err."; qDebug() << "DEVICE INFO TotalSpectrometer Value Err.";
return 3; return 3;
} }
for (ZZ_U8 i=0;i< m_struDeviceContext.ucDeviceNumber;i++) for (ZZ_U8 i=0;i< m_struFSContext.ucDeviceNumber;i++)
{ {
QString qstrTemp= m_qsDeviceConfig->value(QString("FS%1/Model").arg(i+1), "Null").toString(); QString qstrTemp= m_qsDeviceConfig->value(QString("FS%1/Model").arg(i+1), "Null").toString();
m_struDeviceContext.ucDeviceModel[i]= enumDeviceModel.keysToValue(qstrTemp.toLatin1().data()); m_struFSContext.ucDeviceModel[i]= enumDeviceModel.keysToValue(qstrTemp.toLatin1().data());
int iInterface= m_qsDeviceConfig->value(QString("FS%1/Port").arg(i + 1), -2).toInt(); int iInterface= m_qsDeviceConfig->value(QString("FS%1/Port").arg(i + 1), -2).toInt();
m_struDeviceContext.iInterface[i] = iInterface; m_struFSContext.strInterface[i] = iInterface;
qstrTemp = m_qsDeviceConfig->value(QString("FS%1/UID").arg(i + 1), "Null").toString(); qstrTemp = m_qsDeviceConfig->value(QString("FS%1/UID").arg(i + 1), "Null").toString();
m_struDeviceContext.strSN[i] = qstrTemp.toStdString(); m_struFSContext.strSN[i] = qstrTemp.toStdString();
float fAEMax= m_qsDeviceConfig->value(QString("FS%1/AEMax").arg(i + 1), 0.9).toFloat(); float fAEMax= m_qsDeviceConfig->value(QString("FS%1/AEMax").arg(i + 1), 0.9).toFloat();
m_struDeviceContext.fMaxFactor[i] = fAEMax; m_struFSContext.fMaxFactor[i] = fAEMax;
float fAEMin = m_qsDeviceConfig->value(QString("FS%1/AEMin").arg(i + 1), 0.8).toFloat(); float fAEMin = m_qsDeviceConfig->value(QString("FS%1/AEMin").arg(i + 1), 0.8).toFloat();
m_struDeviceContext.fMinFactor[i] = fAEMin; m_struFSContext.fMinFactor[i] = fAEMin;
long lDepth = m_qsDeviceConfig->value(QString("FS%1/Depth").arg(i + 1), 63219).toInt(); long lDepth = m_qsDeviceConfig->value(QString("FS%1/Depth").arg(i + 1), 63219).toInt();
m_struDeviceContext.lDepth[i] = lDepth; m_struFSContext.lDepth[i] = lDepth;
} }
m_struAcqPosition.iTotalPosition = m_qsDeviceConfig->value(QString("LINEAR SHUTTER/TotalPosition"), -1).toInt(); m_struAcqPosition.iTotalPosition = m_qsDeviceConfig->value(QString("LINEAR SHUTTER/TotalPosition"), -1).toInt();
@ -73,7 +73,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();
//////////////////////////////////////////////////////////////////////////load json settings //////////////////////////////////////////////////////////////////////////load json settings
qfJConfig.setFileName(m_qstrJSONConfigFilePath); qfJConfig.setFileName(m_qstrJSONConfigFilePath);
bool bRes = qfJConfig.open(QIODevice::ReadOnly); bool bRes = qfJConfig.open(QIODevice::ReadOnly);
@ -97,7 +99,9 @@
int ZZ_SysConfigger::GetGrabberRunParams(RunTimeGrabberParams &struGrabberRTParams) int ZZ_SysConfigger::GetGrabberRunParams(RunTimeGrabberParams &struGrabberRTParams)
{ {
struGrabberRTParams.atsParams = m_struAcqTime; struGrabberRTParams.atsParams = m_struAcqTime;
struGrabberRTParams.fscParams = m_struDeviceContext; struGrabberRTParams.fscParams = m_struFSContext;
struGrabberRTParams.lscParam = m_struLSContext;
struGrabberRTParams.apsParams = m_struAcqPosition;
return 0; return 0;
} }

View File

@ -35,7 +35,8 @@ public:
Q_ENUM(ConfiggerDeviceModel); Q_ENUM(ConfiggerDeviceModel);
//////////////////////////////////////////////////////////////////////////run-time settings //////////////////////////////////////////////////////////////////////////run-time settings
AcqTimeSettings m_struAcqTime; AcqTimeSettings m_struAcqTime;
FSContext m_struDeviceContext; LSContext m_struLSContext;
FSContext m_struFSContext;
AcqPosSettings m_struAcqPosition; AcqPosSettings m_struAcqPosition;
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
EContext m_struEC; EContext m_struEC;

View File

@ -37,7 +37,7 @@ int CAbstractFSController::InitializeFSControl()
{ {
case DeviceModel::OSIFAlpha: case DeviceModel::OSIFAlpha:
m_pFSCtrl = new OceanOptics_lib; m_pFSCtrl = new OceanOptics_lib;
if (m_pFSCtrl->Initialize(false, m_fsInfo.iInterface, m_fsInfo.strSN) != 0) if (m_pFSCtrl->Initialize(false, m_fsInfo.strInterface, m_fsInfo.strSN) != 0)
{ {
qDebug() << "OSIFAlpha Not Opened"; qDebug() << "OSIFAlpha Not Opened";
return 2; return 2;
@ -46,7 +46,7 @@ int CAbstractFSController::InitializeFSControl()
break; break;
case DeviceModel::OSIFBeta: case DeviceModel::OSIFBeta:
m_pFSCtrl = new OceanOptics_lib; m_pFSCtrl = new OceanOptics_lib;
if (m_pFSCtrl->Initialize(false, m_fsInfo.iInterface, m_fsInfo.strSN) !=0) if (m_pFSCtrl->Initialize(false, m_fsInfo.strInterface, m_fsInfo.strSN) !=0)
{ {
qDebug() << "OSIFBeta Not Opened"; qDebug() << "OSIFBeta Not Opened";
return 2; return 2;
@ -54,8 +54,8 @@ int CAbstractFSController::InitializeFSControl()
break; break;
case DeviceModel::ISIF: case DeviceModel::ISIF:
m_pFSCtrl = new ZZ_ATPControl_Serial_Qt; m_pFSCtrl = new ZZ_ATPControl_Serial_Qt;
m_pFSCtrl->Initialize(false, m_fsInfo.iInterface, NULL); m_pFSCtrl->Initialize(false, m_fsInfo.strInterface, NULL);
if (m_pFSCtrl->Initialize(false, m_fsInfo.iInterface, m_fsInfo.strSN) != 0) if (m_pFSCtrl->Initialize(false, m_fsInfo.strInterface, m_fsInfo.strSN) != 0)
{ {
qDebug() << "ISIF Not Opened"; qDebug() << "ISIF Not Opened";
return 3; return 3;
@ -63,8 +63,8 @@ int CAbstractFSController::InitializeFSControl()
break; break;
case DeviceModel::IS1: case DeviceModel::IS1:
m_pFSCtrl = new ZZ_ATPControl_Serial_Qt; m_pFSCtrl = new ZZ_ATPControl_Serial_Qt;
m_pFSCtrl->Initialize(false, m_fsInfo.iInterface, NULL); m_pFSCtrl->Initialize(false, m_fsInfo.strInterface, NULL);
if (m_pFSCtrl->Initialize(false, m_fsInfo.iInterface, m_fsInfo.strSN) != 0) if (m_pFSCtrl->Initialize(false, m_fsInfo.strInterface, m_fsInfo.strSN) != 0)
{ {
qDebug() << "IS1 Not Opened"; qDebug() << "IS1 Not Opened";
return 3; return 3;
@ -72,8 +72,8 @@ int CAbstractFSController::InitializeFSControl()
break; break;
case DeviceModel::IS2: case DeviceModel::IS2:
m_pFSCtrl = new ZZ_ATPControl_Serial_Qt; m_pFSCtrl = new ZZ_ATPControl_Serial_Qt;
m_pFSCtrl->Initialize(false, m_fsInfo.iInterface, NULL); m_pFSCtrl->Initialize(false, m_fsInfo.strInterface, NULL);
if (m_pFSCtrl->Initialize(false, m_fsInfo.iInterface, m_fsInfo.strSN) != 0) if (m_pFSCtrl->Initialize(false, m_fsInfo.strInterface, m_fsInfo.strSN) != 0)
{ {
qDebug() << "IS2 Not Opened"; qDebug() << "IS2 Not Opened";
return 3; return 3;

View File

@ -8,7 +8,7 @@
typedef struct tagFSInfo typedef struct tagFSInfo
{ {
ZZ_U8 ucDeviceModel; ZZ_U8 ucDeviceModel;
int iInterface; std::string strInterface;
std::string strSN; std::string strSN;
long lDepth; long lDepth;
float fMinFactor; float fMinFactor;

View File

@ -5,7 +5,7 @@ CMainDataGrabber::CMainDataGrabber(QObject* parent /*= nullptr*/)
m_piFlagCaptureThreadStatus_Signal = NULL; m_piFlagCaptureThreadStatus_Signal = NULL;
m_piFlagCaptureThreadStatus_Dark = NULL; m_piFlagCaptureThreadStatus_Dark = NULL;
m_GrabTimer = new QTimer(this); //m_GrabTimer = new QTimer(this);
m_iFlagIsCapturing = false; m_iFlagIsCapturing = false;
m_iFlagIsCapturing_Signal = false; m_iFlagIsCapturing_Signal = false;
@ -34,11 +34,11 @@ CMainDataGrabber::~CMainDataGrabber()
} }
if (m_GrabTimer!=NULL) // if (m_GrabTimer!=NULL)
{ // {
m_GrabTimer->stop(); // m_GrabTimer->stop();
delete m_GrabTimer; // delete m_GrabTimer;
} // }
} }
void CMainDataGrabber::Delay_MSec(ZZ_U16 usMS) void CMainDataGrabber::Delay_MSec(ZZ_U16 usMS)
@ -73,6 +73,25 @@ int CMainDataGrabber::SetGrabberFileProcessor(DataFileProcessor &dfpSaver)
return 0; return 0;
} }
int CMainDataGrabber::SetTimer(Scheduler &sScheduler)
{
m_psScheduler = &sScheduler;
return 0;
}
int CMainDataGrabber::InitLS()
{
PortInfo piTemp;
piTemp.qstrFullPortName = QString::fromStdString(m_struLinearShutterContext.strInterface);
m_ctrlLS.ILMES_InitializeComm(piTemp, m_struLinearShutterContext.ucProtocolType, m_struLinearShutterContext.ucCmdID);
ControllerParams cpTemp;
bool res = m_ctrlLS.ILMES_InitializeParams(cpTemp);
m_ctrlLS.ILMES_SetPosition(m_struAcqPosSetting.iPosition, m_struAcqPosSetting.iTotalPosition);
return 0;
}
int CMainDataGrabber::InitThreadStatus() int CMainDataGrabber::InitThreadStatus()
{ {
if (m_piFlagCaptureThreadStatus_Signal!=NULL) if (m_piFlagCaptureThreadStatus_Signal!=NULL)
@ -106,7 +125,7 @@ int CMainDataGrabber::InitializeWorkers()
m_piFlagCaptureThreadStatus_Dark[i] = 0; m_piFlagCaptureThreadStatus_Dark[i] = 0;
FSInfo fsInfo; FSInfo fsInfo;
fsInfo.iInterface = m_struDeviceContext.iInterface[i]; fsInfo.strInterface = m_struDeviceContext.strInterface[i];
fsInfo.ucDeviceModel = m_struDeviceContext.ucDeviceModel[i]; fsInfo.ucDeviceModel = m_struDeviceContext.ucDeviceModel[i];
fsInfo.strSN = m_struDeviceContext.strSN[i]; fsInfo.strSN = m_struDeviceContext.strSN[i];
fsInfo.fMaxFactor = m_struDeviceContext.fMaxFactor[i]; fsInfo.fMaxFactor = m_struDeviceContext.fMaxFactor[i];
@ -158,7 +177,8 @@ int CMainDataGrabber::SetupMsgPipelines()
connect(this, &CMainDataGrabber::SignalGrabOnceFinished, this, &CMainDataGrabber::GrabOnceFinished); connect(this, &CMainDataGrabber::SignalGrabOnceFinished, this, &CMainDataGrabber::GrabOnceFinished);
connect(m_GrabTimer, &QTimer::timeout, this, &CMainDataGrabber::OnTimeCounter); //connect(m_GrabTimer, &QTimer::timeout, this, &CMainDataGrabber::OnTimeCounter);
connect(m_psScheduler, &Scheduler::SignalGrabOnce, this, &CMainDataGrabber::OnTimeCounter);
connect(this, &CMainDataGrabber::SignalStartGrab, this, &CMainDataGrabber::StartGrabTimer); connect(this, &CMainDataGrabber::SignalStartGrab, this, &CMainDataGrabber::StartGrabTimer);
@ -245,8 +265,8 @@ int CMainDataGrabber::StartGrabTimer()
// } // }
//start //start
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(3000); //m_GrabTimer->start(3000);
//////////////////////////////////////////////////////////////////////////test //////////////////////////////////////////////////////////////////////////test
// m_iFlagIsCapturing = true; // m_iFlagIsCapturing = true;
@ -316,7 +336,8 @@ int CMainDataGrabber::GrabOnceFinished()
} }
m_iFlagIsCapturing = 1; m_iFlagIsCapturing = 1;
m_struAcqPosSetting.iTotalPosition = 5; //return 0;
// m_struAcqPosSetting.iTotalPosition = 5;
//m_pdfpSaver->WriteDataFile(); //m_pdfpSaver->WriteDataFile();
for (ZZ_U8 i = 0; i < m_struDeviceContext.ucDeviceNumber; i++) for (ZZ_U8 i = 0; i < m_struDeviceContext.ucDeviceNumber; i++)
@ -327,6 +348,7 @@ int CMainDataGrabber::GrabOnceFinished()
for (int i=0;i< m_struAcqPosSetting.iTotalPosition-1;i++) for (int i=0;i< m_struAcqPosSetting.iTotalPosition-1;i++)
{ {
////move to ////move to
m_ctrlLS.ILMES_MoveToPos(i+1);
m_struAcqPosSetting.iPosition[i + 1]; m_struAcqPosSetting.iPosition[i + 1];
m_iFlagIsCapturing_Signal = 1; m_iFlagIsCapturing_Signal = 1;
emit SignalStartGrabOnce_Signal(); emit SignalStartGrabOnce_Signal();
@ -337,6 +359,7 @@ int CMainDataGrabber::GrabOnceFinished()
////move to ////move to
m_ctrlLS.ILMES_MoveToPos(0);
m_struAcqPosSetting.iPosition[0]; m_struAcqPosSetting.iPosition[0];
m_iFlagIsCapturing_Dark = 1; m_iFlagIsCapturing_Dark = 1;
emit SignalStartGrabOnce_Dark(); emit SignalStartGrabOnce_Dark();
@ -361,6 +384,8 @@ int CMainDataGrabber::GrabOnceFinished()
} }
m_pdfpSaver->SetData(vecData); m_pdfpSaver->SetData(vecData);
m_pdfpSaver->WriteDataFile(); m_pdfpSaver->WriteDataFile();
// qDebug() << "-------------------------------------------busy" << QTime::currentTime().toString(); // qDebug() << "-------------------------------------------busy" << QTime::currentTime().toString();
// QThread::msleep(5000); // QThread::msleep(5000);
// return 0; // return 0;

View File

@ -3,6 +3,8 @@
#include <vector> #include <vector>
#include "AbstractFSController.h" #include "AbstractFSController.h"
#include "DataFileProcessor.h" #include "DataFileProcessor.h"
#include "Scheduler.h"
#include "VSMD12XControl.h"
using namespace std; using namespace std;
using namespace ZZ_MISCDEF::ZZ_RUNPARAMS; using namespace ZZ_MISCDEF::ZZ_RUNPARAMS;
@ -28,6 +30,9 @@ private:
int m_iFlagIsCapturing_Dark; int m_iFlagIsCapturing_Dark;
DataFileProcessor* m_pdfpSaver; DataFileProcessor* m_pdfpSaver;
Scheduler * m_psScheduler;
CVSMD12XControl m_ctrlLS;
FSContext m_struDeviceContext; FSContext m_struDeviceContext;
LSContext m_struLinearShutterContext; LSContext m_struLinearShutterContext;
@ -35,7 +40,7 @@ private:
AcqTimeSettings m_struAcqTime; AcqTimeSettings m_struAcqTime;
QTimer *m_GrabTimer; //QTimer *m_GrabTimer;
private: private:
void Delay_MSec(ZZ_U16 usMS); void Delay_MSec(ZZ_U16 usMS);
void SubDataFrame(DataFrame& dfLeft, DataFrame const dfRight,int iCount); void SubDataFrame(DataFrame& dfLeft, DataFrame const dfRight,int iCount);
@ -43,7 +48,9 @@ public:
//Call this first //Call this first
int SetGrabberParams(RunTimeGrabberParams struGrabberRTParams); int SetGrabberParams(RunTimeGrabberParams struGrabberRTParams);
int SetGrabberFileProcessor(DataFileProcessor &dfpSaver); int SetGrabberFileProcessor(DataFileProcessor &dfpSaver);
int SetTimer(Scheduler &sScheduler);
int InitLS();
int InitThreadStatus(); int InitThreadStatus();
int InitializeWorkers(); int InitializeWorkers();
int StartWorkers(); int StartWorkers();

View File

@ -0,0 +1,63 @@
#include "Scheduler.h"
Scheduler::Scheduler(QObject* parent /*= nullptr*/)
{
m_GrabTimer = new QTimer(this);
connect(m_GrabTimer, &QTimer::timeout, this, &Scheduler::OnTimeCounter);
connect(this, &Scheduler::SignalSelfStart, this, &Scheduler::StartAsPlanned);
}
Scheduler::~Scheduler()
{
if (m_GrabTimer != NULL)
{
m_GrabTimer->stop();
delete m_GrabTimer;
}
}
void Scheduler::SetAcqTimeParams(AcqTimeSettings struAcqTime)
{
m_struAcqTime = struAcqTime;
}
void Scheduler::Preheating()
{
qDebug() << "Start Preheating";
#ifdef _DEBUG
QThread::msleep(5000);
#else
QThread::msleep(1000*60*5);
#endif
qDebug() << "Preheating Finished";
}
void Scheduler::SelfStart()
{
emit SignalSelfStart();
}
void Scheduler::StartAsPlanned()
{
bool bStopWait = false;
QTime qtTime = QTime::currentTime();
while (!bStopWait)
{
QThread::msleep(100);
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;
m_GrabTimer->start(3000);
}
int Scheduler::OnTimeCounter()
{
emit SignalGrabOnce();
return 0;
}

26
source/Thread/Scheduler.h Normal file
View File

@ -0,0 +1,26 @@
#pragma once
#include"pch.h"
#include "ZZ_Types.h"
using namespace std;
using namespace ZZ_MISCDEF::ZZ_RUNPARAMS;
class Scheduler :public QObject
{
Q_OBJECT
public:
Scheduler(QObject* parent = nullptr);
~Scheduler();
private:
QTimer *m_GrabTimer;
AcqTimeSettings m_struAcqTime;
private:
void StartAsPlanned();
public:
void SetAcqTimeParams(AcqTimeSettings struAcqTime);
void Preheating();
void SelfStart();
public slots:
int OnTimeCounter();
signals:
void SignalGrabOnce();
void SignalSelfStart();
};