#pragma once #include "CHThreadPools/WorkThreadPools.h" enum emSendSignal { SendSig_LoadingSuccess=0, SendSig_LoadingFail, SendSig_AlignSuccess, SendSig_AlignFail, SendSig_ReviewSuccess, SendSig_ReviewFail, SendSig_LightFail, SendSig_AFFail, SendSig_AutoMode, SendSig_ManualMode }; enum ThreadSignalType { ThreadSignal_Mode=0, ThreadSignal_Send, ThreadSignal_Recv }; enum ThreadSignalDataType { ThreadSignalType_SendSignal = 0, ThreadSignalType_ReadData, ThreadSignalType_SendData }; class CSignalData { public: CSignalData(int nType=0) { nSignalType = nType; bCheckTimeOut = FALSE; nAddrIndex = 0; nSignalIndex = 0; wSignalValue = 0; dwOnTime = 0; } int nSignalType; BOOL bCheckTimeOut; // add int nAddrIndex; int nSignalIndex; WORD wSignalValue; DWORD dwOnTime; }; class CSignalThreadData : public CWorkThreadData { public: CSignalThreadData(LPVOID pPtr) : CWorkThreadData(pPtr) { } ~CSignalThreadData() { } CSignalData signalData; }; interface ISignalThread2Parent { virtual void IST2P_RunThreadProcess(const CSignalData& signalData) = 0; }; class CSignalThread : public CWorkThreadPools { public: CSignalThread(int nThreadCount=1); virtual ~CSignalThread(void); void SetST2P(ISignalThread2Parent* pST2P) { m_pST2P = pST2P; } BOOL AddThreadData(const CSignalData& data); protected: virtual void WorkThreadProcess(PVOID pParameter); protected: ISignalThread2Parent* m_pST2P; };