完善了保存信息文件的定义,添加了读写JSON配置文件的代码。身体原因这两天效率不高。

This commit is contained in:
2021-11-18 17:42:14 +08:00
parent b9bece4de9
commit fdffb86c96
10 changed files with 312 additions and 41 deletions

View File

@ -9,12 +9,12 @@ ZZ_ATPAbsCtrlThread::~ZZ_ATPAbsCtrlThread()
{
}
void ZZ_ATPAbsCtrlThread::SetWaitCondition(QWaitCondition *pFinish, QMutex *pMutex)
{
m_pwcFinish = pFinish;
m_pMutex = pMutex;
}
//
// void ZZ_ATPAbsCtrlThread::SetWaitCondition(QWaitCondition *pFinish, QMutex *pMutex)
// {
// m_pwcFinish = pFinish;
// m_pMutex = pMutex;
// }
int ZZ_ATPAbsCtrlThread::StartTestAcquisition()
{
@ -27,7 +27,7 @@ int ZZ_ATPAbsCtrlThread::StartTestAcquisition()
}
qDebug() << "ThreadATPAbsController quit";
m_pwcFinish->wakeAll();
//m_pwcFinish->wakeAll();
emit SignalAcqFinished(0,1);
return 0;
}

View File

@ -1,3 +1,6 @@
//////////////////////////////////////////////////////////////////////////
//ATP<54><EFBFBD><E8B1B8><EFBFBD><EFBFBD>
//////////////////////////////////////////////////////////////////////////
#pragma once
#include "pch.h"
#include "ATPControl_Serial_QT.h"
@ -12,15 +15,15 @@ public:
public:
std::atomic<bool> m_bFlagIsCollecting;
QMutex *m_pMutex;
QWaitCondition *m_pwcFinish;
//QMutex *m_pMutex;
//QWaitCondition *m_pwcFinish;
public:
ZZ_ATPAbsCtrlThread(QObject* parent = nullptr);
virtual ~ZZ_ATPAbsCtrlThread();
private:
ZZ_ATPControl_Serial_Qt m_iSIFctrl;
public slots:
virtual void SetWaitCondition(QWaitCondition *pFinish, QMutex *pMutex);
//virtual void SetWaitCondition(QWaitCondition *pFinish, QMutex *pMutex);
virtual int StartTestAcquisition();
int StopTestAcquisition();
signals:

View File

@ -3,13 +3,19 @@
ZZ_DataGrabberThread::ZZ_DataGrabberThread(QObject* parent /*= nullptr*/)
{
m_bFlagIsCollecting = false;
InitThreadStatus();
SetupSignals();
StartGrabberThread();
//m_iTotalThreads = 2;
}
ZZ_DataGrabberThread::~ZZ_DataGrabberThread()
{
if (m_piFlagCaptureThreadStatus!=NULL)
{
delete m_piFlagCaptureThreadStatus;
}
}
int ZZ_DataGrabberThread::SetupSignals()
@ -17,9 +23,13 @@ int ZZ_DataGrabberThread::SetupSignals()
connect(this, &ZZ_DataGrabberThread::SignalStartGrabOnce, &m_tcISIFCtrlThread, &ZZ_iSIFControlThread::StartTestAcquisition);
connect(this, &ZZ_DataGrabberThread::SignalStartGrabOnce, &m_tcIS1CtrlThread, &ZZ_IS1ControlThread::StartTestAcquisition);
connect(this, &ZZ_DataGrabberThread::SignalStopGrab, &m_tcISIFCtrlThread, &ZZ_iSIFControlThread::StopTestAcquisition, Qt::DirectConnection);
connect(this, &ZZ_DataGrabberThread::SignalStopGrab, &m_tcIS1CtrlThread, &ZZ_IS1ControlThread::StopTestAcquisition, Qt::DirectConnection);
//connect(this, &ZZ_DataGrabberThread::SignalStopGrab, &m_tcISIFCtrlThread, &ZZ_iSIFControlThread::StopTestAcquisition, Qt::DirectConnection);
//connect(this, &ZZ_DataGrabberThread::SignalStopGrab, &m_tcIS1CtrlThread, &ZZ_IS1ControlThread::StopTestAcquisition, Qt::DirectConnection);
connect(&m_tcISIFCtrlThread, &ZZ_iSIFControlThread::SignalAcqFinished, this, &ZZ_DataGrabberThread::HandleThreadEvent);
connect(&m_tcIS1CtrlThread, &ZZ_IS1ControlThread::SignalAcqFinished, this, &ZZ_DataGrabberThread::HandleThreadEvent);
connect(this, &ZZ_DataGrabberThread::SignalGrabOnceFinished, this, &ZZ_DataGrabberThread::TestGrabOnce);
//m_tcISIFCtrlThread.SetWaitCondition(&m_wcWaitISIF,&m_mTestMutex);
//m_tcIS1CtrlThread.SetWaitCondition(&m_wcWaitIS1, &m_mTestMutex);
return 0;
@ -38,6 +48,16 @@ int ZZ_DataGrabberThread::StartGrabberThread()
return 0;
}
int ZZ_DataGrabberThread::InitThreadStatus()
{
m_piFlagCaptureThreadStatus = new int[m_iTotalThreads];
for (int i=0;i< m_iTotalThreads;i++)
{
m_piFlagCaptureThreadStatus[i] = 0;
}
return 0;
}
int ZZ_DataGrabberThread::TestGrab()
{
m_bFlagIsCollecting = true;
@ -55,6 +75,12 @@ int ZZ_DataGrabberThread::TestGrab()
return 0;
}
int ZZ_DataGrabberThread::TestGrabOnce()
{
emit SignalStartGrabOnce();
return 0;
}
int ZZ_DataGrabberThread::TestStopGrab()
{
//emit SignalStopGrab();
@ -64,19 +90,23 @@ int ZZ_DataGrabberThread::TestStopGrab()
return 0;
}
int ZZ_DataGrabberThread::handleThreadEvent(int x, int value)
int ZZ_DataGrabberThread::HandleThreadEvent(int iThreadID, int iFlagStatus)
{
ProcessingThreadAactive[x] = value;
m_piFlagCaptureThreadStatus[iThreadID] = iFlagStatus;
// Check if threads are finished
for (int i = 0; i < numThreads; i++)
bool bFinished = true;
for (int i = 0; i < m_iTotalThreads; i++)
{
if (m_piFlagCaptureThreadStatus[i] != 1)
{
bool finished = true;
if (ProcessingThreadAactive[i] == true)
{
finished = false;
// Do end actions here
break;
}
bFinished = false;
break;
}
}
if (bFinished)
{
emit SignalGrabOnceFinished();
}
return 0;
}

View File

@ -1,3 +1,6 @@
//////////////////////////////////////////////////////////////////////////
//<2F><><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD>
//////////////////////////////////////////////////////////////////////////
#pragma once
#include"pch.h"
#include "ThreadIS1Controller.h"
@ -11,8 +14,8 @@ public:
~ZZ_DataGrabberThread();
public:
QWaitCondition m_wcWaitISIF,m_wcWaitIS1;
QMutex m_mTestMutex;
//QWaitCondition m_wcWaitISIF,m_wcWaitIS1;
//QMutex m_mTestMutex;
private:
ZZ_iSIFControlThread m_tcISIFCtrlThread;
ZZ_IS1ControlThread m_tcIS1CtrlThread;
@ -20,18 +23,22 @@ private:
QThread* m_pqIS1ThreadHolder;
std::atomic<bool> m_bFlagIsCollecting;
std::atomic<bool> m_bFlagIsCollectingFinished;
int *m_piFlagCaptureThreadStatus;
const int m_iTotalThreads = 2;
public:
int SetupSignals();
int StartGrabberThread();
private:
int InitThreadStatus();
public slots:
int TestGrab();
int TestGrabOnce();
int TestStopGrab();
int handleThreadEvent(int x, int value);
int HandleThreadEvent(int iThreadID, int iFlagStatus);
signals:
void SignalStartGrabOnce();
void SignalStopGrab();
void SignalGrabOnceFinished();
};