»õ ÆÄÀÏ |
| | |
| | | #pragma once |
| | | |
| | | #include <vector> |
| | | |
| | | #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_nPlanDefectNum; //리뷰í ê²°í¨ ê°¯ì [ê¹íí 2018/9/10] |
| | | int m_nReviewedDefectNum; //리뷰í ê²°í¨ ê°¯ì |
| | | |
| | | //리뷰í ê²°í¨ ìì¹ [ê¹íí 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 akIPCNetAOISystem |
| | | { |
| | | public: |
| | | akIPCNetAOISystem(void); |
| | | virtual ~akIPCNetAOISystem(void); |
| | | |
| | | public: |
| | | enum emSystemType |
| | | { |
| | | ST_AOI = 0, |
| | | ST_Review = 1 |
| | | }; |
| | | public: |
| | | bool Create(CWnd* pParent); |
| | | //ìê·¸ëì´ ì´ì ìì¼ë©´ 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); |
| | | void processSignal(); |
| | | |
| | | protected: |
| | | struct _SignalTimerOff |
| | | { |
| | | _SignalTimerOff() |
| | | { |
| | | nTimeBitOff = 0; |
| | | pSignal = NULL; |
| | | } |
| | | DWORD nTimeBitOff; //ì¢
ë£ ìê° |
| | | char* pSignal; |
| | | }; |
| | | |
| | | |
| | | protected: |
| | | _IPCAOISystem* m_pIPCAOISystem; |
| | | int m_nThreadSignalFlag; |
| | | CRITICAL_SECTION m_csSignalProcess; |
| | | CMutex m_mxSignalProcess; |
| | | HANDLE m_hMapIPCAOISystem; |
| | | |
| | | CWnd* m_pParent;// ë©ì¸ì§ ì ë¬ ëì |
| | | std::vector<_SignalTimerOff> m_vecSignalTimeOff; |
| | | }; |