From 3ce48f6dbeb537e252edb0d62c88a28796e36674 Mon Sep 17 00:00:00 2001
From: SWK <sungwk82@diteam.co.kr>
Date: 월, 26 12월 2022 15:04:42 +0900
Subject: [PATCH] ongoing60 #4403 CF AOI Review TACT 지연 개선 1. 신호 출력 방식 재개선  - 유지 시간이 없는 신호는 바로 출력 진행하도록 변경 2. 불필요 Delay 제거 및 시퀀스 변경  - 얼라인 측정 종료 처리 간 제어 신호 먼저 출력 후 카메라 Stop으로 변경  - 물류 정보 읽기 처리 후 1000ms Delay 삭제  - 얼라인 측정 시작(카메라 Live Start) 후 Delay 300ms -> 100ms(이미지 들어오는 시간 확보 필요)  - ReadRawFile 처리 시작 전 500ms Delay 삭제  - Path Scheduling 완료 후 Review Ready 신호 출력 전 1000ms Delay 삭제 3. 버그 수정  - 이미지 저장 경로 생성 간 예외 처리 부분 버그 수정 4. 로그 시간 출력 불합리 개선  - 로그 시간이 파일 출력 시점으로 작성되어 로그 스래드 지연 시 시간이 맞지 않는 불합리 있음  - 로그 시간은 로그 발생 시점에 시간 저장, 해당 시간 이용하여 파일에 기록하도록 변경

---
 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