From ffe71aadfdcb4a9ea2ac4d8d320983d42ef3cad5 Mon Sep 17 00:00:00 2001 From: LYW <leeyeanwoo@diteam.co.kr> Date: 화, 14 9월 2021 15:19:39 +0900 Subject: [PATCH] 버그 수정 --- ReviewHistory/ReveiwHistory/akIPCNetAOISystem.h | 139 ++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 139 insertions(+), 0 deletions(-) diff --git a/ReviewHistory/ReveiwHistory/akIPCNetAOISystem.h b/ReviewHistory/ReveiwHistory/akIPCNetAOISystem.h new file mode 100644 index 0000000..686c71e --- /dev/null +++ b/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; +}; -- Gitblit v1.9.3