#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 m_mapProfile[MAX_DIMENSION_COUNT]; std::multimap 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; };