SDC C-Project CF Review 프로그램
LYW
2021-09-14 ffe71aadfdcb4a9ea2ac4d8d320983d42ef3cad5
ReviewHistory/ReveiwHistory/akIPCNetAOISystem.h
»õ ÆÄÀÏ
@@ -0,0 +1,139 @@
#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;
};