#pragma once #include "CCLinkIEControl.h" namespace SERVO { #define STEP_EVENT_READDATA 0x01 #define STEP_EVENT_COMPLETE 0x02 typedef std::function ONSTEPEVENT; typedef struct _StepListener { ONSTEPEVENT onEvent; } StepListener; class CEquipment; class CStep { public: CStep(); virtual ~CStep(); public: unsigned WorkingProc(); void setListener(StepListener listener); void setCcLink(CCCLinkIEControl* pCcLink); void setEquipment(CEquipment* pEquipment); CEquipment* getEquipment(); void setName(const char* pszName); std::string& getName(); virtual void setWriteSignalDev(int dev); virtual void init(); virtual void CStep::term(); virtual void onSignal(BOOL bSignal); virtual int onReadData(); virtual int onComplete(); virtual int onTimeout(); protected: inline void Lock() { EnterCriticalSection(&m_criticalSection); } inline void Unlock() { LeaveCriticalSection(&m_criticalSection); } inline void nextStep(); inline void resetStep(); protected: StepListener m_listener; StationIdentifier m_station; std::string m_strName; CEquipment* m_pEquipment; CCCLinkIEControl* m_pCclink; CRITICAL_SECTION m_criticalSection; std::string strName; HANDLE m_hWorkThreadHandle; unsigned m_nWordThreadAddr; HANDLE m_hWorkStop; HANDLE m_hSignalOn; HANDLE m_hSignalOff; int m_nCurStep; int m_nWriteSignalDev; // ¶Ô·½BITµØÖ· }; }