mirror of
http://172.16.0.230/r/SIF/TowerOptoSifAndSpectral.git
synced 2025-10-19 11:49:42 +08:00
添加了新的控制基类,现在iSIF和IS1的控制类将派生自基类;学习并测试了Qthread一些功能;测试了QMutex的一些功能
This commit is contained in:
25
main.cpp
25
main.cpp
@ -1,6 +1,7 @@
|
|||||||
#include "pch.h"
|
#include "pch.h"
|
||||||
#include "ATPControl_Serial_QT.h"
|
#include "ATPControl_Serial_QT.h"
|
||||||
#include "Logger.h"
|
#include "Logger.h"
|
||||||
|
#include "ThreadDataGrabber.h"
|
||||||
using namespace std;
|
using namespace std;
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
@ -14,13 +15,25 @@ int main(int argc, char *argv[])
|
|||||||
qDebug() << qstrTest;
|
qDebug() << qstrTest;
|
||||||
cout << "This is a test message";
|
cout << "This is a test message";
|
||||||
//////////////////////////////////////////////////////////////////////////test
|
//////////////////////////////////////////////////////////////////////////test
|
||||||
ZZ_ATPControl_Serial_Qt m_ctrlATP;
|
ZZ_DataGrabberThread m_test;
|
||||||
QByteArray qbTest;
|
//m_test.GrabOnce();
|
||||||
m_ctrlATP.ATPInitialize(7);
|
QThread* m_pqDataGrabberThreadHolder;
|
||||||
m_ctrlATP.GetDeviceAttribute();
|
|
||||||
m_ctrlATP.SetExposureTime(m_ctrlATP.m_adaDeviceAttr.iMinIntegrationTime);
|
|
||||||
|
|
||||||
m_ctrlATP.RecvData(qbTest);
|
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();
|
return a.exec();
|
||||||
}
|
}
|
||||||
|
31
source/Thread/ATPAbstractController.cpp
Normal file
31
source/Thread/ATPAbstractController.cpp
Normal file
@ -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;
|
||||||
|
}
|
29
source/Thread/ATPAbstractController.h
Normal file
29
source/Thread/ATPAbstractController.h
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "pch.h"
|
||||||
|
#include "ATPControl_Serial_QT.h"
|
||||||
|
#include <atomic>
|
||||||
|
|
||||||
|
|
||||||
|
class ZZ_ATPAbsCtrlThread :public QObject
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
public:
|
||||||
|
std::atomic<bool> 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();
|
||||||
|
};
|
@ -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;
|
||||||
|
}
|
||||||
|
@ -1 +1,31 @@
|
|||||||
#pragma once
|
#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();
|
||||||
|
};
|
||||||
|
@ -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;
|
||||||
|
}
|
||||||
|
@ -1 +1,14 @@
|
|||||||
#pragma once
|
#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:
|
||||||
|
};
|
@ -1,12 +1,17 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
#include "pch.h"
|
#include "ATPAbstractController.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class ZZ_iSIFControlThread :public QObject
|
class ZZ_iSIFControlThread :public ZZ_ATPAbsCtrlThread
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
|
||||||
|
private:
|
||||||
public:
|
public:
|
||||||
ZZ_iSIFControlThread(QObject* parent = nullptr);
|
ZZ_iSIFControlThread(QObject* parent = nullptr);
|
||||||
~ZZ_iSIFControlThread();
|
~ZZ_iSIFControlThread();
|
||||||
|
public slots:
|
||||||
|
int StartTestAcquisition();
|
||||||
};
|
};
|
@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -8,3 +8,5 @@
|
|||||||
#include <QtSerialPort/QSerialPortInfo>
|
#include <QtSerialPort/QSerialPortInfo>
|
||||||
#include <QDir>
|
#include <QDir>
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
|
#include <QThread>
|
||||||
|
#include <QMutex>
|
Reference in New Issue
Block a user