From 9c93e66a054291d52a5ca22a3d67749faa04b35e Mon Sep 17 00:00:00 2001 From: zhangzhuo Date: Mon, 8 Nov 2021 16:59:50 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BA=86=E6=96=B0=E7=9A=84?= =?UTF-8?q?=E6=8E=A7=E5=88=B6=E5=9F=BA=E7=B1=BB=EF=BC=8C=E7=8E=B0=E5=9C=A8?= =?UTF-8?q?iSIF=E5=92=8CIS1=E7=9A=84=E6=8E=A7=E5=88=B6=E7=B1=BB=E5=B0=86?= =?UTF-8?q?=E6=B4=BE=E7=94=9F=E8=87=AA=E5=9F=BA=E7=B1=BB=EF=BC=9B=E5=AD=A6?= =?UTF-8?q?=E4=B9=A0=E5=B9=B6=E6=B5=8B=E8=AF=95=E4=BA=86Qthread=E4=B8=80?= =?UTF-8?q?=E4=BA=9B=E5=8A=9F=E8=83=BD=EF=BC=9B=E6=B5=8B=E8=AF=95=E4=BA=86?= =?UTF-8?q?QMutex=E7=9A=84=E4=B8=80=E4=BA=9B=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.cpp | 27 +++++++++---- source/Settings/SystemConfigger.cpp | 46 +++++++++++------------ source/Thread/ATPAbstractController.cpp | 31 +++++++++++++++ source/Thread/ATPAbstractController.h | 29 ++++++++++++++ source/Thread/ThreadDataGrabber.cpp | 50 +++++++++++++++++++++++++ source/Thread/ThreadDataGrabber.h | 30 +++++++++++++++ source/Thread/ThreadIS1Controller.cpp | 23 ++++++++++++ source/Thread/ThreadIS1Controller.h | 13 +++++++ source/Thread/ThreadISIFController.h | 9 ++++- source/Thread/ThreadiSIFController.cpp | 25 +++++++++++++ source/pch.h | 4 +- 11 files changed, 254 insertions(+), 33 deletions(-) create mode 100644 source/Thread/ATPAbstractController.cpp create mode 100644 source/Thread/ATPAbstractController.h diff --git a/main.cpp b/main.cpp index 60ed99f..d619f1c 100644 --- a/main.cpp +++ b/main.cpp @@ -1,6 +1,7 @@ #include "pch.h" #include "ATPControl_Serial_QT.h" #include "Logger.h" +#include "ThreadDataGrabber.h" using namespace std; #pragma once @@ -14,13 +15,25 @@ int main(int argc, char *argv[]) qDebug() << qstrTest; cout << "This is a test message"; //////////////////////////////////////////////////////////////////////////test - 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); + ZZ_DataGrabberThread m_test; + //m_test.GrabOnce(); + QThread* m_pqDataGrabberThreadHolder; + + m_pqDataGrabberThreadHolder = new QThread(); + m_test.moveToThread(m_pqDataGrabberThreadHolder); + m_pqDataGrabberThreadHolder->start(); + + m_test.TestGrab(); + + 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); ////////////////////////////////////////////////////////////////////////// return a.exec(); } diff --git a/source/Settings/SystemConfigger.cpp b/source/Settings/SystemConfigger.cpp index 4147a52..88b667b 100644 --- a/source/Settings/SystemConfigger.cpp +++ b/source/Settings/SystemConfigger.cpp @@ -1,25 +1,25 @@ #include "SystemConfigger.h" -ZZ_SysConfigger::ZZ_SysConfigger(QObject *parent /*= nullptr*/) -{ - m_qstrFilePath = QCoreApplication::applicationDirPath()+ "/Settings/DeviceSettings.ini"; -} - -ZZ_SysConfigger::~ZZ_SysConfigger() -{ -} - -int ZZ_SysConfigger::LoadSettings_IS1() -{ - return 0; -} - -int ZZ_SysConfigger::LoadSettings_iSIF() -{ - return 0; -} - -int ZZ_SysConfigger::LoadSettings_System() -{ - return 0; -} + ZZ_SysConfigger::ZZ_SysConfigger(QObject *parent /*= nullptr*/) + { + m_qstrFilePath = QCoreApplication::applicationDirPath()+ "/Settings/DeviceSettings.ini"; + } + + ZZ_SysConfigger::~ZZ_SysConfigger() + { + } + + int ZZ_SysConfigger::LoadSettings_IS1() + { + return 0; + } + + int ZZ_SysConfigger::LoadSettings_iSIF() + { + return 0; + } + + int ZZ_SysConfigger::LoadSettings_System() + { + return 0; + } diff --git a/source/Thread/ATPAbstractController.cpp b/source/Thread/ATPAbstractController.cpp new file mode 100644 index 0000000..8e68bab --- /dev/null +++ b/source/Thread/ATPAbstractController.cpp @@ -0,0 +1,31 @@ +#include "ATPAbstractController.h" + +ZZ_ATPAbsCtrlThread::ZZ_ATPAbsCtrlThread(QObject* parent /*= nullptr*/) +{ + +} + +ZZ_ATPAbsCtrlThread::~ZZ_ATPAbsCtrlThread() +{ + +} + +int ZZ_ATPAbsCtrlThread::StartTestAcquisition() +{ + m_bFlagIsCollecting = true; + while (m_bFlagIsCollecting) + { + QMutexLocker locker(&m_Mutex); + QThread::msleep(1000); + qDebug() << "ThreadATPAbsController busy"; + } + qDebug() << "ThreadATPAbsController quit"; + return 0; +} + +int ZZ_ATPAbsCtrlThread::StopTestAcquisition() +{ + //QMutexLocker locker(&m_Mutex); + m_bFlagIsCollecting = false; + return 0; +} diff --git a/source/Thread/ATPAbstractController.h b/source/Thread/ATPAbstractController.h new file mode 100644 index 0000000..328728e --- /dev/null +++ b/source/Thread/ATPAbstractController.h @@ -0,0 +1,29 @@ +#pragma once +#include "pch.h" +#include "ATPControl_Serial_QT.h" +#include + + +class ZZ_ATPAbsCtrlThread :public QObject +{ + Q_OBJECT + +public: + +public: + std::atomic m_bFlagIsCollecting; + QMutex m_Mutex; + +public: + ZZ_ATPAbsCtrlThread(QObject* parent = nullptr); + virtual ~ZZ_ATPAbsCtrlThread(); +private: + ZZ_ATPControl_Serial_Qt m_iSIFctrl; + +public slots: + virtual int StartTestAcquisition(); + int StopTestAcquisition(); +signals: + void AcqStarted(); + void AcqFinished(); +}; \ No newline at end of file diff --git a/source/Thread/ThreadDataGrabber.cpp b/source/Thread/ThreadDataGrabber.cpp index e69de29..8353234 100644 --- a/source/Thread/ThreadDataGrabber.cpp +++ b/source/Thread/ThreadDataGrabber.cpp @@ -0,0 +1,50 @@ +#include "ThreadDataGrabber.h" + +ZZ_DataGrabberThread::ZZ_DataGrabberThread(QObject* parent /*= nullptr*/) +{ + SetupSignals(); + StartGrabberThread(); +} + +ZZ_DataGrabberThread::~ZZ_DataGrabberThread() +{ + +} + +int ZZ_DataGrabberThread::SetupSignals() +{ + connect(this, &ZZ_DataGrabberThread::SignalStartGrabOnce, &m_tcISIFCtrlThread, &ZZ_iSIFControlThread::StartTestAcquisition); + connect(this, &ZZ_DataGrabberThread::SignalStartGrabOnce, &m_tcIS1CtrlThread, &ZZ_IS1ControlThread::StartTestAcquisition); + + bool bres = connect(this, &ZZ_DataGrabberThread::SignalStopGrab, &m_tcISIFCtrlThread, &ZZ_iSIFControlThread::StopTestAcquisition, Qt::DirectConnection); + bres = connect(this, &ZZ_DataGrabberThread::SignalStopGrab, &m_tcIS1CtrlThread, &ZZ_IS1ControlThread::StopTestAcquisition, Qt::DirectConnection); + + return 0; +} + +int ZZ_DataGrabberThread::StartGrabberThread() +{ + m_pqISIFThreadHolder = new QThread(); + m_tcISIFCtrlThread.moveToThread(m_pqISIFThreadHolder); + m_pqISIFThreadHolder->start(); + + m_pqIS1ThreadHolder = new QThread(); + m_tcIS1CtrlThread.moveToThread(m_pqIS1ThreadHolder); + m_pqIS1ThreadHolder->start(); + //m_stCameraServiceThread.SetController(this); + return 0; +} + +int ZZ_DataGrabberThread::TestGrab() +{ + emit SignalStartGrabOnce(); + return 0; +} + +int ZZ_DataGrabberThread::StopTestGrab() +{ + emit SignalStopGrab(); + //m_tcISIFCtrlThread.StopTestAcquisition(); + //m_tcIS1CtrlThread.StopTestAcquisition(); + return 0; +} diff --git a/source/Thread/ThreadDataGrabber.h b/source/Thread/ThreadDataGrabber.h index 6f70f09..0c102a5 100644 --- a/source/Thread/ThreadDataGrabber.h +++ b/source/Thread/ThreadDataGrabber.h @@ -1 +1,31 @@ #pragma once +#include"pch.h" +#include "ThreadIS1Controller.h" +#include "ThreadiSIFController.h" + +class ZZ_DataGrabberThread :public QObject +{ + Q_OBJECT +public: + ZZ_DataGrabberThread(QObject* parent = nullptr); + ~ZZ_DataGrabberThread(); + +public: +private: + ZZ_iSIFControlThread m_tcISIFCtrlThread; + ZZ_IS1ControlThread m_tcIS1CtrlThread; + QThread* m_pqISIFThreadHolder; + QThread* m_pqIS1ThreadHolder; + +public: + int SetupSignals(); + int StartGrabberThread(); +private: + +public slots: + int TestGrab(); + int StopTestGrab(); +signals: + void SignalStartGrabOnce(); + void SignalStopGrab(); +}; diff --git a/source/Thread/ThreadIS1Controller.cpp b/source/Thread/ThreadIS1Controller.cpp index e69de29..98eba91 100644 --- a/source/Thread/ThreadIS1Controller.cpp +++ b/source/Thread/ThreadIS1Controller.cpp @@ -0,0 +1,23 @@ +#include "ThreadIS1Controller.h" + +ZZ_IS1ControlThread::ZZ_IS1ControlThread(QObject* parent /*= nullptr*/) +{ + +} + +ZZ_IS1ControlThread::~ZZ_IS1ControlThread() +{ +} + +int ZZ_IS1ControlThread::StartTestAcquisition() +{ + m_bFlagIsCollecting = true; + while (m_bFlagIsCollecting) + { + //QMutexLocker locker(&m_Mutex); + QThread::msleep(1000); + qDebug() << "ThreadIS1Controller busy"; + } + qDebug() << "ThreadIS1Controller quit"; + return 0; +} diff --git a/source/Thread/ThreadIS1Controller.h b/source/Thread/ThreadIS1Controller.h index 6f70f09..fa46bf9 100644 --- a/source/Thread/ThreadIS1Controller.h +++ b/source/Thread/ThreadIS1Controller.h @@ -1 +1,14 @@ #pragma once +#include "ATPAbstractController.h" + +class ZZ_IS1ControlThread :public ZZ_ATPAbsCtrlThread +{ + Q_OBJECT +public: + ZZ_IS1ControlThread(QObject* parent = nullptr); + ~ZZ_IS1ControlThread(); +private: +public slots: + int StartTestAcquisition(); +signals: +}; \ No newline at end of file diff --git a/source/Thread/ThreadISIFController.h b/source/Thread/ThreadISIFController.h index 1a2c93c..37ff6d4 100644 --- a/source/Thread/ThreadISIFController.h +++ b/source/Thread/ThreadISIFController.h @@ -1,12 +1,17 @@ #pragma once -#include "pch.h" +#include "ATPAbstractController.h" -class ZZ_iSIFControlThread :public QObject +class ZZ_iSIFControlThread :public ZZ_ATPAbsCtrlThread { Q_OBJECT +public: + +private: public: ZZ_iSIFControlThread(QObject* parent = nullptr); ~ZZ_iSIFControlThread(); +public slots: + int StartTestAcquisition(); }; \ No newline at end of file diff --git a/source/Thread/ThreadiSIFController.cpp b/source/Thread/ThreadiSIFController.cpp index e69de29..31bca6c 100644 --- a/source/Thread/ThreadiSIFController.cpp +++ b/source/Thread/ThreadiSIFController.cpp @@ -0,0 +1,25 @@ +#include "ThreadiSIFController.h" + +ZZ_iSIFControlThread::ZZ_iSIFControlThread(QObject* parent /*= nullptr*/) +{ + +} + +ZZ_iSIFControlThread::~ZZ_iSIFControlThread() +{ + +} + +int ZZ_iSIFControlThread::StartTestAcquisition() +{ + m_bFlagIsCollecting = true; + while (m_bFlagIsCollecting) + { + //QMutexLocker locker(&m_Mutex); + QThread::msleep(1000); + qDebug() << "ThreadiSIFController busy"; + } + qDebug() << "ThreadiSIFController quit"; + return 0; +} + diff --git a/source/pch.h b/source/pch.h index dce1b38..8022a56 100644 --- a/source/pch.h +++ b/source/pch.h @@ -7,4 +7,6 @@ #include #include #include -#include \ No newline at end of file +#include +#include +#include \ No newline at end of file