| | |
| | | { |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::IN] AlignStart!")); |
| | | |
| | | |
| | | AlignCamera_CameraControl(CameraControlLive); // 210805 Align Camera Sequence ���� |
| | | Sleep(300); |
| | | |
| | | //#3584 210817 LYW CF AOI Review 시뮬레이션 기능 정상화 MOD START |
| | | if (GetSimulationMode() == FALSE) |
| | | { |
| | |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Send Align Start Ack!")); |
| | | } |
| | | //#3584 210817 LYW CF AOI Review 시뮬레이션 기능 정상화 MOD END |
| | | |
| | | //#3561 210908 LYW ADD Start |
| | | int nAlignReconnectRetryMaxCount = 3; |
| | | for (int i = 0; i < nAlignReconnectRetryMaxCount; i++) |
| | | { |
| | | if (AlignCamera_CameraControl(CameraControlLive) == FALSE) |
| | | { |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[AlignStart] AlignConnect Fail! Reconect Start! ReconnectRetry count = %d"), nAlignReconnectRetryMaxCount + 1); |
| | | system("netsh interface set interface name = \"Align #1\" admin = disable&& netsh interface set interface name = \"Align #1\" admin = enable&& netsh interface set interface name = \"Align #2\" admin = disable&& netsh interface set interface name = \"Align #2\" admin = enable"); |
| | | Sleep(10000); |
| | | m_pSP2P->ISP2P_InitAlignCamera(); |
| | | } |
| | | |
| | | else |
| | | { |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[AlignStart] AlignConnect Success! ")); |
| | | break; |
| | | } |
| | | |
| | | } |
| | | //#3561 210908 LYW ADD End |
| | | |
| | | Sleep(300); |
| | | |
| | | //original |
| | | // if (SendSignalToSignalControl(PCControlSendSignalIndex_Ack, PCControlSend_AlignStartAck_CPJT)) |
| | | // m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Send Align Start Ack!")); |
| | |
| | | // m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] Send Review End Ack!")); |
| | | |
| | | CDitGlassRawClient* m_pDitGlassRaw = CDitGlassRawClient::GetInstance(); |
| | | if (m_pSP2P->ISP2P_GetWSIControl(0)!=NULL) |
| | | if (GetSimulationMode() == FALSE && m_pSP2P->ISP2P_GetWSIControl(0)!=NULL) |
| | | { |
| | | m_pSP2P->ISP2P_GetWSIControl(0)->SetWsiTimeOver(); |
| | | m_pSP2P->ISP2P_GetWSIControl(1)->SetWsiTimeOver(); |
| | | /*< LYW 20211015 - #3662 ADD Start >*/ |
| | | m_pSP2P->ISP2P_GetWSIControl(0)->SetWsiEnd(); |
| | | m_pSP2P->ISP2P_GetWSIControl(1)->SetWsiEnd(); |
| | | /*< LYW 20211015 - #3662 ADD End >*/ |
| | | } |
| | | if (GetLastPointCheck() == FALSE) |
| | | { |
| | |
| | | |
| | | void CSequenceProcessor_CPJT::UpdateHistoryResultFromTransferData(CGlassResult *pHistoryResult, CGlassResult* pGlassResult) |
| | | { |
| | | if (pHistoryResult == NULL || pGlassResult == NULL) return; |
| | | try |
| | | { |
| | | if (pHistoryResult == NULL || pGlassResult == NULL) return; |
| | | |
| | | CTime time = CTime::GetCurrentTime(); |
| | | CTime time = CTime::GetCurrentTime(); |
| | | |
| | | CString strTime = _T(""); |
| | | strTime.Format(_T("%04d-%02d-%02d %02d:%02d:%02d"), time.GetYear(), time.GetMonth(), time.GetDay(), time.GetHour(), time.GetMinute(), time.GetSecond()); |
| | | CString strTime = _T(""); |
| | | strTime.Format(_T("%04d-%02d-%02d %02d:%02d:%02d"), time.GetYear(), time.GetMonth(), time.GetDay(), time.GetHour(), time.GetMinute(), time.GetSecond()); |
| | | |
| | | // update transfer data to glass result |
| | | pHistoryResult->m_nGlassSizeX = pGlassResult->m_nGlassSizeX; |
| | | pHistoryResult->m_nGlassSizeY = pGlassResult->m_nGlassSizeY; |
| | | pHistoryResult->m_nCollisionDistanceX = pGlassResult->m_nCollisionDistanceX; |
| | | pHistoryResult->m_nCollisionDistanceY = pGlassResult->m_nCollisionDistanceY; |
| | | pHistoryResult->m_nCollisionXPos1 = pGlassResult->m_nCollisionXPos1; |
| | | pHistoryResult->m_nCollisionXPos2 = pGlassResult->m_nCollisionXPos2; |
| | | pHistoryResult->m_nOriginDir = pGlassResult->m_nOriginDir; |
| | | pHistoryResult->m_strResultDate = pGlassResult->m_strResultDate; |
| | | pHistoryResult->m_vecReviewScheduleResult = pGlassResult->m_vecReviewScheduleResult; |
| | | pHistoryResult->m_nCornerCutDir = pGlassResult->m_nCornerCutDir; |
| | | pHistoryResult->m_bReadRawFile = pGlassResult->m_bReadRawFile; |
| | | pHistoryResult->m_vecReviewResult = pGlassResult->m_vecReviewResult; |
| | | pHistoryResult->m_strGlassLastName = pGlassResult->m_strGlassLastName; |
| | | pHistoryResult->m_strGlassID = pGlassResult->m_strGlassID; |
| | | pHistoryResult->m_strGlassCode = pGlassResult->m_strGlassCode; |
| | | pHistoryResult->m_strMode = pGlassResult->m_strMode; |
| | | pHistoryResult->m_strGlassType = pGlassResult->m_strGlassType; |
| | | pHistoryResult->m_strDummyType = pGlassResult->m_strDummyType; |
| | | pHistoryResult->m_strProdID = pGlassResult->m_strProdID; |
| | | pHistoryResult->m_strOperID = pGlassResult->m_strOperID; |
| | | pHistoryResult->m_strLotID = pGlassResult->m_strLotID; |
| | | pHistoryResult->m_strPPID = pGlassResult->m_strPPID; |
| | | pHistoryResult->m_strPPID_RC = pGlassResult->m_strPPID_RC; |
| | | pHistoryResult->m_strJobType = pGlassResult->m_strJobType; |
| | | pHistoryResult->m_strJobID = pGlassResult->m_strJobID; |
| | | pHistoryResult->m_strLotSeqNum = pGlassResult->m_strLotSeqNum; |
| | | pHistoryResult->m_strSlotSeqNum = pGlassResult->m_strSlotSeqNum; |
| | | pHistoryResult->m_strPropertyCode = pGlassResult->m_strPropertyCode; |
| | | pHistoryResult->m_strJobJudgeCode = pGlassResult->m_strJobJudgeCode; |
| | | pHistoryResult->m_strJobGradeCode = pGlassResult->m_strJobGradeCode; |
| | | pHistoryResult->m_strSubstrateType = pGlassResult->m_strSubstrateType; |
| | | pHistoryResult->m_strProcessingFlag = pGlassResult->m_strProcessingFlag; |
| | | pHistoryResult->m_strInspectionFlag = pGlassResult->m_strInspectionFlag; |
| | | pHistoryResult->m_strSkipFlag = pGlassResult->m_strSkipFlag; |
| | | pHistoryResult->m_strJobSize = pGlassResult->m_strJobSize; |
| | | pHistoryResult->m_strGlassThickness = pGlassResult->m_strGlassThickness; |
| | | pHistoryResult->m_strJobAngle = pGlassResult->m_strJobAngle; |
| | | pHistoryResult->m_strJobFlip = pGlassResult->m_strJobFlip; |
| | | pHistoryResult->m_strCuttingGlassType = pGlassResult->m_strCuttingGlassType; |
| | | pHistoryResult->m_strProcessingCount = pGlassResult->m_strProcessingCount; |
| | | pHistoryResult->m_strInspectionJudgeData = pGlassResult->m_strInspectionJudgeData; |
| | | pHistoryResult->m_strPairJobID = pGlassResult->m_strPairJobID; |
| | | pHistoryResult->m_strPairFlag = pGlassResult->m_strPairFlag; |
| | | pHistoryResult->m_strOptionValue = pGlassResult->m_strOptionValue; |
| | | pHistoryResult->m_strReserved = pGlassResult->m_strReserved; |
| | | pHistoryResult->strGlassScanSchedule = pGlassResult->strGlassScanSchedule;// cmark |
| | | pHistoryResult->m_strStepID = pGlassResult->m_strRTMSStepID; //taek 210126 |
| | | pHistoryResult->m_strEquipID = pGlassResult->m_strEquipID; |
| | | pHistoryResult->m_strProcessID = pGlassResult->m_strProcessID; |
| | | pHistoryResult->m_strUploadImgFileName = pGlassResult->m_strUploadImgFileName; |
| | | pHistoryResult->m_strUnLoadingTime = strTime; |
| | | pHistoryResult->m_mapDefectResult = pGlassResult->m_mapDefectResult; |
| | | pHistoryResult->m_AlignResult = pGlassResult->m_AlignResult; |
| | | // update transfer data to glass result |
| | | pHistoryResult->m_nGlassSizeX = pGlassResult->m_nGlassSizeX; |
| | | pHistoryResult->m_nGlassSizeY = pGlassResult->m_nGlassSizeY; |
| | | pHistoryResult->m_nCollisionDistanceX = pGlassResult->m_nCollisionDistanceX; |
| | | pHistoryResult->m_nCollisionDistanceY = pGlassResult->m_nCollisionDistanceY; |
| | | pHistoryResult->m_nCollisionXPos1 = pGlassResult->m_nCollisionXPos1; |
| | | pHistoryResult->m_nCollisionXPos2 = pGlassResult->m_nCollisionXPos2; |
| | | pHistoryResult->m_nOriginDir = pGlassResult->m_nOriginDir; |
| | | pHistoryResult->m_strResultDate = pGlassResult->m_strResultDate; |
| | | pHistoryResult->m_vecReviewScheduleResult = pGlassResult->m_vecReviewScheduleResult; |
| | | pHistoryResult->m_nCornerCutDir = pGlassResult->m_nCornerCutDir; |
| | | pHistoryResult->m_bReadRawFile = pGlassResult->m_bReadRawFile; |
| | | pHistoryResult->m_vecReviewResult = pGlassResult->m_vecReviewResult; |
| | | pHistoryResult->m_strGlassLastName = pGlassResult->m_strGlassLastName; |
| | | pHistoryResult->m_strGlassID = pGlassResult->m_strGlassID; |
| | | pHistoryResult->m_strGlassCode = pGlassResult->m_strGlassCode; |
| | | pHistoryResult->m_strMode = pGlassResult->m_strMode; |
| | | pHistoryResult->m_strGlassType = pGlassResult->m_strGlassType; |
| | | pHistoryResult->m_strDummyType = pGlassResult->m_strDummyType; |
| | | pHistoryResult->m_strProdID = pGlassResult->m_strProdID; |
| | | pHistoryResult->m_strOperID = pGlassResult->m_strOperID; |
| | | pHistoryResult->m_strLotID = pGlassResult->m_strLotID; |
| | | pHistoryResult->m_strPPID = pGlassResult->m_strPPID; |
| | | pHistoryResult->m_strPPID_RC = pGlassResult->m_strPPID_RC; |
| | | pHistoryResult->m_strJobType = pGlassResult->m_strJobType; |
| | | pHistoryResult->m_strJobID = pGlassResult->m_strJobID; |
| | | pHistoryResult->m_strLotSeqNum = pGlassResult->m_strLotSeqNum; |
| | | pHistoryResult->m_strSlotSeqNum = pGlassResult->m_strSlotSeqNum; |
| | | pHistoryResult->m_strPropertyCode = pGlassResult->m_strPropertyCode; |
| | | pHistoryResult->m_strJobJudgeCode = pGlassResult->m_strJobJudgeCode; |
| | | pHistoryResult->m_strJobGradeCode = pGlassResult->m_strJobGradeCode; |
| | | pHistoryResult->m_strSubstrateType = pGlassResult->m_strSubstrateType; |
| | | pHistoryResult->m_strProcessingFlag = pGlassResult->m_strProcessingFlag; |
| | | pHistoryResult->m_strInspectionFlag = pGlassResult->m_strInspectionFlag; |
| | | pHistoryResult->m_strSkipFlag = pGlassResult->m_strSkipFlag; |
| | | pHistoryResult->m_strJobSize = pGlassResult->m_strJobSize; |
| | | pHistoryResult->m_strGlassThickness = pGlassResult->m_strGlassThickness; |
| | | pHistoryResult->m_strJobAngle = pGlassResult->m_strJobAngle; |
| | | pHistoryResult->m_strJobFlip = pGlassResult->m_strJobFlip; |
| | | pHistoryResult->m_strCuttingGlassType = pGlassResult->m_strCuttingGlassType; |
| | | pHistoryResult->m_strProcessingCount = pGlassResult->m_strProcessingCount; |
| | | pHistoryResult->m_strInspectionJudgeData = pGlassResult->m_strInspectionJudgeData; |
| | | pHistoryResult->m_strPairJobID = pGlassResult->m_strPairJobID; |
| | | pHistoryResult->m_strPairFlag = pGlassResult->m_strPairFlag; |
| | | pHistoryResult->m_strOptionValue = pGlassResult->m_strOptionValue; |
| | | pHistoryResult->m_strReserved = pGlassResult->m_strReserved; |
| | | pHistoryResult->strGlassScanSchedule = pGlassResult->strGlassScanSchedule;// cmark |
| | | pHistoryResult->m_strStepID = pGlassResult->m_strRTMSStepID; //taek 210126 |
| | | pHistoryResult->m_strEquipID = pGlassResult->m_strEquipID; |
| | | pHistoryResult->m_strProcessID = pGlassResult->m_strProcessID; |
| | | pHistoryResult->m_strUploadImgFileName = pGlassResult->m_strUploadImgFileName; |
| | | pHistoryResult->m_strUnLoadingTime = strTime; |
| | | pHistoryResult->m_mapDefectResult = pGlassResult->m_mapDefectResult; |
| | | pHistoryResult->m_AlignResult = pGlassResult->m_AlignResult; |
| | | } |
| | | catch (...) |
| | | { |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::Review End] UpdateHistoryResultFromTransferData Error")); |
| | | return; |
| | | } |
| | | |
| | | } |
| | | |
| | | void CSequenceProcessor_CPJT::CreateResultDirectory(const CString& strGlassID, const CString& strDate) |
| | |
| | | pGlassResult->m_AlignRecipe.dMatchingRate = pRsRcpAlignInfo->m_dMatchingRate; |
| | | pGlassResult->m_AlignRecipe.strFirstImageFile = pRsRcpAlignInfo->m_strFirstImageFile; |
| | | pGlassResult->m_AlignRecipe.strSecondImageFile = pRsRcpAlignInfo->m_strSecondImageFile; |
| | | /*< LYW 20211012 - #3671 ADD Start >*/ |
| | | pGlassResult->m_AlignRecipe.strFirstAssistantImageFile = pRsRcpAlignInfo->m_strFirstAssistantImageFile; |
| | | pGlassResult->m_AlignRecipe.strSecondAssistantImageFile = pRsRcpAlignInfo->m_strSecondAssistantImageFile; |
| | | pGlassResult->m_AlignRecipe.strMatchingPixelStandard = pRsRcpAlignInfo->m_strMatchingPixelStandard; |
| | | pGlassResult->m_AlignRecipe.strMatchingAlarmCondition = pRsRcpAlignInfo->m_strMatchingAlarmCondition; |
| | | /*< LYW 20211012 - #3671 ADD End >*/ |
| | | pGlassResult->m_AlignRecipe.strTotalPitchImageFile = pRsRcpAlignInfo->m_strTotalPitchImageFile; |
| | | |
| | | // edge find param |
| | |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[PCControl_Send] Review Start Ack! => %d"), 1); |
| | | break; |
| | | |
| | | case PCControlSend_ResultDataComplete_CPJT: |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[PCControl_Send] Result Data Complete! => %d"), 1); |
| | | case PCControlSend_ReviewEndAck_CPJT: |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[PCControl_Send] Review End Ack! => %d"), 1); |
| | | break; |
| | | } |
| | | } |
| | |
| | | case PCControlRecv_AutoMode_CPJT: // auto mode on |
| | | { |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[PCControl_Mode] Auto Mode")); |
| | | SetSimulationMode(FALSE); |
| | | bResult = SetProcessMode(ProcessAutoMode_CPJT); |
| | | if (bResult==FALSE) m_pSP2P->ISP2P_DisplayMessage(_T("[PCControl_Mode] Auto Mode Error!")); |
| | | } |
| | |
| | | break; |
| | | case PCControlRecv_Autodiagnosis: |
| | | { |
| | | //#3514_LYW_CF AOI Review �ڰ����� ��� ����_START |
| | | /*< LYW 20210719 : #3517 ADD Start >*/ |
| | | CSignalControl* pSignalControl = m_pSP2P->ISP2P_GetSignalControl(); |
| | | CString strDiagnosisMode; |
| | | pSignalControl->ReadData(_T("11160"), 2, strDiagnosisMode); |
| | | int nDiagnosisMode = atoi(strDiagnosisMode); |
| | | //#3514_LYW_CF AOI Review �ڰ����� ��� ����_END |
| | | |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[PCControl_Signal] Diagno start => %d, DiagnosisMode => %d"), bSignalOn, nDiagnosisMode); |
| | | if (bSignalOn) { |
| | |
| | | |
| | | m_pSP2P->ISP2P_GetDiagnosisManager()->RecvSignalToSignalControl(0, nDiagnosisMode); |
| | | } |
| | | //#3514_LYW_CF AOI Review �ڰ����� ��� ����_END |
| | | /*< LYW 20210719 : #3517 ADD End >*/ |
| | | else |
| | | bResult = SendSignalOffToSignalControl(PCControlSendSignalIndex_DiagnoAck, 0); |
| | | |