From 4c1a69ac9d5a7ec52a7f601f54aeb18283cd306b Mon Sep 17 00:00:00 2001 From: zhangzhuo Date: Wed, 24 Nov 2021 17:38:18 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E4=BA=86=E5=BA=95=E5=B1=82?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- UnSupported/ATPAbstractController.cpp | 61 ++++++++++++++++ .../ATPAbstractController.h | 16 +++-- .../ThreadDataGrabber.cpp | 0 .../ThreadDataGrabber.h | 6 +- .../ThreadIS1Controller.cpp | 0 .../ThreadIS1Controller.h | 0 UnSupported/ThreadOSIFAController.cpp | 1 + UnSupported/ThreadOSIFAController.h | 12 ++++ UnSupported/ThreadOSIFBController.cpp | 1 + UnSupported/ThreadOSIFBController.h | 11 +++ .../ThreadiSIFController.cpp | 0 .../ThreadiSIFController.h | 0 config/DeviceSettings.ini | 10 +++ config/SystemSettings.ini | 0 main.cpp | 28 ++++---- source/FS/ZZ_Types.h | 69 ++++++++++++++++++- source/Settings/SystemConfigger.cpp | 46 +++++++++++-- source/Settings/SystemConfigger.h | 27 ++++++-- source/Thread/ATPAbstractController.cpp | 40 ----------- source/Thread/AbstractFSController.cpp | 60 ++++++++++++++++ source/Thread/AbstractFSController.h | 33 +++++++++ source/Thread/MainDataGrabber.cpp | 17 +++++ source/Thread/MainDataGrabber.h | 39 +++++++++++ source/pch.h | 10 ++- 24 files changed, 407 insertions(+), 80 deletions(-) create mode 100644 UnSupported/ATPAbstractController.cpp rename {source/Thread => UnSupported}/ATPAbstractController.h (78%) rename {source/Thread => UnSupported}/ThreadDataGrabber.cpp (100%) rename {source/Thread => UnSupported}/ThreadDataGrabber.h (89%) rename {source/Thread => UnSupported}/ThreadIS1Controller.cpp (100%) rename {source/Thread => UnSupported}/ThreadIS1Controller.h (100%) create mode 100644 UnSupported/ThreadOSIFAController.cpp create mode 100644 UnSupported/ThreadOSIFAController.h create mode 100644 UnSupported/ThreadOSIFBController.cpp create mode 100644 UnSupported/ThreadOSIFBController.h rename {source/Thread => UnSupported}/ThreadiSIFController.cpp (100%) rename source/Thread/ThreadISIFController.h => UnSupported/ThreadiSIFController.h (100%) create mode 100644 config/DeviceSettings.ini create mode 100644 config/SystemSettings.ini delete mode 100644 source/Thread/ATPAbstractController.cpp create mode 100644 source/Thread/AbstractFSController.cpp create mode 100644 source/Thread/AbstractFSController.h create mode 100644 source/Thread/MainDataGrabber.cpp create mode 100644 source/Thread/MainDataGrabber.h diff --git a/UnSupported/ATPAbstractController.cpp b/UnSupported/ATPAbstractController.cpp new file mode 100644 index 0000000..fac0112 --- /dev/null +++ b/UnSupported/ATPAbstractController.cpp @@ -0,0 +1,61 @@ +#include "ATPAbstractController.h" + +ZZ_ATPAbsCtrlThread::ZZ_ATPAbsCtrlThread(QObject* parent /*= nullptr*/) +{ + +} + +ZZ_ATPAbsCtrlThread::~ZZ_ATPAbsCtrlThread() +{ + +} + +int ZZ_ATPAbsCtrlThread::InitializeFSControl() +{ + qDebug() << "base class not implemented"; + return 0; +} + +int ZZ_ATPAbsCtrlThread::StartAcquisition() +{ + qDebug() << "base class not implemented"; + return 0; +} + +int ZZ_ATPAbsCtrlThread::StopAcquisition() +{ + qDebug() << "base class not implemented"; + return 0; +} + +// +// void ZZ_ATPAbsCtrlThread::SetWaitCondition(QWaitCondition *pFinish, QMutex *pMutex) +// { +// m_pwcFinish = pFinish; +// m_pMutex = pMutex; +// } + +int ZZ_ATPAbsCtrlThread::StartTestAcquisition() +{ + qDebug() << "base class not implemented"; + return 0; +// m_bFlagIsCollecting = true; +// while (m_bFlagIsCollecting) +// { +// //QMutexLocker locker(&m_Mutex); +// QThread::msleep(1000); +// qDebug() << "ThreadATPAbsController busy"; +// } +// qDebug() << "ThreadATPAbsController quit"; +// +// //m_pwcFinish->wakeAll(); +// emit SignalAcqFinished(0,1); +} + +int ZZ_ATPAbsCtrlThread::StopTestAcquisition() +{ + qDebug() << "base class not implemented"; + return 0; + //QMutexLocker locker(&m_Mutex); + //m_bFlagIsCollecting = false; +} diff --git a/source/Thread/ATPAbstractController.h b/UnSupported/ATPAbstractController.h similarity index 78% rename from source/Thread/ATPAbstractController.h rename to UnSupported/ATPAbstractController.h index 4930a70..3f52d8f 100644 --- a/source/Thread/ATPAbstractController.h +++ b/UnSupported/ATPAbstractController.h @@ -10,9 +10,6 @@ class ZZ_ATPAbsCtrlThread :public QObject { Q_OBJECT - -public: - public: std::atomic m_bFlagIsCollecting; //QMutex *m_pMutex; @@ -21,11 +18,20 @@ public: ZZ_ATPAbsCtrlThread(QObject* parent = nullptr); virtual ~ZZ_ATPAbsCtrlThread(); private: - ZZ_ATPControl_Serial_Qt m_iSIFctrl; + CIrisFSBase *m_pFSCtrl; + //ZZ_ATPControl_Serial_Qt m_iSIFctrl; public slots: - //virtual void SetWaitCondition(QWaitCondition *pFinish, QMutex *pMutex); + + //create derived class from base class + virtual int InitializeFSControl(); + + virtual int StartAcquisition(); + virtual int StopAcquisition(); + virtual int StartTestAcquisition(); int StopTestAcquisition(); + + //virtual void SetWaitCondition(QWaitCondition *pFinish, QMutex *pMutex); signals: void SignalAcqStarted(); void SignalAcqFinished(int iThreadID,int iFlagStatus); diff --git a/source/Thread/ThreadDataGrabber.cpp b/UnSupported/ThreadDataGrabber.cpp similarity index 100% rename from source/Thread/ThreadDataGrabber.cpp rename to UnSupported/ThreadDataGrabber.cpp diff --git a/source/Thread/ThreadDataGrabber.h b/UnSupported/ThreadDataGrabber.h similarity index 89% rename from source/Thread/ThreadDataGrabber.h rename to UnSupported/ThreadDataGrabber.h index 04ea78b..bb93113 100644 --- a/source/Thread/ThreadDataGrabber.h +++ b/UnSupported/ThreadDataGrabber.h @@ -3,8 +3,6 @@ ////////////////////////////////////////////////////////////////////////// #pragma once #include"pch.h" -#include "ThreadIS1Controller.h" -#include "ThreadiSIFController.h" #include using namespace std; using namespace ZZ_MISCDEF::ZZ_RUNPARAMS; @@ -21,8 +19,8 @@ public: private: vector m_pControlThread; - ZZ_iSIFControlThread m_tcISIFCtrlThread; - ZZ_IS1ControlThread m_tcIS1CtrlThread; + //ZZ_iSIFControlThread m_tcISIFCtrlThread; + //ZZ_IS1ControlThread m_tcIS1CtrlThread; QThread* m_pqISIFThreadHolder; QThread* m_pqIS1ThreadHolder; diff --git a/source/Thread/ThreadIS1Controller.cpp b/UnSupported/ThreadIS1Controller.cpp similarity index 100% rename from source/Thread/ThreadIS1Controller.cpp rename to UnSupported/ThreadIS1Controller.cpp diff --git a/source/Thread/ThreadIS1Controller.h b/UnSupported/ThreadIS1Controller.h similarity index 100% rename from source/Thread/ThreadIS1Controller.h rename to UnSupported/ThreadIS1Controller.h diff --git a/UnSupported/ThreadOSIFAController.cpp b/UnSupported/ThreadOSIFAController.cpp new file mode 100644 index 0000000..834183f --- /dev/null +++ b/UnSupported/ThreadOSIFAController.cpp @@ -0,0 +1 @@ +#include "ThreadOSIFAController.h" \ No newline at end of file diff --git a/UnSupported/ThreadOSIFAController.h b/UnSupported/ThreadOSIFAController.h new file mode 100644 index 0000000..bd73a6f --- /dev/null +++ b/UnSupported/ThreadOSIFAController.h @@ -0,0 +1,12 @@ +#pragma once +#include "ATPAbstractController.h" + + +class ZZ_OSIFAControlThread :public ZZ_ATPAbsCtrlThread +{ + Q_OBJECT +public: + ZZ_OSIFAControlThread(QObject* parent = nullptr); + ~ZZ_OSIFAControlThread(); +public slots: +}; \ No newline at end of file diff --git a/UnSupported/ThreadOSIFBController.cpp b/UnSupported/ThreadOSIFBController.cpp new file mode 100644 index 0000000..708fa5e --- /dev/null +++ b/UnSupported/ThreadOSIFBController.cpp @@ -0,0 +1 @@ +#include "ThreadOSIFBController.h" \ No newline at end of file diff --git a/UnSupported/ThreadOSIFBController.h b/UnSupported/ThreadOSIFBController.h new file mode 100644 index 0000000..35b13f8 --- /dev/null +++ b/UnSupported/ThreadOSIFBController.h @@ -0,0 +1,11 @@ +#pragma once +#include "ATPAbstractController.h" + +class ZZ_OSIFBControlThread :public ZZ_ATPAbsCtrlThread +{ + Q_OBJECT +public: + ZZ_OSIFBControlThread(QObject* parent = nullptr); + ~ZZ_OSIFBControlThread(); +public slots: +}; \ No newline at end of file diff --git a/source/Thread/ThreadiSIFController.cpp b/UnSupported/ThreadiSIFController.cpp similarity index 100% rename from source/Thread/ThreadiSIFController.cpp rename to UnSupported/ThreadiSIFController.cpp diff --git a/source/Thread/ThreadISIFController.h b/UnSupported/ThreadiSIFController.h similarity index 100% rename from source/Thread/ThreadISIFController.h rename to UnSupported/ThreadiSIFController.h diff --git a/config/DeviceSettings.ini b/config/DeviceSettings.ini new file mode 100644 index 0000000..df5c34a --- /dev/null +++ b/config/DeviceSettings.ini @@ -0,0 +1,10 @@ +[DEVICE INFO] +TotalSpectrometer=1 +[FS1] +Model=OSIFAlpha +[FS2] +Model=Null +[LinearShutter] +TotalPosition=2 +Position0=100000 +Position1=200000 diff --git a/config/SystemSettings.ini b/config/SystemSettings.ini new file mode 100644 index 0000000..e69de29 diff --git a/main.cpp b/main.cpp index f9f54d9..8735b14 100644 --- a/main.cpp +++ b/main.cpp @@ -1,8 +1,8 @@ #include "pch.h" #include "ATPControl_Serial_QT.h" #include "Logger.h" -#include "ThreadDataGrabber.h" #include "SystemConfigger.h" +#include "MainDataGrabber.h" using namespace std; #pragma once @@ -12,23 +12,27 @@ int main(int argc, char *argv[]) QCoreApplication a(argc, argv); //////////////////////////////////////////////////////////////////////////logger //QT_LOG::ZZ_InitLogger(QCoreApplication::applicationDirPath() + "/Log/"); - QString qstrTest="This is a test message 2"; - qDebug() << qstrTest; - cout << "This is a test message"; + + //////////////////////////////////////////////////////////////////////////configger ZZ_SysConfigger test; test.Initialize(); test.LoadSettingsFromFile_System(); - test.LoadSettings_Test(); //////////////////////////////////////////////////////////////////////////test - ZZ_DataGrabberThread m_test; - //m_test.GrabOnce(); - QThread* m_pqDataGrabberThreadHolder; + //QString qstrTest = "This is a test message 2"; + //qDebug() << qstrTest; + //cout << "This is a test message"; - m_pqDataGrabberThreadHolder = new QThread(); - m_test.moveToThread(m_pqDataGrabberThreadHolder); - m_pqDataGrabberThreadHolder->start(); - m_test.TestGrabOnce(); + //test.LoadSettings_Test(); + + //ZZ_DataGrabberThread m_test; + //m_test.GrabOnce(); + //QThread* m_pqDataGrabberThreadHolder; + + //m_pqDataGrabberThreadHolder = new QThread(); + //m_test.moveToThread(m_pqDataGrabberThreadHolder); + //m_pqDataGrabberThreadHolder->start(); + //m_test.TestGrabOnce(); //m_test.StartGrabCall(); //QThread::msleep(5000); diff --git a/source/FS/ZZ_Types.h b/source/FS/ZZ_Types.h index 3e6205c..4040fdd 100644 --- a/source/FS/ZZ_Types.h +++ b/source/FS/ZZ_Types.h @@ -3,7 +3,8 @@ ////////////////////////////////////////////////////////////////////////// #pragma once #include "pch.h" - +#include +#define MAX_DEVICENUMBER_FS 2 namespace ZZ_MISCDEF { typedef unsigned char ZZ_U8; @@ -40,8 +41,57 @@ namespace ZZ_MISCDEF }DeviceAttribute; } + enum DeviceModel + { + OSIFAlpha=0, + OSIFBeta, + ISIF, + IS1, + IS2 + }; + +// inline std::string GetDeviceModelName(int iModel) +// { +// switch (iModel) +// { +// case DeviceModel::OSIFAlpha: return "OSIFAlpha"; break; +// case DeviceModel::OSIFBeta: return "OSIFBeta"; break; +// case DeviceModel::ISIF: return "ISIF"; break; +// case DeviceModel::IS1: return "IS1"; break; +// case DeviceModel::IS2: return "IS2"; break; +// default: return "error"; break; +// } +// } +// +// inline int GetIndex(std::string strDeviceModelName) +// { +// if (strDeviceModelName== "OSIFAlpha") +// { +// return DeviceModel::OSIFAlpha; +// } +// else if (strDeviceModelName == "OSIFBeta") +// { +// return DeviceModel::OSIFBeta; +// } +// else if (strDeviceModelName == "ISIF") +// { +// return DeviceModel::ISIF; +// } +// else if (strDeviceModelName == "IS1") +// { +// return DeviceModel::IS1; +// } +// else if(strDeviceModelName == "IS2") +// { +// return DeviceModel::IS2; +// } +// else +// { +// return -1; +// } +// } - } + }; //ATP指令转译 namespace ATP @@ -116,6 +166,12 @@ namespace ZZ_MISCDEF //运行参数 namespace ZZ_RUNPARAMS { + typedef struct tagDeviceContext + { + ZZ_U8 ucDeviceNumber; + ZZ_U8 ucDeviceModel[MAX_DEVICENUMBER_FS]; + }DeviceContext; + typedef struct tagAcquisitionTimeSettings { QTime qtStartTime; @@ -123,6 +179,13 @@ namespace ZZ_MISCDEF QTime qtInterval; }AcqTimeSettings; + typedef struct tagRunTimeGrabberParams + { + DeviceContext dcParams; + AcqTimeSettings atsParams; + }RunTimeGrabberParams; + + typedef struct tagATPCalibrationSettings { //Up0 Down1,2,3 @@ -217,4 +280,4 @@ namespace ZZ_MISCDEF }ATPDataHeader; } -} +}; diff --git a/source/Settings/SystemConfigger.cpp b/source/Settings/SystemConfigger.cpp index 134d0f0..d60f0b4 100644 --- a/source/Settings/SystemConfigger.cpp +++ b/source/Settings/SystemConfigger.cpp @@ -1,34 +1,59 @@ #include "SystemConfigger.h" + ZZ_SysConfigger::ZZ_SysConfigger(QObject *parent /*= nullptr*/) { #ifdef _DEBUG - m_qstrFilePath = QCoreApplication::applicationDirPath() + "/home/data/Settings/DeviceSettings.ini"; - m_qstrJSONConfigFilePath = "E:/WorkSpace/TowerOptoSifAndSpectral/config/config.json"; + m_qstrDeviceConfigFilePath = "E:/WorkSpace/TowerOptoSifAndSpectral/config/DeviceSettings.ini"; + m_qstrJSONConfigFilePath = "E:/WorkSpace/TowerOptoSifAndSpectral/config/config.json"; #else m_qstrJSONConfigFilePath = ("/home/data/Setting/config.json"); #endif // DEBUG + + m_qsDeviceConfig = NULL; } ZZ_SysConfigger::~ZZ_SysConfigger() { - if (qfConfig.isOpen()) + if (qfJConfig.isOpen()) { - qfConfig.close(); + qfJConfig.close(); } } int ZZ_SysConfigger::Initialize() { - qfConfig.setFileName(m_qstrJSONConfigFilePath); - bool bRes = qfConfig.open(QIODevice::ReadOnly); + //////////////////////////////////////////////////////////////////////////load device settings + using namespace ZZ_MISCDEF; + QMetaEnum enumDeviceModel = QMetaEnum::fromType(); + + if (m_qsDeviceConfig!=NULL) + { + delete m_qsDeviceConfig; + } + m_qsDeviceConfig = new QSettings(m_qstrDeviceConfigFilePath, QSettings::IniFormat); + m_struDeviceContext.ucDeviceNumber = m_qsDeviceConfig->value(QString("DEVICE INFO/TotalSpectrometer"),-1).toInt(); + if (m_struDeviceContext.ucDeviceNumber == -1) + { + qDebug() << "DEVICE INFO TotalSpectrometer Value Err."; + return 3; + } + for (ZZ_U8 i=0;i< m_struDeviceContext.ucDeviceNumber;i++) + { + QString qstrTemp= m_qsDeviceConfig->value(QString("FS%1/Model").arg(i+1), "Null").toString(); + m_struDeviceContext.ucDeviceModel[i]= enumDeviceModel.keysToValue(qstrTemp.toLatin1().data()); + } + + //////////////////////////////////////////////////////////////////////////load json settings + qfJConfig.setFileName(m_qstrJSONConfigFilePath); + bool bRes = qfJConfig.open(QIODevice::ReadOnly); if (!bRes) { qDebug() << "QFile open config file Err."; return 1; } - m_qbaJData = qfConfig.readAll(); + m_qbaJData = qfJConfig.readAll(); m_qjdJDoc= QJsonDocument::fromJson(m_qbaJData, &m_qjpeJErr); if (m_qjpeJErr.error != QJsonParseError::NoError) { @@ -39,6 +64,13 @@ return 0; } + int ZZ_SysConfigger::GetGrabberRunParams(RunTimeGrabberParams &struGrabberRTParams) + { + struGrabberRTParams.atsParams = m_struAcqTime; + struGrabberRTParams.dcParams = m_struDeviceContext; + return 0; + } + int ZZ_SysConfigger::LoadSettingsFromFile_IS1() { m_struIS1Info.qstrCalFile_U0 = m_qjoJObj.value("IS1UpCalFile").toString(); diff --git a/source/Settings/SystemConfigger.h b/source/Settings/SystemConfigger.h index 6124b13..5388b0c 100644 --- a/source/Settings/SystemConfigger.h +++ b/source/Settings/SystemConfigger.h @@ -4,7 +4,6 @@ using namespace ZZ_MISCDEF::ZZ_RUNPARAMS; using namespace ZZ_MISCDEF::ZZ_DATAFILE; - class ZZ_SysConfigger :public QObject { Q_OBJECT @@ -14,24 +13,38 @@ public: virtual ~ZZ_SysConfigger(); public: int Initialize(); - + int GetGrabberRunParams(RunTimeGrabberParams &struGrabberRTParams); + int LoadSettingsFromFile_IS1(); int LoadSettingsFromFile_iSIF(); int LoadSettingsFromFile_System(); int LoadSettingsFromFile_MISC(); - int LoadSettings_Test(); - public: - AcqTimeSettings m_struAcqTime; + enum ConfiggerDeviceModel + { + OSIFAlpha = 0, + OSIFBeta, + ISIF, + IS1, + IS2, + Null + }; + Q_ENUM(ConfiggerDeviceModel); + //////////////////////////////////////////////////////////////////////////run-time settings + AcqTimeSettings m_struAcqTime; + DeviceContext m_struDeviceContext; + ////////////////////////////////////////////////////////////////////////// EContext m_struEC; MEContext m_struMEC; IS1Info m_struIS1Info; ISIFInfo m_struISIFInfo; + private: - QString m_qstrFilePath; + QString m_qstrDeviceConfigFilePath; QString m_qstrJSONConfigFilePath; - QFile qfConfig; + QFile qfJConfig/*,qfDeviceConfig*/; + QSettings *m_qsDeviceConfig; QByteArray m_qbaJData; QJsonParseError m_qjpeJErr; diff --git a/source/Thread/ATPAbstractController.cpp b/source/Thread/ATPAbstractController.cpp deleted file mode 100644 index dae5190..0000000 --- a/source/Thread/ATPAbstractController.cpp +++ /dev/null @@ -1,40 +0,0 @@ -#include "ATPAbstractController.h" - -ZZ_ATPAbsCtrlThread::ZZ_ATPAbsCtrlThread(QObject* parent /*= nullptr*/) -{ - -} - -ZZ_ATPAbsCtrlThread::~ZZ_ATPAbsCtrlThread() -{ - -} -// -// void ZZ_ATPAbsCtrlThread::SetWaitCondition(QWaitCondition *pFinish, QMutex *pMutex) -// { -// m_pwcFinish = pFinish; -// m_pMutex = pMutex; -// } - -int ZZ_ATPAbsCtrlThread::StartTestAcquisition() -{ - m_bFlagIsCollecting = true; - while (m_bFlagIsCollecting) - { - //QMutexLocker locker(&m_Mutex); - QThread::msleep(1000); - qDebug() << "ThreadATPAbsController busy"; - } - qDebug() << "ThreadATPAbsController quit"; - - //m_pwcFinish->wakeAll(); - emit SignalAcqFinished(0,1); - return 0; -} - -int ZZ_ATPAbsCtrlThread::StopTestAcquisition() -{ - //QMutexLocker locker(&m_Mutex); - m_bFlagIsCollecting = false; - return 0; -} diff --git a/source/Thread/AbstractFSController.cpp b/source/Thread/AbstractFSController.cpp new file mode 100644 index 0000000..f020e70 --- /dev/null +++ b/source/Thread/AbstractFSController.cpp @@ -0,0 +1,60 @@ +#include "AbstractFSController.h" +CAbstractFSController::CAbstractFSController(QObject* parent /*= nullptr*/) +{ + m_iThreadID = -1; + m_iDeviceType = -1; +} + +CAbstractFSController::~CAbstractFSController() +{ + +} + +int CAbstractFSController::SetRunParas(int iThreadID, int iDeviceType) +{ + m_iThreadID = iThreadID; + m_iDeviceType = iDeviceType; + return 0; +} + + + +int CAbstractFSController::InitializeFSControl() +{ + if (m_iThreadID == -1|| m_iDeviceTyp == -1) + { + qDebug() << "Params Err. Call SetRunParas first"; + return 1; + } + switch (m_iDeviceType) + { + case DeviceModel::OSIFAlpha: + + break; + case DeviceModel::OSIFBeta: + break; + case DeviceModel::ISIF: + m_pFSCtrl = new ZZ_ATPControl_Serial_Qt; + break; + case DeviceModel::IS1: + m_pFSCtrl = new ZZ_ATPControl_Serial_Qt; + break; + case DeviceModel::IS2: + m_pFSCtrl = new ZZ_ATPControl_Serial_Qt; + break; + default: + break; + } + return 0; +} + +int CAbstractFSController::StartAcquisition() +{ + return 0; +} + +int CAbstractFSController::StopAcquisition() +{ + return 0; +} + diff --git a/source/Thread/AbstractFSController.h b/source/Thread/AbstractFSController.h new file mode 100644 index 0000000..f75dcbe --- /dev/null +++ b/source/Thread/AbstractFSController.h @@ -0,0 +1,33 @@ +#pragma once +#include "pch.h" +#include "ATPControl_Serial_QT.h" +#include + +class CAbstractFSController :public QObject +{ + Q_OBJECT +public: + CAbstractFSController(QObject* parent = nullptr); + virtual ~CAbstractFSController(); +public: +private: + CIrisFSBase *m_pFSCtrl; + + int m_iThreadID; + int m_iDeviceType; +public slots: + + //call first + virtual int SetRunParas(int iThreadID, int iDeviceType); + + //create derived class from base class + virtual int InitializeFSControl(); + + virtual int StartAcquisition(); + + virtual int StopAcquisition(); + +signals: + void SignalAcqStarted(); + void SignalAcqFinished(int iThreadID, int iFlagStatus); +}; \ No newline at end of file diff --git a/source/Thread/MainDataGrabber.cpp b/source/Thread/MainDataGrabber.cpp new file mode 100644 index 0000000..758a6cc --- /dev/null +++ b/source/Thread/MainDataGrabber.cpp @@ -0,0 +1,17 @@ + +int CMainDataGrabber::SetGrabberParams(RunTimeGrabberParams struGrabberRTParams) +{ + m_struAcqTime = struGrabberRTParams.atsParams; + m_struDeviceContext = struGrabberRTParams.dcParams; + return 0; +} + +int CMainDataGrabber::InitializeWorkers() +{ + for (ZZ_U8 i = 0; i < m_struDeviceContext.ucDeviceNumber; i++) + { + + } + return 0; +} + diff --git a/source/Thread/MainDataGrabber.h b/source/Thread/MainDataGrabber.h new file mode 100644 index 0000000..b50dfba --- /dev/null +++ b/source/Thread/MainDataGrabber.h @@ -0,0 +1,39 @@ +#pragma once +#include"pch.h" +#include +#include "AbstractFSController.h" + +using namespace std; +using namespace ZZ_MISCDEF::ZZ_RUNPARAMS; + +class CMainDataGrabber :public QObject +{ + Q_OBJECT +public: + CMainDataGrabber(QObject* parent = nullptr); + ~CMainDataGrabber(); + +private: + vector m_pControlThread; + vector m_pqThreadHolder; + + int m_iTotalThreads; + + AcqTimeSettings m_struAcqTime; + DeviceContext m_struDeviceContext; + +public: + //Call this first + int SetGrabberParams(RunTimeGrabberParams struGrabberRTParams); + + int InitializeWorkers(); +public slots: + int HandleThreadEvent(int iThreadID, int iFlagStatus); + int StartGrab(); + +signals: + void SignalStartGrabOnce(); + void SignalStopGrab(); + void SignalGrabOnceFinished(); + void SignalStartGrab(); +}; \ No newline at end of file diff --git a/source/pch.h b/source/pch.h index 892a364..d5ac3af 100644 --- a/source/pch.h +++ b/source/pch.h @@ -1,12 +1,15 @@ #pragma once #include +////////////////////////////setings +#include +#include +////////////////////////////Basic #include #include #include -#include -#include #include #include +////////////////////////////Thread #include #include #include @@ -20,3 +23,6 @@ #include #include #include +////////////////////////////Serial I/O +#include +#include \ No newline at end of file