#pragma once #include "ObserverInterface.h" #include "ReviewSystemDoc.h" #include "ReviewSystemView.h" #include "CHReviewSetting/SystemManager.h" #include "CHMotorControls/MotorControl.h" #include "CHLightControls/LightControl.h" #include "CHLensChangeControls/LensChangeControl.h" #include "CameraControlAlign.h" #include "CameraControlReview.h" #include "DisplayMessage.h" #include "CoordCalibrator.h" #include "CHReviewRecipe/RsRecipeManager.h" #include "CHCommonClasses/ProcessTimer.h" #include "SharedImageData.h" #include "CHReviewResult/GlassResult.h" #include "CHMotorCalibrator/MotorCalibrator.h" #include "CHAfmControls/AfmControl.h" #include "CHVcrControls/VcrControl.h" // [2016:10:12]-[WEZASW] : VCR #include "CHWsiControls/WsiControl.h" #include "CHWsiControls/WsiControlInfo.h" #include "SequenceProcessor.h" #include "ReviewProcessor.h" #include "CHWsiControls/WsiControl.h" #include "CHReviewPrioritySorter/PrioritySorter.h" #include "AlignServerControl.h" #include "ResultServerControl.h" #include "CHEdgeTriangle/RecipeManager.h" #include "CHSignalControls/SignalControl.h" #include "CHDefectPicker/DefectPicker.h" #include "IOCPNetwork/NetDefinition.h" #include "IOCPNetwork/NetServer.h" #include "DlgReviewCamera.h" #include "DlgGraph.h" #include "DlgAlignCamera.h" #include "DlgDefectMap.h" #include "DlgDefectFilter.h" #include "DlgDefectList.h" #include "DlgDefectInfo.h" //taek 20.12.04 #include "DlgLog.h" #include "DlgLogo.h" #include "DlgCommand.h" #include "DlgReviewPopUp.h" #include "DlgReviewHistoryTool.h" #include "CHTotalPitchMeasure/TotalPitchMeasure.h" #include "CHResultFileManager/StringRaw.h" #include "CHVirtualGlassMap/VirtualGlassMap.h" #include "ReviewProcessor_CPJT.h" #include "akAOISharedSystem.h" //20191017 #include "DlgDefocusList.h" #include "M_AutoDiagnosisManager/DiagnosisManager.h" #include "DlgSelfDiagnosis.h" typedef std::vector VectorMotorCalibrator; typedef std::vector::iterator VectorMotorCalibratorIt; typedef std::vector::const_iterator constVectorMotorCalibratorIt; typedef std::vector VectorLensChangeControl; typedef std::vector::iterator VectorLensChangeControlIt; typedef std::vector VectorAfmControl; typedef std::vector::iterator VectorAfmControlIt; typedef std::vector VectorWsiControl; typedef std::vector::iterator VectorWsiControlIt; typedef std::vector VectorVCRControl; typedef std::vector::iterator VectorVCRControlIt; class CReviewInterface : public CObserverInterface, public IMotorControl2Parent, public ILightControl2Parent, public ILensChangeControl2Parent, public IAfmControl2Parent, public IAlignCameraControl2Parent, public IReviewCameraControl2Parent, public ISequenceProcessor2Parent, public IReviewProcessor2Parent, public IDisplayMessage2Parent, public IWsiControl2Parnet, public IVcrControl2Parent, public IPrioritySorter2Parent, public ICameraImageView2Parent, public IDialogReviewCamera2Parent, public IDialogGraph2Parent, public IDialogAlignCamera2Parent, public IDialogDefectMap2Parent, public IDialogDefectFilter2Parent, public IDialogDefectList2Parent, public IDialogLog2Parent, public IDialogUserCmd2Parent, public IDialogCommand2Parent, public IDialogControl2Parent, public IDialogModuleInfo2Parent, public ISignalControl2Parnet, public IDialogLogo2Parent, public IDialogTabCtrl2Parent, public akAOISharedParent, public ITotalPitchMeasure2Parnet, public IDialogDefocusList2Parent, public IDialogReviewPopUP2Parent, public IDiagnosisProcessor2Parent, public IDialogReviewOffSet2Parent, public IDialogReviewHistory2Parent { public: CReviewInterface(void); virtual ~CReviewInterface(void); void SetDoc(CReviewSystemDoc* pDoc) { m_pDoc = pDoc; } void SetView(CReviewSystemView* pView) { m_pView = pView; InitReviewInterface(); } public: // camera image view 2 parent virtual void CIV2P_GetImagePathName(CString& strFilename); virtual void CIV2P_ManualSimulation(CCHImageData* pImageData); // motor control 2 parent virtual void IMC2P_DisplayMessage(int nIndex, const TCHAR* lpstrFormat, ...); virtual void IMC2P_AxisMotionEnd(int nIndex, int nAxisIdx, BOOL bMotionEnd); virtual void IMC2P_GantryMotionEnd(int nIndex, int nGantryIdx, BOOL bMotionEnd); virtual void IMC2P_UpdatePosition(int nIndex, int nAxisIdx, double dPosition); //현재 위치좌표 virtual void IMC2P_UpdateStatus(int nIndex, int nAxisIdx, long lStatus); virtual void IMC2P_UpdateThetaPosition(int nIndex, double dPosition); virtual void IMC2P_UpdateThetaStatus(int nIndex, long lStatus); virtual void IMC2P_GantrySoftWareTrigger(int nIndex, int nGantryIdx, int nTrigger); virtual void IMC2P_WsiGantrySoftWareTrigger(int nIndex, int nGantryIdx, int nTrigger); virtual void IMC2P_UpdateWsiMotionEnd(int nIndex, int nGantryIdx); virtual BOOL IMC2P_GetUseWsi(); // WSI Controller 2 parent virtual void IWC2P_DisplayMessage(int nIndex, const TCHAR* lpstrFormat, ...); virtual BOOL IWC2P_SetMeasureInfo(int nIndex, int nPointIndex, const CString& strImagFilename); virtual BOOL IWC2P_SetMeasureInfo(int nIndex, int nPointIndex, const CString& strImagFilename, const CString& strImagFilename2); virtual BOOL IWC2P_SetMeasureInfo(int nModuleIndex, int nPointIndex, const CString& strImageFilename, int nWsiType); virtual void IWC2P_SetWSIErrorCheck(int nIndex,CString strAlarmMessage); virtual void IWC2P_SetWSIAliveCheck(); virtual BOOL IWC2P_GetMeasureInfo(int nModuleIndex, int nPointIndex, short& nLoc, short& nOptic, short& nGray, CString& strCellID); virtual int IWC2P_GetCurrentStatus(int nModuleIndex, CString& strGlassID, CString& strRecipeID, int& nType); virtual void IWC2P_SetConnectedStatus(int nModuleIndex, int nConnectStatus); virtual void IWC2P_RecvMeasureMessage(int nModuleIndex, int nMessageType, int nMessageResult); virtual void IWC2P_SetMeasureResult(int nModuleIndex, const SWsiResult& measureResut); virtual void IWC2P_SetScanEnd(int nIndex, int nPointIndex, int nPositionX, int nPositionY); virtual int IWC2P_GetWsiType(); // TotalPitch Measure 2 parent virtual void ITP2P_DisplayMessage(int nIndex, const TCHAR* lpstrFormat, ...); virtual BOOL ITP2P_GetAlignMarkPosition(double &dPositionX, double &dPositionY); virtual BOOL ITP2P_GetGlassSize(double &dGlassSizeX, double &dGlassSizeY); virtual BOOL ITP2P_GetAlignMarkCenterPosition(double &dPositionX, double &dPositionY); virtual BOOL ITP2P_GetMotionEnable(); virtual BOOL ITP2P_MoveMotorGlassPosition(int nModuleIndex, double dPositionX, double dPositionY); virtual BOOL ITP2P_StartTemplateMatching(double &dPosX, double &dPosY); virtual BOOL ITP2P_GetAlignTemplateCenterPosition(int nIdx, double &dPositionX, double &dPositionY); virtual BOOL ITP2P_SetMinMagChange(int nModuleIndex); virtual double ITP2P_GetCurrentResolution(); // light control 2 parent virtual void ILC2P_DisplayMessage(int nIndex, const TCHAR* lpstrFormat, ...); virtual void ILC2P_ChangeLightLevel(int nIndex, int nLevel); // lens change control(revolver) 2 parent virtual void ILCC2P_DisplayMessage(int nIndex, const TCHAR* lpstrFormat, ...); virtual void ILCC2P_ChangePosition(int nIndex, int nPos); // afm control 2 parent virtual void IAFC2P_DisplayMessage(int nIndex, const TCHAR* lpstrFormat, ...); virtual void IAFC2P_CurrentStatus(int nIndex, int nStatusCode); virtual void IAFC2P_RecipeChangeComplete(int nIndex, int nResultCode); // vcr control 2 parent virtual void IVCRC2P_DisplayMessage(int nIndex, const TCHAR* lpstrFormat, ...); virtual BOOL IVCRC2P_RecvDecodingData(int nIndex, CString& strCode); virtual void IVCRC2P_SendDecodeTriggerSignal(int nIndex); // signal control 2 parent virtual void ISC2P_DisplayMessage(int nIndex, const TCHAR* lpstrFormat, ...); virtual void ISC2P_ReceiveSignal(int nIndex, int nSignalIndex, int nSignalValue, BOOL bOn=TRUE); virtual void ISC2P_SetSignalStatus(int nReadSignal, int nSendSignal, BOOL nSendSignalWord = FALSE); // align camera control 2 parent virtual BOOL IACC2P_GetCurrentFrame(int nCameraIndex, int nFrameWidth, int nFrameHeight, int nFrameChannels, CCHImageData *pImageData); virtual void IACC2P_FrameCaptured(int nCameraIndex, int nFrameIndex, CCHImageData* pImageData); virtual void IACC2P_AlignResult(const CAlignResult& alignResult); virtual void IACC2P_CameraControl(int nValue); virtual BOOL IACC2P_SetLightLevel(int nCameraIndex, int nValue); virtual BOOL IACC2P_GetLightLevel(int nCameraIndex, int& nValue); // review camera control 2 parent virtual BOOL IRCC2P_GetCurrentFrame(int nModuleIndex, int nCameraIndex, int nFrameWidth, int nFrameHeight, int nFrameChannels, CCHImageData *pImageData); virtual void IRCC2P_FrameCaptured(int nModuleIndex, int nCameraIndex, int nFrameIndex, CCHImageData* pImageData); virtual void IRCC2P_ReviewResult(int nModuleIndex, int nPointIndex, VectorImageData& vectorImageData); virtual void IRCC2P_CameraControl(int nModuleIndex, int nValue); virtual CString IRCC2P_GetTotalPitchImageName(); // diagnosis processor virtual void IDP2P_DisplayMessage(int nIndex, const TCHAR* lpstrFormat, ...); // motor virtual void IDP2P_MotorGo(int nModuleIdx, double dPosX, double dPosY, BOOL bWaitReturn = FALSE); virtual BOOL IDP2P_GetMotionEnd(int nModuleIdx, int nTimeOut = -1); virtual BOOL IDP2P_IsGantryMotionEnd(int nModuleIdx); virtual BOOL IDP2P_CheckManualMode(); // Squareness virtual int IDP2P_GetSelectedModuleIndex(); virtual int IDP2P_GetOrigionMotorDir(); virtual BOOL IDP2P_FindPanelCenter(int nModuleIdx, double& dPixelX, double& dPixelY, CString strImageName); // Flatness virtual BOOL IDP2P_SetAFMTracking(int nModuleIdx, BOOL bOn); virtual BOOL IDP2P_GetAFMZPosition(int nModuleIdx, double& dValue); virtual BOOL IDP2P_AFMHomePosition(int nModuleIndex); virtual BOOL IDP2P_DiagnosisSendCompleteSig(); //#3407 KYH 자가진단 Judge 판정 및 알람 발생 기능 ADD START virtual BOOL IDP2P_DiagnosisSendJudgeAlarm(); //0412 자가진단 코드추가 //#3407 KYH 자가진단 Judge 판정 및 알람 발생 기능 ADD END // wsi virtual void IDP2P_SetWsiManualMeasure(int nModuleIdx,double dPosX, double dPosY); virtual void IDP2P_WsiMotorMotionEnd(int nModuleIdx,double dPosX, double dPosY); // Dialog virtual BOOL IDP2P_SetDlgFlatness(int nIndex); virtual BOOL IDP2P_SetDlgSquareness(int nIndex); //taek 210105 virtual BOOL IDP2p_SetDlgWSI(int nIndex); //taek 210105 virtual BOOL IDP2P_SetDialogTap(int nIndex); virtual void IDP2P_UpdateDialog(int nIndex = -1); // review processor virtual int IRP2P_GetWSIControlCount(); virtual CWsiControl* IRP2P_GetWSIControl(int nIndex); virtual int IRP2P_GetModuleStatusCount(int nModuleType) const; virtual CModuleStatus* IRP2P_GetModuleStatus(int nModuleIdx); virtual BOOL IRP2P_GetCenterCoordinate(double& dPosX, double& dPosY); virtual CSignalControl* IRP2P_GetSignalControl(); virtual CMotorControl* IRP2P_GetMotorControl(); virtual CCameraControlReview* IRP2P_GetReviewCameraControl(int nModuleIndex); virtual int IRP2P_GetReviewCameraControlCount(); virtual void IRP2P_UpdateReviewResult(int nModuleIndex, const CGlassResult* pGlassResult, int nPlanIndex=0); virtual void IRP2P_UpdateCameraControl(int nModuleIdx, const SCameraControl *pCameraControl, const SCameraInfo* pCameraInfo); virtual const CRsRcpReviewInfo* IRP2P_Recipe_GetRsRcpReviewInfo(); virtual const CSystemInfo* IRP2P_GetReviewSysteminfo(); virtual const CSignalControlInfo* IRP2P_GetReviewSignalinfo(); virtual CGlassResult* IRP2P_GetCurrentGlassResult(); virtual void IRP2P_DisplayMessage(const TCHAR* lpstrFormat, ...); virtual CResultServerControl* IRP2P_GetResultServerControl(); virtual CSequenceProcessor* IRP2P_GetSequenceProcessor(); virtual void IRP2P_CompletePlanIndex(int nReviewStatus, int nPlanIndex); virtual void IRP2P_UpdateReviewProcessStatus(int nReviewStatus, int nPlanIndex=0); virtual CRecipeManager* IRP2P_GetEdgeRecipeManager(); virtual BOOL IRP2P_GetFirstReviewLeft(); virtual BOOL IRP2P_GetFirstReviewRight(); virtual void IRP2P_SetFirstReviewLeft(BOOL b_Check); virtual void IRP2P_SetFirstReviewRight(BOOL b_Check); BOOL m_bFirstReviewLeft; BOOL m_bFirstReviewRight; virtual BOOL IRP2P_SaveDefectMap(const CString& strPath); // review priority sorter new virtual int PS2P_GetModuleStatusCount(int nModuleType = 0); virtual double PS2P_GetCurrentModuleResolution(int nModuleIndex); virtual void PS2P_GetCurrentModuleZoomData(int nModuleIndex, int& nZoomIdx, double& dZoomInfo); // Review OffSetTools virtual BOOL IDRO2P_GetMotorPos(int nModule,double &dXpos, double &dYpos); // GetOffSetValue virtual BOOL GetOffSetValue(int nModule, int nCam, int nScan, double dGlassXPos, double &dXpos, double &dYpos); virtual BOOL IDRO2P_SetGlassMode(BOOL bMode, int nCamidx, int nScanidx, double nXpos, double nYpos); protected: // Sequence Processor // common virtual void ISP2P_DisplayMessage(const TCHAR* lpstrFormat, ...); virtual void ISP2P_MeasureGraph(CGlassResult* pGlassResult); // system info virtual const BOOL ISP2P_System_ReadConfigFile(); virtual const CSystemInfo* ISP2P_System_GetSystemInfo(); virtual const CGlassTypeInfo* ISP2P_System_GetGlassTypeInfo(int nIndex); virtual const CGlassTypeInfo* ISP2P_System_GetStandardGlassTypeInfo(); virtual const CAlignCameraInfo* ISP2P_System_GetAlignCameraInfo(int nIndex); virtual const CSignalControlInfo* ISP2P_System_GetPCControlInfo(); virtual const CMotorControlInfo* ISP2P_System_GetMotorInfo(); virtual const CNetworkInfo* ISP2P_System_GetNetworkInfo(); virtual void ISP2P_SetCurrentWsiMode(int nMode); //#3561 210908 LYW ADD Start virtual void ISP2P_InitAlignCamera(); //#3561 210908 LYW ADD End virtual CTotalPitchMeasure* ISP2P_GetTotalPitchMeasure(); // recipe info virtual CRsRecipeManager* ISP2P_Recipe_GetRsRecipeManager(); virtual CRsRcpReviewInfo* ISP2P_Recipe_GetRsRcpReviewInfo(); virtual CRsRcpMeasureInfo* ISP2P_Recipe_GetRsRcpMeasureInfo(); virtual CRsRcpAlignInfo* ISP2P_Recipe_GetRsRcpAlignInfo(); virtual CRsRcpDefectFindInfo* ISP2P_Recipe_GetRsRcpDefectFindInfo(); // single control virtual CSignalControl* ISP2P_GetSignalControl(); // Signal Control virtual CMotorControl* ISP2P_GetMotorControl(); // Motor Control virtual CAlignServerControl* ISP2P_GetAlignServerControl(); // Align Server Control virtual CCameraControlAlign* ISP2P_GetAlignCameraControl(); // Align Camera Control virtual CPrioritySorter* ISP2P_GetPrioritySorter(); // new Priority Sorter// Review Priority Sorter virtual CDefectPicker* ISP2P_GetDefectPicker(int nIdx=-1); // Review Defect Picker virtual CPathScheduler* ISP2P_GetReviewScheduler(int nIdx=-1); // Review Scheduler // virtual CMeasureScheduler* ISP2P_GetMeasureScheduler(); // Measure Scheduler virtual CCoordCalibrator* ISP2P_GetCoordCalibrator(); // coordination calibrator virtual CReviewProcessor* ISP2P_GetReviewProcessor(); // Review Processor // aoi shared memory control virtual _ProtocolReview* ISP2P_GetAoiMemoryProtocol(); // aoi shared memory control // multi control virtual int ISP2P_GetReviewLightControlCount(); // Review Light Control vector virtual int ISP2P_GetAlignLightControlCount(); // Align Light Control vector virtual int ISP2P_GetRevolverControlCount(); // Revolver Control vector virtual int ISP2P_GetAFMControlCount(); // AFM Control vector virtual int ISP2P_GetWSIControlCount(); // WSI Control vector virtual int ISP2P_GetReviewCameraControlCount(); // Review Camera control vector virtual int ISP2P_GetMotorCalibratorCount(); // motor calibrator virtual void ISP2P_GlassPositionUpdate(); // Glass Position Update virtual CLightControl* ISP2P_GetReviewLightControl(int nIndex); // Review Light Control vector virtual CLightControl* ISP2P_GetAlignLightControl(int nIndex); // Align Light Control vector virtual CLensChangeControl* ISP2P_GetRevolverControl(int nIndex); // Revolver Control vector virtual CAfmControl* ISP2P_GetAFMControl(int nIndex); // AFM Control vector virtual CWsiControl* ISP2P_GetWSIControl(int nIndex); // WSI Control vector virtual CCameraControlReview* ISP2P_GetReviewCameraControl(int nIndex); // Review Camera control vector virtual CMotorCalibrator* ISP2P_GetMotorCalibrator(int nIndex); // motor calibrator virtual CVcrControl* ISP2P_GetVcrControl(int nIndex); // Vcr Control vector // single variable virtual SDefectFilter* ISP2P_GetDefectFilter(); // Defect Filter virtual SSignalIOStatus* ISP2P_GetPCControlIOSignal(); // PCControl IO Signal virtual CSharedImageData* ISP2P_GetSharedImageData(); // shared image data virtual CConnectionStatus* ISP2P_GetConnectionStatus(); // Connection Status virtual SThetaMotorInfo* ISP2P_GetThetaMotorInfo(); // Theta Motor Info // multi variable virtual int ISP2P_GetModuleStatusCount(int nModuleType=0); // Review Module Status Vector virtual CModuleStatus* ISP2P_GetModuleStatus(int nIndex); // Review Module Status Vector virtual CModuleStatus* ISP2P_GetSelectedModuleStatus(); // Review Module Status Vector // glass result virtual CGlassResult* ISP2P_GetNewGlassResult(int& nGlassResultCount); // new glass result virtual CGlassResult* ISP2P_GetGlassResult(int nIndex); // get glass result virtual CGlassResult* ISP2P_GetCurrentGlassResult(); // get current glass result virtual STransferData* ISP2P_GetCurrentTransferData(); // get current transfer data // History result virtual CGlassResult* ISP2P_GetNewHistoryResult(int& nHistoryResultCount); // new glass result virtual CGlassResult* ISP2P_GetHistoryResult(int nIndex); // get glass result // Read AOI Memory virtual BOOL ISP2P_ReadAOIResultMemory(); virtual BOOL ISP2P_ReadAOIResultMemory2(CGlassResult *pGlassResult); // AOI Raw file virtual BOOL ISP2P_ReadAOIRawFileToGlassResult(const CString& strRawPath); virtual BOOL ISP2P_WriteGlassResultToAOIRawFile(CGlassResult* pGlassResult, const CString& strResultFilePath, int nStackType); virtual BOOL ISP2P_SetReviewResultData(CGlassResult *pGlassResult); virtual BOOL ISP2P_SetUserResultData(CGlassResult *pGlassResult); virtual BOOL ISP2P_SetReflowResultData(CGlassResult *pGlassResult); virtual BOOL ISP2P_SetWsiReflowResultData(CGlassResult *pGlassResult); virtual BOOL ISP2P_SetMeasureResultData(CGlassResult *pGlassResult); //Add by Juneki 2016-03-01 virtual BOOL ISP2P_CreateRawDataFormat(int* pnCnt); //Add by Juneki 2006-03-01 virtual BOOL ISP2P_WriteGlassResultToMeasureRawFile(const CString& strResultFilePath); //Add by Juneki 2006-03-01 virtual void ISP2P_UpdateAlignResult(int nResultCode, const SAlignResult* pAlignResult); // Review Defect Map virtual BOOL ISP2P_SaveDefectMap(const CString strPath); // recipe virtual CRecipeManager* ISP2P_GetEdgeRecipeManager(); // Observer interface virtual void ISP2P_UpdateReviewProcessStatus(int nReviewStatus, int nPlanIndex=0); // review process status virtual void ISP2P_UpdateDefectFilter(const SDefectFilter* pDefectFilter); // Map Option virtual void ISP2P_UpdateReviewResult(int nModuleIndex, const CGlassResult* pGlassResult); // Review Result virtual void ISP2P_UpdateProcessStatus(int nProcessStatus, const CGlassResult* pGlassResult); // Process Status virtual void ISP2P_UpdateCameraControl(int nModuleIndex, const SCameraControl *pCameraControl, const SCameraInfo* pCameraInfo); // camera status virtual void ISP2P_UpdateMotorPosition(int nModuleIndex, BOOL bSelected, const SMotorPosition *pMotorPosition); // motor position virtual void ISP2P_UpdateMotorStatus(int nModuleIndex, const SMotorStatus *pMotorStatus); // motor status virtual void ISP2P_UpdatePCControlIOSignal(const SSignalIOStatus *pSignalIOStatus); // PCControl IO signal virtual void ISP2P_UpdateConnectionStatus(const CConnectionStatus* pConnectionStatus); // connection status virtual void ISP2P_UpdateAlignResultStatus(int nModuleIndex, const CGlassResult* pGlassResult); // Align Result virtual void ISP2P_GetDiagnosisHistory(); virtual void ISP2P_GetDiagnosisHistory2(); virtual CDiagnosisManager* ISP2P_GetDiagnosisManager(); virtual CDlgSelfDiagnosis* ISP2P_GetDlgDiagnosis(); virtual CDlgReviewHistoryTool* ISP2P_GetDlgHistory(); virtual BOOL ISP2P_GetFirstReviewLeft(); virtual BOOL ISP2P_GetFirstReviewRight(); virtual void ISP2P_SetFirstReviewLeft(BOOL b_Check); virtual void ISP2P_SetFirstReviewRight(BOOL b_Check); public: virtual BOOL ISP2P_Motor_CameraGo(int nModuleIndex, double dPosX, double dPosY, int nMoveAxis, BOOL bAutoSelectCamera=FALSE, BOOL bGoEnd=FALSE); public: // dialog interface // display message 2 parent virtual void DM2P_DisplayMessage(const CString& strMessage); virtual void DM2P_DisplayMessage(const TCHAR* lpstrFormat, ...); // dialog review camera 2 parent virtual void DRC2P_MoveMotorMouseDoubleClick(int nDiffPixelX, int nDiffPixelY); virtual void DC2P_SetSelectedCamera(int nModuleIndex, int nValue); virtual void DC2P_SetLightLevel(int nModuleIndex, int nValue); virtual void DC2P_SetZoomLevel(int nModuleIndex, int nValue); virtual void DC2P_SetCameraControl(int nModuleIndex, int nValue); virtual void DC2P_SetJogCommand(int nModuleIndex, int nValue); virtual void DC2P_SetAFMTracking(int nModuleIndex, BOOL bValue); virtual CModuleStatus* DC2P_Get_Selected_module_Status(); virtual void DC2P_SetCameraGo(int nModuleIndex, int nMoveAxis, double dPosX, double dPosY); virtual void DC2P_SetCameraCenterGo(int nModuleIndex, int nMoveAxis, double dPosX, double dPosY); virtual void DC2P_MoveCommand(int nModuleIndex, int nCmdCode, double dX, double dY, double dR); virtual void DC2P_JogCommand(int nModuleIndex, int nAxisFlag, int nCommandFlag); virtual void DC2P_MoveCommandTheta(double dTheta); virtual void DC2P_JogCommandTheta(int nCommandFlag); virtual void DC2P_JogSpeed(double dSpeedValue); virtual void DC2P_ShowReviewPopUP(); virtual void DC2P_SetOffSetOn(); virtual BOOL GetOffSetOn() { return m_bIsOffSetOn; } virtual void DC2P_SetSimulation(); virtual BOOL GetSimulationOn() { return m_bIsSimulation; } BOOL GetJogAxisIndexCommand(const CMotorControlInfo* pControlInfo, const SAxisIndex* pAxisIndex, const SCoordInfo *pCoordInfo, int nJogDir, int nGoStopFlag, int& nAxisIdx, int& nJogCmd , int nModulelIdx); //taek 201230 // dialog align camera 2 parent virtual BOOL DAC2P_GetAlignImage(int nType, int nIndex, CCHImageData* pImageData); virtual void DAC2P_SetLightLevel(int nModuleIndex, int nValue); virtual void DAC2P_ManualAlignProcess(); virtual void DAC2P_SaveAlignTempImage(); virtual CCoordCalibrator* DAC2P_GetCoordCalibrator(); virtual void DAC2P_SetActiveAlignCameraDialog(); // dialog defect filter 2 parent virtual CString DDF2P_GetProgramVersion(); virtual void DDF2P_SetDefectFilter(const SDefectFilter *pDefectFilter); // dialog defect map 2 parent virtual void DDM2P_SelectDefect(int nDefectPosX, int nDefectPosY, int nDefectMarginX, int nDefectMarginY); virtual void DDM2P_SelectDefect2(int nDefectPosX, int nDefectPosY, int nDefectMarginX, int nDefectMarginY, CGlassResult* pHistoryResult); //taek 210213 virtual void DDM2P_MoveGlassPos(double dGlassPosX, double dGlassPosY); // dialog defect list 2 parent virtual void DDL2P_SelectDefect(int nDefectIdx); // dialog command 2 parent virtual void DC2P_SetUserCommand(int nCommand); // dialog user cmd 2 parent virtual void DUC2P_SetUserCommand(int nCommand); // dialog Module info 2 parent virtual const CSystemInfo* DMI2P_GetSystemInfo(); virtual const CMotorControlInfo* DMI2P_GetMotorInfo(); virtual void DMI2P_SetSelectedModuleIndex(int nModuleIdx, BOOL bExcute=FALSE); virtual const CGlassTypeInfo* DMI2P_StandardGlassTypeInfo(); virtual const CRsRcpReviewInfo* DMI2P_Recipe_GetRsRcpReviewInfo(); virtual BOOL DMI2P_GetCenterCoordinate(double& dPosX, double& dPosY); virtual BOOL ISP2P_MakeDirectory(CString strPath); virtual int CReviewInterface::ISP2P_CopyFolder( TCHAR* strSrc, TCHAR* strDest, bool bSubDir=true ); virtual const CNetworkInfo* IDL2P_System_GetNetworkInfo(); virtual void IDL2P_DisplayMessage(const TCHAR* lpstrFormat, ...); virtual void IDL2P_OpenOffSetTool(); virtual void IDL2P_OpenHistoryTool(); protected: // Motor Control command BOOL Motor_ReadAddress(long nAddress, double &dValue); BOOL Motor_ReadAddress(long nAddress, long &nValue); BOOL Motor_WriteAddress(long nAddress, double dValue); BOOL Motor_WriteAddress(long nAddress, long nValue); BOOL Motor_AxisGoSpeed(int nAxisIndex, double dSpeed, int nAccel=0); BOOL Motor_AxisJogSpeed(int nAxisIndex, double dSpeed, int nAccel=0); BOOL Motor_AxisJogCommand(int nAxisIndex, int nCommand); BOOL Motor_AxisThetaGoSpeed(double dSpeed, int nAccel=0); BOOL Motor_AxisThetaJogSpeed(double dSpeed, int nAccel=0); BOOL Motor_AxisThetaGo(double dPos, BOOL bGoEnd=FALSE); BOOL Motor_AxisThetaJogCommand(int nCommand); BOOL Motor_AxisGo(int nModuleIndex, int nAxisType, int nDefectPos, BOOL bAutoSelectCamera=FALSE, BOOL bGoEnd=FALSE); BOOL Motor_AxisGo(int nModuleIndex, int nAxisType, double dPos, BOOL bAutoSelectCamera=FALSE, BOOL bGoEnd=FALSE); BOOL Motor_CameraGo(int nModuleIndex, int nDefectPosX, int nDefectPosY, int nMoveAxis,CDefectResult* pDefectResult ,BOOL bAutoSelectCamera=FALSE, BOOL bGoEnd=FALSE); BOOL Motor_CameraGo(int nModuleIndex, double dPosX, double dPosY, int nMoveAxis, BOOL bAutoSelectCamera=FALSE, BOOL bGoEnd=FALSE); BOOL Motor_CameraGo2(int nModuleIndex, double dPosX, double dPosY, int nMoveAxis, BOOL bAutoSelectCamera=FALSE, BOOL bGoEnd=FALSE); BOOL Motor_CameraCenterGo(int nModuleIndex, int nDefectPosX, int nDefectPosY, int nMoveAxis, BOOL bAutoSelectCamera=FALSE, BOOL bGoEnd=FALSE); BOOL Motor_CameraCenterGo(int nModuleIndex, double dPosX, double dPosY, int nMoveAxis, BOOL bAutoSelectCamera=FALSE, BOOL bGoEnd=FALSE); BOOL Motor_GantryGo(int nModuleIndex, int nDefectPosX, int nDefectPosY, BOOL bGoEnd=FALSE); BOOL Motor_GantryGo(int nModuleIndex, double dPosX, double dPosY, BOOL bGoEnd=FALSE); BOOL Motor_GantryGo(int nModuleIndex, const VectorInteger& vecMovePos, int nMoveType, BOOL bGoEnd=FALSE); BOOL Motor_GantryGo(int nModuleIndex, const VectorDouble& vecMovePos, int nMoveType, BOOL bGoEnd=FALSE); BOOL Motor_GantryWsiNextPosMove(int nModuleIndex, int nNextDefectIndex); BOOL Motor_HomeGoExceptOne(int nModuleIndex, BOOL bAutoSelectCamera = FALSE, BOOL bGoEnd = FALSE); BOOL Motor_CollisionDetect(int nModuleIndx, double dGlassPosX, double dGlassPosY); BOOL Motor_GetMotorDirection(int nModuleIndx, int& nDirX, int& nDirY); // Align Camera Control command BOOL AlignCamera_CameraControl(int nControlCmd); // Review Light Control command BOOL ReviewLight_SetLightLevel(int nModuleIndex, int nValue); BOOL ReviewLight_GetLightLevel(int nModuleIndex, int& nValue); // Align Light Control command BOOL AlignLight_SetLightLevel(int nCameraIndex, int nValue); BOOL AlignLight_GetLightLevel(int nCameraIndex, int& nValue); // Revolver Control Command BOOL Revolver_SetRevolverLevel(int nModuleIndex, int nValue); BOOL Revolver_GetRevolverLevel(int nModuleIndex, int& nValue); // AFM Control Command BOOL AFM_SetAFMRecipeIndex(int nRecipeIndex, int nValue); BOOL AFM_SetAFMRecipeName(const CString& strRecipeName, int nValue); BOOL AFM_SetAFMZoomLevel(int nValue); BOOL AFM_SetAFMTracking(BOOL bValue); BOOL AFM_SetAFMJogCommand(int nCmd); BOOL AFM_SetAFMJogSpeed(double dSpeed); BOOL AFM_SetAFMRecipeIndex(int nModuleIndex, int nRecipeIndex, int nValue); BOOL AFM_GetAFMRecipeIndex(int nModuleIndex, int& nRecipeIndex, int& nValue); BOOL AFM_SetAFMRecipeName(int nModuleIndex, const CString& strRecipeName, int nValue); BOOL AFM_GetAFMRecipeName(int nModuleIndex, CString& strRecipeName, int& nValue); BOOL AFM_SetAFMZoomLevel(int nModuleIndex, int nValue); BOOL AFM_GetAFMZoomLevel(int nModuleIndex, int& nValue); BOOL AFM_SetAFMTracking(int nModuleIndex, BOOL bValue); BOOL AFM_GetAFMTracking(int nModuleIndex, BOOL& bValue); BOOL AFM_SetAFMJogCommand(int nModuleIndex,int nCmd); BOOL AFM_SetAFMJogSpeed(int nModuleIndex,double dSpeed); BOOL AFM_GetAFMZPosition(int nModuleIndex, double& dValue); // [2017:2:2]-[WEZASW] : Verycode 판독 결과 리턴 BOOL VCR_GetDecodingData(int nIndex, CString& strCode); BOOL VCR_SetDecodeTriggerSignal(int nIndex); // 20190207 SJB, 센터좌표 변환 BOOL GetCenterCoordinate(double& dPosX, double& dPosY); // [2016:11:14]-[WEZASW] : WSI Manual 측정 기능 BOOL WSI_SetManualMeasurement(int nModuleIndex, int nDefectPosX, int nDefectPosY, int nDefectgPosX, int nDefectgPosY, BOOL bValue); // Review Camera Control command void ReviewCamera_CameraControl(int nControlCmd); BOOL ReviewCamera_CameraControl(int nModuleIndex, int nControlCmd); int ReviewCamera_GetReviewCameraControlCount() const; // module status int Module_GetModuleStatusCount(int nModuleType=0) const; CModuleStatus* Module_GetModuleStatus(int nModuleIdx); SExternalIndex* Module_GetExternalIndex(int nModuleIdx); SCameraControl* Module_GetCameraControl(int nModuleIdx); SMotorPosition* Module_GetMotorPosition(int nModuleIdx); //Mot Pos SMotorStatus* Module_GetMotorStatus(int nModuleIdx); SAxisIndex* Module_GetAxisIndex(int nModuleIdx); SCoordInfo* Module_GetCoordInfo(int nModuleIdx); SCameraInfo* Module_GetCurrentCameraInfo(int nModuleIdx); SCameraInfo* Module_GetCameraInfo(int nModuleIdx, int nZoomIdx=0); SMagnificInfo* Module_GetCurrentMagnificInfo(int nModuleIdx); SMagnificInfo* Module_GetMagnificInfo(int nModuleIdx, int nZoomIdx=0); int Module_GetMoveIndex(int nSelectedModuleIndex, int nUMGlassX, int nUMGlassY, BOOL bAutoSelectCamera = FALSE); // standard module status int Module_GetStandardModuleIndex() const; CModuleStatus* Module_GetStandardModuleStatus(); SMotorPosition* Module_GetStandardMotorPosition(); SAxisIndex* Module_GetStandardAxisIndex(); // selected module status int Module_GetSelectedModuleIndex() const; CModuleStatus* Module_GetSelectedModuleStatus(); SMotorPosition* Module_GetSelectedMotorPosition(); SAxisIndex* Module_GetSelectedAxisIndex(); // setter internal double GetFreeSpaceOfDrive() const; void SetProgramVersion(); void ApplySystemSettingValue(); void SetDefaultValue(); void CreateSystemDirectory(); protected: // interface BOOL InitReviewInterface(); void DeinitReviewInterface(); // shared image int InitSharedImage(); void DeinitSharedImage(); // Align Server int InitAlignServerControl(); void DeinitAlignServerControl(); // review camera int InitReviewCamera(); void DeinitReviewCamera(); int ConnectReviewCamera(); void DisconnectReviewCamera(); // review Light Control int InitReviewLightControl(); void DeinitReviewLightControl(); // revolver control int InitRevolverControl(); void DeinitRevolverControl(); // AFM Control int InitAFMControl(); void DeinitAFMControl(); // WSI Control int InitWSIController(); void DeinitWSIController(); // align camera int InitAlignCamera(); void DeinitAlignCamera(); // Align Light Control int InitAlignLightControl(); void DeinitAlignLightControl(); // Motor control int InitMotorControl(); void DeinitMotorControl(); // Signal Control int InitSignalControl(); void DeinitSignalControl(); // review processor int InitReviewProcessor(); void DeinitReviewProcessor(); // sequence processor int InitSequenceProcessor(); void DeinitSequenceProcessor(); // new Priority Sorter int InitPrioritySorter(); void DeinitPrioritySorter(); // Review Defect Picker int InitDefectPicker(); void DeinitDefectPicker(); // Review Scheduler int InitReviewScheduler(); void DeinitReviewScheduler(); // Measure Scheduler // int InitMeasureScheduler(); // void DeinitMeasureScheduler(); // Coord Calibrator int InitCoordCalibrator(); void DeinitCoordCalibrator(); // Motor Calibrator int InitMotorCalibrator(); void DeinitMotorCalibrator(); // Result Server Control int InitResultServerControl(); void DeinitResultServerControl(); // edge triangle manger int InitEdgeRecipeManager(); void DeinitEdgeRecipeManager(); // virtual glass map int InitVirtualGlassMap(); void DeinitVirtualGlassMap(); // Auto Diagnosis int InitDiagnosisManager(); void DeinitDiagnosisManager(); int InitDlgDiagnosis(); void DeinitDlgDiagnosis(); // [2018/10/15 08:42:52 by jylee] related Shared Memory int InitAOISharedMemory(); void DeinitAOISharedMemory(); virtual void INA2P_RecvSignal(int nSystemType, int nSignal, int nParam1=0, int nParam2=0); int InitTotalPitchMeasure(); void DeinitTotalPitchMeasure(); protected: // loading process func BOOL Recipe_ApplyRecipeData(); int Recipe_GetRcpAFMRecipeInfoCount() const; int Recipe_GetRcpReflowParameterCount() const; int Recipe_GetRcpUserDefectInfoCount() const; int Recipe_GetRcpPlanInfoCount() const; int Recipe_GetRcpPriorityInfoCount() const; int Recipe_GetRcpLightInfoCount() const; const CRcpAFMRecipeInfo* Recipe_GetRcpAFMRecipeInfo(int nModuleIndex) const; const CRcpReflowParameter* Recipe_GetRcpReflowParameter(int nModuleIndex) const; const CRcpUserDefectInfo* Recipe_GetRcpUserDefectInfo(int nModuleIndex) const; const CRcpPlanInfo* Recipe_GetRcpPlanInfo(int nModuleIndex) const; const CRcpPriorityInfo* Recipe_GetRcpPriorityInfo(int nModuleIndex) const; const CRcpLightInfo* Recipe_GetRcpLightInfo(int nModuleIndex) const; BOOL IsManualProcessMode(); public: void WsiAliveCheckThread (); protected: // for system value BOOL m_bChangeSysConfig; CReviewSystemDoc* m_pDoc; CReviewSystemView* m_pView; // single control CSignalControl* m_pSignalControl; // Signal Control CMotorControl* m_pMotorControl; // Motor Control CAlignServerControl* m_pAlignServerControl; // Align Server Control CCameraControlAlign* m_pAlignCameraControl; // Align Camera Control CSharedImageData* m_pSharedImageData; // shared image data CReviewProcessor* m_pReviewProcessor; // Review Processor CSequenceProcessor* m_pSequenceProcessor; // sequence processor CPrioritySorter* m_pPrioritySorter; // new Priority Sorter CDefectPicker* m_pDefectPicker; // Review Defect Picker CPathScheduler* m_pReviewScheduler; // Review Scheduler // CMeasureScheduler* m_pMeasureScheduler; // Measure Scheduler CCoordCalibrator* m_pCoordCalibrator; // coordination calibrator CResultServerControl* m_pResultServerControl; // Send Result to Server Control CVirtualGlassMap* m_pVirtualGlassMap; // virtual glass map CDiagnosisManager* m_pDiagnosisManager; // Self Auto Diagnosis Manager CDlgSelfDiagnosis* m_pDlgDiagnosis; CDlgReviewHistoryTool* m_pDlgHistoryTool; // [2017:1:16]-[WEZASW] : VCR Control 기능 추가(Ing) CVcrControl* m_pVCRControl; // VCR Control // 190624 SJB TotalPitchMeasure Add CTotalPitchMeasure* m_pTotalPitchMeasure; // multi control VectorLightControl m_vecReviewLightControl; // Review Light Control vector VectorLightControl m_vecAlignLightControl; // Align Light Control vector VectorLensChangeControl m_vecRevolverControl; // Revolver Control vector VectorAfmControl m_vecAFMControl; // AFM Control vector VectorWsiControl m_vecWSIControl; // WSI Control vector VectorVCRControl m_vecVCRControl; // VCR Control vector VectorCameraControlReview m_vecReviewCameraControl; // Review Camera control vector VectorMotorCalibrator m_vecMotorCalibrator; // motor calibrator // single variable CString m_strProgramVersion; // program version CProcessTimer m_ProcessTimer; // process timer SThetaMotorInfo m_sThetaMotorInfo; // theta motor info // multi variable VectorModuleStatus m_vecModuleStatus; // Review Module Status Vector // edge triangle manager CRecipeManager* m_pEdgeRecipeManager; // Edge Triangle recipe manager // AOI Shared Memory protected: static CakAOISharedSystem m_AOISharedMemory;//20191017 //static akIPCNetAOISystem m_AOISharedMemory;//cmark public: static CakAOISharedSystem* GetInstance(); //static akIPCNetAOISystem* GetInstance(); int ApplyMagAndGlassOffset(int nModuleIndex ,int wicthPos,double posX,double posY); //0:Xpos 1:Ypos void SetCurrentWsiMode(int nMode) { m_nCurrentWsiMode = nMode; } int GetCurrentWsiMode() { return m_nCurrentWsiMode; } void IRP2P_UpdateDefocusList(); protected: // critical section CRITICAL_SECTION m_csReviewResult; // review result CRITICAL_SECTION m_csReviewSignal; int m_nSimualData[10]; int m_nCurrentWsiMode; BOOL m_bIsOffSetOn; BOOL m_bIsSimulation; };