#pragma once
|
|
#include "Global_Define.h"
|
#include "Control_Interface.h"
|
#include "ENRITView.h"
|
#include "LightManager.h"
|
#include "Splash.h"
|
#include "Transfer_Data.h"
|
#include "HardwareSettings.h"
|
#include "GlassRecipe.h"
|
#include "Glass_Data.h"
|
#include "Thread_Send.h"
|
#include "Thread_CheckSeq.h"
|
#include "Thread_ViewRefresh.h"
|
#include "InspectCamera.h"
|
#include "PostProcess.h"
|
#include "ResultData.h"
|
#include "StopWatch.h"
|
#include "TriggerControl_Mvsol.h"
|
|
class CGrabberMulticam;
|
class CFrameBufferController;
|
class CInterfaceManager : public IMainFrameInterface2Parent
|
,public ICheckSequenceInterface2Parent
|
,public IPLCSendInterface2Parent
|
,public IInspect2Sequence
|
,public IViewRefreshInterface2Parent
|
|
{
|
public:
|
CInterfaceManager(void);
|
virtual ~CInterfaceManager(void);
|
NgInfo ngArray[3][NG_INF_TOTAL];
|
|
protected:
|
virtual void IMI2P_PLC_ReceiveSignalValue(int nSignalIndex, int nValue);
|
virtual void CheckSeqMSG_Received(CCheckSeqMessage *pCheckSeq);
|
virtual void SendMSG_Received(CPostSendMessage *pSendMSG);
|
|
virtual void II2S_InspectionEnd(int iCamID,int iScan);
|
|
void SendMsgInspectToControlSignal(CPostSendMessage *pNetMSG);
|
void SendMsgInspectToControlAlarm(CPostSendMessage *pNetMSG);
|
|
virtual void Send_ViewRefresh(CScheduleViewMessage *pMSG);
|
|
protected:
|
void InitLoadingProcess();
|
BOOL GlassLoadingProcess();
|
int Glass_Loading();
|
BOOL ReadTransferData(CString strTransItemFile);
|
BOOL ScanStartProcess(ControlToInspect emSendSignal);
|
BOOL PLCScanEndProcess(ControlToInspect emSendSignal);
|
BOOL EMOGrabStopProcess(ControlToInspect emSendSignal);
|
BOOL ScanStartGrabManual(int iCam,int iScan);
|
BOOL ScanStartManual(int iCam,int iScan);
|
BOOL PostProcess();
|
void ScanOverTimeSignal();
|
void HistoryData(int nDefectCnt,HISTORY_RESULT &pHistory);
|
|
static UINT ScanTimeOut(LPVOID pParam);
|
void ScanStartCamera(int iCam);
|
static UINT ScanStartCam_0(LPVOID pParam);
|
static UINT ScanStartCam_1(LPVOID pParam);
|
static UINT ScanStartCam_2(LPVOID pParam);
|
static UINT ScanStartCam_3(LPVOID pParam);
|
static UINT CheckScanStart(LPVOID pParam);
|
static UINT PLCSignalThreadFunc(LPVOID pParam);
|
static UINT DeleteProfileProcess(LPVOID pParam);
|
static UINT ScanEndProcess(LPVOID pParam);
|
|
protected:
|
BOOL InitInspect();
|
BOOL InitGrabber();
|
BOOL DeinitGrabber();
|
|
void SetSlashText(EmSplashCmd emCommand, CString strLog, UINT nColor);
|
void CreateThread();
|
BOOL DestroyThread();
|
BOOL InterfaceInit();
|
BOOL ReadHardwareSetting();
|
BOOL ReadProfileCADdata(int iSide,CString strRecipe);
|
void DeleteAlignProfileData();
|
void DeleteProfileData();
|
|
// Recipe
|
BOOL SendGlassRecipe(BOOL bAll=TRUE,int iCam=-1);
|
BOOL LoadGlassRecipe(CString strRecipe,BOOL bReadProfile);
|
BOOL AutoChangeRecipe();
|
CString GetRecipeName(int iRcpNo);;
|
|
// Light
|
void LightTurnOnOff(BOOL bOn);
|
void LightChangeValue(int iCamera=-1,int nValue=0);
|
|
void PLCSignalRetry(SEND_MESSAGE_SECTION emSection,InspectToControlSignal emSendSignal,enInterface_Send_Control emControlSignal);
|
BOOL WaitEndSignal(InspectToControlSignal emSendSignal);
|
|
void SetInspectionEnd();
|
BOOL IsScanNow();
|
int LoadFullImage(CString strPath,int iSide,int nStartY = 0, CGlass_Data *pGlassData = NULL, const bool bIsDebugImg = true);
|
BOOL SaveFullImage(CString strPath,int iSide,CPoint ptStart,int nLineCnt);
|
BOOL SaveFullImage2(CString strPath,LPBYTE lpOrigin,int nImgWidth,int nImgHeight,int iSide,int nStartY,int nQuality = 50);
|
LPBYTE GetGrabBuffer(DimensionDir eDir,int iVline);
|
BOOL SetLiveGrabCommand(DimensionDir eDir,BOOL bStop);
|
void WriteLogManager(TCHAR *str);
|
void WritePLCResult(HISTORY_RESULT &pHistory);
|
void CoordProfileJudge(HISTORY_RESULT &pHistory);
|
void Save_FullImg();
|
void ReadSplineModeldata(CString strRecipe);
|
void CopyImageBuffer();
|
void SetGlassTimeOut();
|
|
static UINT ReadCADData_0(LPVOID pParam);
|
static UINT ReadCADData_1(LPVOID pParam);
|
static UINT ReadCADData_2(LPVOID pParam);
|
static UINT ReadCADData_3(LPVOID pParam);
|
|
static UINT ReadSplineModel(LPVOID pParam);
|
|
static UINT CopyImageThreadFunc(LPVOID pParam);
|
|
BOOL CheckExpireDay();
|
|
void SetTriggerControl();
|
|
//16. ÅäÖòÎÊý
|
void setLineCameraParamToSDK(void);
|
|
private:
|
//CRITICAL_SECTION m_criticalSection; //»¥³âÁ¿
|
//inline void Lock() { ::InitializeCriticalSection(&m_criticalSection); }
|
//inline void Unlock() { ::DeleteCriticalSection(&m_criticalSection); }
|
//std::mutex m_mtx;
|
//inline void Lock() { m_mtx.lock(); }
|
//inline void Unlock() { m_mtx.unlock(); }
|
|
// Instance
|
protected:
|
CLogManager *m_pLogManager;
|
CSplash m_splash;
|
CENRITView *m_pView;
|
CTransDataManager *m_pTransDataManager;
|
CTransfer_Data m_TransferData;
|
CControl_Interface *m_pControlInterface;
|
CLightManager *m_pLightManager;
|
CTriggerControl_Mvsol* m_pTriggerBoardControl;
|
CHardwareSettings m_HardwareRecipe;
|
CGlassRecipe m_GlassRecipe;
|
CInspectCamera *m_pInspect[MAX_CAMERA_COUNT];
|
CGrabberControl *m_pGrabber[MAX_CAMERA_COUNT];
|
CGlass_Data m_GlassData;
|
CThread_SendMSG *m_pThread_SendMSG;
|
CThread_CheckSequence *m_pThread_CheckSequence;
|
CThread_ViewRefresh *m_pThread_ViewRefresh;
|
CPostProcess m_PostProcess;
|
CResultData m_ResultData;
|
CCriticalSection m_csScanStart;
|
int m_nScanStartCount;
|
BOOL m_bGlassLoadingEnd;
|
|
// Values
|
protected:
|
CSplineModel m_SplineModel[MAX_DIMENSION_COUNT];
|
std::multimap<int, CPoint*> m_mapProfile[MAX_DIMENSION_COUNT];
|
std::multimap<int, CPoint*> m_mapAlignProfile[MAX_DIMENSION_COUNT];
|
CPoint m_ptOriginMapProfile[MAX_DIMENSION_COUNT];
|
CCriticalSection m_csProfile;
|
CCriticalSection m_csPLCSignal;
|
SEND_MESSAGE_SECTION m_emPLCSection;
|
InspectToControlSignal m_emPLCSendSignal;
|
enInterface_Send_Control m_emPLCControlSignal;
|
BOOL m_bShortPLCEnd;
|
BOOL m_bLongPLCEnd;
|
BOOL m_bShortPLCScanStart;
|
BOOL m_bPLCGlassLoading;
|
CString m_strReserveRecipe;
|
BOOL m_bPostProcess;
|
CStopWatch m_TactStopWatch;
|
CLicenseChecker* m_pLicense;
|
};
|