#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_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;
|
|
};
|