#pragma once #include #define INA_SIGNALNUM 32 #define INA_MAXMODULENUM 4 #define INA_MAXDEFECTNUM 1024 //¸ðµç ÁÂÇ¥ µ¥ÀÌÅÍÀÇ ´ÜÀ§´Â um [±èÅÂÇö 2018/9/10] //m_nSignal ÀÇ¹Ì [±èÅÂÇö 2018/9/10] //Review°¡ AOIÀÇ ½Ã±×³ÎÀ» °¨Áö Çϱâ À§Çؼ­´Â m_ProtocalAOI.m_nSignal »óŸ¦ ½Ç½Ã°£ °¨Áö ÇÏ´Â ¹æ½Ä struct _ProtocolAOI { public: _ProtocolAOI() { memset(m_nSignal, 0, sizeof(char)*INA_SIGNALNUM); }; public: /* Signal ÀúÀÇ 0 : GlassLoading 1 : ScanReady 2 : ScanStart 10 : ModuleMove */ char m_nSignal[INA_SIGNALNUM]; public: int m_nModuleMoveX; //±Û¶ó½º ÁÂÇ¥ [±èÅÂÇö 2018/9/10] int m_nModuleMoveY; }; struct _ProtocalReviewModlueData { //¸ðµâ ÇöÀç ÁÂÇ¥ [±èÅÂÇö 2018/9/10] int m_nModuleGlassPosX; int m_nModuleGlassPosY; int m_nPlanDefectCount; //¸®ºäÇÒ °áÇÔ °¹¼ö [±èÅÂÇö 2018/9/10] int m_nReviewedDefectCount; //¸®ºäÇÑ °áÇÔ °¹¼ö //¸®ºäÇÒ °áÇÔ À§Ä¡ [±èÅÂÇö 2018/9/10] int m_nPlanReviewPosX[INA_MAXDEFECTNUM]; int m_nPlanReviewPosY[INA_MAXDEFECTNUM]; }; struct _ProtocolReview { public: _ProtocolReview() { memset(m_nSignal, 0, sizeof(char)*INA_SIGNALNUM); m_nModuleNum = 0; memset(m_ModuleData, 0, sizeof(_ProtocalReviewModlueData)*INA_MAXMODULENUM); } public: /* Signal Á¤ÀÇ 0 : GlassLoading 1 : GlassLoading Complete 2 : Align Ready 3 : Align Complete 5 : ReviewEnd */ char m_nSignal[INA_SIGNALNUM]; //Review Data Section public: int m_nModuleNum; _ProtocalReviewModlueData m_ModuleData[INA_MAXMODULENUM]; }; struct _IPCAOISystem { public: _ProtocolAOI m_ProtocolAOI; _ProtocolReview m_ProtocolReview; }; #define UM_IPCNETAOISYSTEM WM_USER+0x1010 class CakAOISharedSystem { public: CakAOISharedSystem(void); virtual ~CakAOISharedSystem(void); public: enum emSystemType { ST_AOI = 0, ST_Review = 1 }; public: virtual bool Create(CWnd* pParent, emSystemType SystemType); //½Ã±×³ÎÀÌ »ì¾Æ ÀÖÀ¸¸é return °ªÀÌ false [±èÅÂÇö 2018/9/10] bool SetSignal(emSystemType nSystemType, int nSignalIndex, int nTimeMS = 500); virtual void RecvSignal(emSystemType nSystemType, int nSignal); _ProtocolAOI* getAOIProtocol(){return m_pIPCAOISystem ? &m_pIPCAOISystem->m_ProtocolAOI : NULL;}; _ProtocolReview* getReviewProtocol(){return m_pIPCAOISystem ? &m_pIPCAOISystem->m_ProtocolReview : NULL;}; protected: static void threadSignal(void* arg); virtual void processSignal(); protected: struct _SignalTimerOff { _SignalTimerOff() { nTimeBitOff = 0; pSignal = NULL; } DWORD nTimeBitOff; //Á¾·á ½Ã°£ char* pSignal; }; protected: emSystemType m_SystemType; _IPCAOISystem* m_pIPCAOISystem; int m_nThreadSignalFlag; CRITICAL_SECTION m_csSignalProcess; CMutex m_mxSignalProcess; HANDLE m_hMapIPCAOISystem; CWnd* m_pParent;// ¸Þ¼¼Áö Àü´Þ ´ë»ó std::vector<_SignalTimerOff> m_vecSignalTimeOff; };