////////////////////////////////////////////////////////////////////////// //主采集控制线程 ////////////////////////////////////////////////////////////////////////// #pragma once #include"pch.h" #include using namespace std; using namespace ZZ_MISCDEF::ZZ_RUNPARAMS; class ZZ_DataGrabberThread :public QObject { Q_OBJECT public: ZZ_DataGrabberThread(QObject* parent = nullptr); ~ZZ_DataGrabberThread(); public: //QWaitCondition m_wcWaitISIF,m_wcWaitIS1; //QMutex m_mTestMutex; private: vector m_pControlThread; //ZZ_iSIFControlThread m_tcISIFCtrlThread; //ZZ_IS1ControlThread m_tcIS1CtrlThread; QThread* m_pqISIFThreadHolder; QThread* m_pqIS1ThreadHolder; std::atomic m_bFlagIsCollecting; std::atomic m_bFlagIsCollectingFinished; int *m_piFlagCaptureThreadStatus; const int m_iTotalThreads = 2; QTimer *m_GrabTimer; AcqTimeSettings m_struAcqTime; public: void SetGrabTimer(AcqTimeSettings struAcqTimer); int SetupSignals(); int StartGrabCall(); private: int OnTimeCounter(); int InitThreadStatus(); int StartGrabberThread(); public slots: int TestGrab(); int TestGrabOnce(); int TestStopGrab(); int HandleThreadEvent(int iThreadID, int iFlagStatus); int StartGrab(); signals: void SignalStartGrabOnce(); void SignalStopGrab(); void SignalGrabOnceFinished(); void SignalStartGrab(); };