SDC C-Project CF Review 프로그램
LYW
2021-09-23 c08b701c90c8998b241c82638d5c488e03238214
DitGlassRawMessenger/DitGlassRawMessenger/GlassRawCPJT.cpp
@@ -78,7 +78,11 @@
      m_StackResult.StackFileReadStart(pData->GetGlassData()->m_strGlassID);
   }
   if (m_RawMergeResult.getRawMergeUse())
   {
      SendMessageFTPDownloadDataFile(pData->GetGlassData());
      m_RawMergeResult.RawMergeFileReadStart(pData->GetGlassData()->m_strGlassID);
   }
   return TRUE;
}
@@ -121,7 +125,13 @@
   _TimeDelay(5000); // 이미지 복사 시간 대기
   //210218 CJH - 검사 종료시 결과파일 및 CCD Image 업로드
   SendMessageFTPUploadRaw(pData->GetGlassData());
   SendMessageFTPUploadImage(pData->GetGlassData(), FTPCMD_AOI_IMAGE);
   BOOL bIsBDI = strcmp((pData->GetGlassData()->m_strLine), _T("BDI")) == 0 ? TRUE : FALSE;
   if (bIsBDI)
   {
      SendMessageFTPUploadImage(pData->GetGlassData(), FTPCMD_AOI_IMAGE);
   }
   SendMessageFTPUploadImage(pData->GetGlassData(), FTPCMD_MURA_IMAGE);//0405nwh
   return TRUE;
@@ -207,6 +217,8 @@
   strcpy(pData->GetGlassData()->m_strPath, LOCAL_AOIRAWBIN_PATH);
   pData->GetGlassData()->m_tmReviewLoading = m_tmReviewStart;
   return TRUE;
}
@@ -216,6 +228,7 @@
   m_bReviewEndCheck = TRUE;
   m_tmReviewEnd = m_tmReviewStart = CTime::GetCurrentTime();
   m_tmFileCreateTime = CTime::GetCurrentTime();
   pData->GetGlassData()->m_tmReviewEnd = m_tmReviewEnd;
   
   //여기에서 라인별로 파일명, 혹은 Path 위치 결정하면됨. AOIServer 혹은 ReviewServer에서 안해도됨 [김태현2019/9/4]
   pData->GetGlassData()->m_strFileName;
@@ -434,11 +447,11 @@
   
   strValue = "ITEM PANEL MODULETYPE MODULEID PROCESSID PRODUCTID STEPID PROD_TYPE BATCHID H_PANELID E_PANELID P_PANELID OPERID COMP_COUNT PPID GRADE CODE R_GRADE MAP_IMAGE L_TIME U_TIME S_TIME E_TIME T_DEFECT TR PR TB TW RB RW T_STACK MAX_AVG_GRAY MAX_PORTION OK_CELL RJ_CELL RW_CELL NR_CELL CSTID SLOT_NO JOB_END TD_DEFECT SD_DEFECT PD_DEFECT SP_DEFECT PAD_GATE PAD_DATA M_DEFECT C_DEFECT BR_DEFECT IMG_COUNT RECIPE SHRINK RAW_CUT"; //53ea
   strLine += strValue; strLine += "\n";
   strValue = "ITEM SUBPANEL SUBPANELID COORD_X COORD_Y SIZE_X SIZE_Y GATELINE DATALINE GRADE CODE R_GRADE T_DEFECT TD_DEFECT SD_DEFECT PD_DEFECT SP_DEFECT PAD_GATE PAD_DATA M_DEFECT C_DEFECT PRO_IMAGE AVG_GRAY_0 PORTION_0 AVG_GRAY_1 PORTION_1 AVG_GRAY_2 PORTION_2 AVG_GRAY_3 PORTION_3"; //30ea 21-05-12 Mura Data 추가
   strValue = "ITEM SUBPANEL SUBPANELID COORD_X COORD_Y SIZE_X SIZE_Y GATELINE DATALINE GRADE CODE R_GRADE T_DEFECT TD_DEFECT SD_DEFECT PD_DEFECT SP_DEFECT PAD_GATE PAD_DATA M_DEFECT C_DEFECT PRO_IMAGE AVG_GRAY_0 PORTION_0 CORNER_GRAY_0 AVG_AMP_0 FFT_VAR_0 FFT_VAH_0 FFT_VAQ_0 FFT_PK_0 AVG_GRAY_1 PORTION_1 CORNER_GRAY_1 AVG_AMP_1 FFT_VAR_1 FFT_VAH_1 FFT_VAQ_1 FFT_PK_1 AVG_GRAY_2 PORTION_2 CORNER_GRAY_2 AVG_AMP_2 FFT_VAR_2 FFT_VAH_2 FFT_VAQ_2 FFT_PK_2 AVG_GRAY_3 PORTION_3 CORNER_GRAY_3 AVG_AMP_3 FFT_VAR_3 FFT_VAH_3 FFT_VAQ_3 FFT_PK_3"; //54ea 21-06-21 Mura Data 추가
   strLine += strValue; strLine += "\n";
   //210405
   //ITEM DEFECT ID DEF_NO COORD_X COORD_Y GATELINE DATALINE SIZE_S SIZE_W SIZE_L SIZE_H GRADE CODE STACK_FLAG STACK_COUNT STACK_STEP IMAGE_FILE DSC_CODE VC_CODE DCR_CODE DEFECT_SIZE REPEAT_DEFECT WSI_HEIGHT CS_HEIGHT C_GRADE GRAY_MIN GRAY_MAX GRAY_AVG GRAY_DEF WSI_IMAGE USE_CCDIMAGE SCAN_NUM CAM_POSITION CCD_NO R_GRAY_MIN R_GRAY_MAX R_GRAY_AVG SCAN_AI REVIEW_AI INS_MODE INS_CHANNEL COMPACTNESS THICKNESS MAJOR MINOR WSI_TYPE DEFECT_TYPE SHRINK
   strValue = "ITEM DEFECT ID DEF_NO COORD_X COORD_Y GATELINE DATALINE SIZE_S SIZE_W SIZE_L SIZE_H GRADE CODE STACK_FLAG STACK_COUNT STACK_STEP IMAGE_FILE DSC_CODE VC_CODE DCR_CODE DEFECT_SIZE REPEAT_DEFECT WSI_HEIGHT CS_HEIGHT C_GRADE GRAY_MIN GRAY_MAX GRAY_AVG GRAY_DEF WSI_IMAGE USE_CCDIMAGE SCAN_NUM CAM_POSITION CCD_NO R_GRAY_MIN R_GRAY_MAX R_GRAY_AVG R_HEIGHT G_HEIGHT B_HEIGHT INS_CHANNEL COMPACTNESS THICKNESS MAJOR MINOR WSI_TYPE DEFECT_TYPE SHRINK"; //49ea
   strValue = "ITEM DEFECT ID DEF_NO COORD_X COORD_Y GATELINE DATALINE SIZE_S SIZE_W SIZE_L SIZE_H GRADE CODE STACK_FLAG STACK_COUNT STACK_STEP IMAGE_FILE DSC_CODE VC_CODE DCR_CODE DEFECT_SIZE REPEAT_DEFECT WSI_HEIGHT CS_HEIGHT C_GRADE GRAY_MIN GRAY_MAX GRAY_AVG GRAY_DEF WSI_IMAGE USE_CCDIMAGE SCAN_NUM CAM_POSITION CCD_NO R_GRAY_MIN R_GRAY_MAX R_GRAY_AVG R_HEIGHT G_HEIGHT B_HEIGHT INS_CHANNEL COMPACTNESS THICKNESS MAJOR MINOR WSI_TYPE DEFECT_TYPE SHRINK CLASS_CODE"; //50ea
   strLine += strValue;
}
@@ -767,10 +780,17 @@
   {
      SPRINTRAW(16, "*");
   }
   else
   else if(strlen(pGlassData->m_strRecipeName) <= 16)
   {
      SPRINTRAW(16, "%s", pGlassData->m_strRecipeName);
   }
   else if (strlen(pGlassData->m_strRecipeName) > 16)
   {
      CString temp = pGlassData->m_strRecipeName;  // 레시피 17자리 넘어가면 DCOLL 발생으로 예외처리 [ 21-06-02 KJG ]
      temp = temp.Left(16);
      SPRINTRAW(16, "%s", temp.GetBuffer(0));
   }
   // 52   12   SHRINK      // Server or Frame Shrink 동작 여부
   if (strlen(pGlassData->m_strShrinked) == 0)
   {
@@ -921,8 +941,69 @@
   {
      SPRINTRAW(12, "*");
   }
   //kyh 0622
   // 25 12 CORNER_GRAY_0
   if (strlen(pCellData->m_strCorner_Gray_0))
   {
      SPRINTRAW(12, "%s", pCellData->m_strCorner_Gray_0);
   }
   else
   {
      SPRINTRAW(12, "*");
   }
   // 25 12  AVG_GRAY_1
   // 26 12 AVG_AMP_0
   if (strlen(pCellData->m_strAvgAmp_0))
   {
      SPRINTRAW(12, "%s", pCellData->m_strAvgAmp_0);
   }
   else
   {
      SPRINTRAW(12, "*");
   }
   // 27 12 FFT_VAR_0
   if (strlen(pCellData->m_strFFTVar_0))
   {
      SPRINTRAW(12, "%s", pCellData->m_strFFTVar_0);
   }
   else
   {
      SPRINTRAW(12, "*");
   }
   // 28 12 FFT_VAH_0
   if (strlen(pCellData->m_strFFTVah_0))
   {
      SPRINTRAW(12, "%s", pCellData->m_strFFTVah_0);
   }
   else
   {
      SPRINTRAW(12, "*");
   }
   // 29 12 FFT_VAQ_0
   if (strlen(pCellData->m_strFFTVaq_0))
   {
      SPRINTRAW(12, "%s", pCellData->m_strFFTVaq_0);
   }
   else
   {
      SPRINTRAW(12, "*");
   }
   // 30 12 FFT_PK_0
   if (strlen(pCellData->m_strFFTPK_0))
   {
      SPRINTRAW(12, "%s", pCellData->m_strFFTPK_0);
   }
   else
   {
      SPRINTRAW(12, "*");
   }
   // 31 12  AVG_GRAY_1
   if (strlen(pCellData->m_strAvgGray_1))
   {
      SPRINTRAW(12, "%s", pCellData->m_strAvgGray_1);
@@ -931,7 +1012,7 @@
   {
      SPRINTRAW(12, "*");
   }
   // 26 12 PORTION_1
   // 32 12 PORTION_1
   if (strlen(pCellData->m_strPortion_1))
   {
      SPRINTRAW(12, "%s", pCellData->m_strPortion_1);
@@ -940,7 +1021,69 @@
   {
      SPRINTRAW(12, "*");
   }
   // 27 12  AVG_GRAY_2
   //kyh 0622
   // 33 12 CORNER_GRAY_1
   if (strlen(pCellData->m_strCorner_Gray_1))
   {
      SPRINTRAW(12, "%s", pCellData->m_strCorner_Gray_1);
   }
   else
   {
      SPRINTRAW(12, "*");
   }
   // 34 12 AVG_AMP_1
   if (strlen(pCellData->m_strAvgAmp_1))
   {
      SPRINTRAW(12, "%s", pCellData->m_strAvgAmp_1);
   }
   else
   {
      SPRINTRAW(12, "*");
   }
   // 35 12 FFT_VAR_1
   if (strlen(pCellData->m_strFFTVar_1))
   {
      SPRINTRAW(12, "%s", pCellData->m_strFFTVar_1);
   }
   else
   {
      SPRINTRAW(12, "*");
   }
   // 36 12 FFT_VAH_1
   if (strlen(pCellData->m_strFFTVah_1))
   {
      SPRINTRAW(12, "%s", pCellData->m_strFFTVah_1);
   }
   else
   {
      SPRINTRAW(12, "*");
   }
   // 37 12 FFT_VAQ_1
   if (strlen(pCellData->m_strFFTVaq_1))
   {
      SPRINTRAW(12, "%s", pCellData->m_strFFTVaq_1);
   }
   else
   {
      SPRINTRAW(12, "*");
   }
   // 38 12 FFT_PK_1
   if (strlen(pCellData->m_strFFTPK_1))
   {
      SPRINTRAW(12, "%s", pCellData->m_strFFTPK_1);
   }
   else
   {
      SPRINTRAW(12, "*");
   }
   // 39 12  AVG_GRAY_2
   if (strlen(pCellData->m_strAvgGray_2))
   {
      SPRINTRAW(12, "%s", pCellData->m_strAvgGray_2);
@@ -949,7 +1092,7 @@
   {
      SPRINTRAW(12, "*");
   }
   // 28 12 PORTION_2
   // 40 12 PORTION_2
   if (strlen(pCellData->m_strPortion_2))
   {
      SPRINTRAW(12, "%s", pCellData->m_strPortion_2);
@@ -958,7 +1101,69 @@
   {
      SPRINTRAW(12, "*");
   }
   // 29 12  AVG_GRAY_3
   //kyh 0622
   // 41 12 CORNER_GRAY_2
   if (strlen(pCellData->m_strCorner_Gray_2))
   {
      SPRINTRAW(12, "%s", pCellData->m_strCorner_Gray_2);
   }
   else
   {
      SPRINTRAW(12, "*");
   }
   // 42 12 AVG_AMP_2
   if (strlen(pCellData->m_strAvgAmp_2))
   {
      SPRINTRAW(12, "%s", pCellData->m_strAvgAmp_2);
   }
   else
   {
      SPRINTRAW(12, "*");
   }
   // 43 12 FFT_VAR_2
   if (strlen(pCellData->m_strFFTVar_2))
   {
      SPRINTRAW(12, "%s", pCellData->m_strFFTVar_2);
   }
   else
   {
      SPRINTRAW(12, "*");
   }
   // 44 12 FFT_VAH_2
   if (strlen(pCellData->m_strFFTVah_2))
   {
      SPRINTRAW(12, "%s", pCellData->m_strFFTVah_2);
   }
   else
   {
      SPRINTRAW(12, "*");
   }
   // 45 12 FFT_VAQ_2
   if (strlen(pCellData->m_strFFTVaq_2))
   {
      SPRINTRAW(12, "%s", pCellData->m_strFFTVaq_2);
   }
   else
   {
      SPRINTRAW(12, "*");
   }
   // 46 12 FFT_PK_2
   if (strlen(pCellData->m_strFFTPK_2))
   {
      SPRINTRAW(12, "%s", pCellData->m_strFFTPK_2);
   }
   else
   {
      SPRINTRAW(12, "*");
   }
   // 47 12  AVG_GRAY_3
   if (strlen(pCellData->m_strAvgGray_3))
   {
      SPRINTRAW(12, "%s", pCellData->m_strAvgGray_3);
@@ -967,10 +1172,71 @@
   {
      SPRINTRAW(12, "*");
   }
   // 30 12 PORTION_3
   // 48 12 PORTION_3
   if (strlen(pCellData->m_strPortion_3))
   {
      SPRINTRAW(12, "%s", pCellData->m_strPortion_3);
   }
   else
   {
      SPRINTRAW(12, "*");
   }
   //kyh 0622
   // 49 12 CORNER_GRAY_3
   if (strlen(pCellData->m_strCorner_Gray_3))
   {
      SPRINTRAW(12, "%s", pCellData->m_strCorner_Gray_3);
   }
   else
   {
      SPRINTRAW(12, "*");
   }
   // 50 12 AVG_AMP_3
   if (strlen(pCellData->m_strAvgAmp_3))
   {
      SPRINTRAW(12, "%s", pCellData->m_strAvgAmp_3);
   }
   else
   {
      SPRINTRAW(12, "*");
   }
   // 51 12 FFT_VAR_3
   if (strlen(pCellData->m_strFFTVar_3))
   {
      SPRINTRAW(12, "%s", pCellData->m_strFFTVar_3);
   }
   else
   {
      SPRINTRAW(12, "*");
   }
   // 52 12 FFT_VAH_3
   if (strlen(pCellData->m_strFFTVah_3))
   {
      SPRINTRAW(12, "%s", pCellData->m_strFFTVah_3);
   }
   else
   {
      SPRINTRAW(12, "*");
   }
   // 53 12 FFT_VAQ_3
   if (strlen(pCellData->m_strFFTVaq_3))
   {
      SPRINTRAW(12, "%s", pCellData->m_strFFTVaq_3);
   }
   else
   {
      SPRINTRAW(12, "*");
   }
   // 54 12 FFT_PK_3
   if (strlen(pCellData->m_strFFTPK_3))
   {
      SPRINTRAW(12, "%s", pCellData->m_strFFTPK_3);
   }
   else
   {
@@ -1160,6 +1426,7 @@
         nValue = nValue << 1;
   }
   SPRINTRAW(12, "%04X", nValue);
   // 22   12    DEFECT_SIZE   // Common 04 불량 크기 (L,H,M,S)
   if (pDefectData->m_DefectSizeType == SizeType_Small)
   {
@@ -1379,6 +1646,17 @@
   // 49   12    Frame Shrink 정보 추가
   SPRINTRAW(12, "%d", pDefectData->m_bShrinked);
   
   // 50   12    CLASS_NO      // Zone Classification NO
   // Zone Data
   nValue = 0;
   for (int i = 15; i >= 0; i--)
   {
      if (pDefectData->m_sZoneClassPixelCount[i] > 0)
         nValue += 1;
      if (i > 0)
         nValue = nValue << 1;
   }
   SPRINTRAW(12, "%04X", nValue);
   SPRINTRAWEND;   //중요!!! 젤 마지막에 꼭 있어야함!!!(삭제금지) [김태현2020/9/23]
@@ -1532,23 +1810,18 @@
void CGlassRawCPJT::SendMessageFTPDownloadDataFile( _grmGlassData* pGlassData )
{
   if(pGlassData == NULL) return;
   HWND hWnd = ::FindWindow(NULL, "FTPDownloader");
   HWND hWnd = ::FindWindow(NULL, "FTPUploader");
   if(hWnd == NULL) return;
   char strServerFolder[256] = {};
   char strServerFile[256] = {};
   char strLocalFolder[256] = {};
   char pLocalFile[256] = {};
   char pLocalFile[256] = {};
   char strRTMSFile[32] = {};
   char strServerRawFileSubPath[256] = {};
   char strServer_SubFileName[256] = {};
   //GetFormatDescription(FTPCMD_DATAFILE, strServerFolder, strServerFile, strLocalFolder, pLocalFile, pGlassData);
   {
      CString strGlassIDOrg = pGlassData->m_strGlassID;
      CString strGlassID = strGlassIDOrg.Left(12);
      sprintf(strServerFolder, "%s", pGlassData->m_strCassetteSequenceNo);
      sprintf(strServerFile, "%s.dat", strGlassID.GetBuffer(0));
      sprintf(strLocalFolder,  "D:\\DIT_ResultData\\DownloadData");
      sprintf(pLocalFile,  "%s.dat", strGlassID.GetBuffer(0));
   }
   GetFormatDescription(FTPCMD_RAWMERGE, strServerFolder, strServerFile, strLocalFolder, pLocalFile, strRTMSFile, strServerRawFileSubPath, strServer_SubFileName, pGlassData);
   CFTPCopyDataParam upParam;
   strcpy(upParam.m_strServer_FolderName,         strServerFolder);
@@ -1561,7 +1834,7 @@
   upParam.m_nSendResultCode                     = FALSE;//m_ctrlResultAck.GetCheck();
   upParam.m_nProcessType                        = CFTPCopyDataParam::FTPProcessType_DownFile;
   // [C-PRJ] Image Upload Define - KHT (2020/11/19)
   upParam.m_nDataType = CFTPCopyDataParam::FTPDataType_Unknown;
   upParam.m_nDataType = CFTPCopyDataParam::FTPDataType_Raw;
   COPYDATASTRUCT cds;
   cds.dwData = CFTPCopyDataParam::FTPCopyDataCmd_RawDownload;
@@ -1703,7 +1976,7 @@
         else
            sprintf(pServerPath, "\\%s\\%s\\%s\\", strProcessID, strStepID, strGlassIDLevel6th);
         sprintf(pLocalPath, "%s%s", LOCAL_AOI_IMAGE_PATH, strGlassID.GetBuffer(0));
         sprintf(pLocalPath, "%s%s", NETWORK_AOI_IMAGE_PATH, strGlassID.GetBuffer(0));
         strcpy(pServerFile, "*.*");
         strcpy(pLocalFile, "*.*");
      }
@@ -1861,23 +2134,31 @@
         sprintf(pLocalFile, "%s", strGlassID.GetBuffer(0)); 
      }
      break;
      case FTPCMD_MURA_IMAGE: //0404nwh
      {   //
         /*CTime time = m_tmFileCreateTime;
         sprintf(pServerPath, "%s\\%04d%02d%02d\\%s\\%s\\%s\\Image", pGlassData->m_strEquipID, time.GetYear(), time.GetMonth(), time.GetDay(),
            strGlassIDLevel5th.GetBuffer(0),
            strGlassIDLevel8th.GetBuffer(0),
            strGlassID.GetBuffer(0));
                     sprintf(pLocalPath, "%s%s", LOCAL_MURA_IMAGE_PATH, strGlassID.GetBuffer(0));
         strcpy(pServerFile, "*.*");
         strcpy(pLocalFile, "*.*");*/
         if (strGlassID.GetLength() > 6)
            sprintf(pServerPath, "\\%s\\%s\\%s\\%s\\", strProcessID, strStepID, strGlassIDLevel6th, strGlassID);
         else
            sprintf(pServerPath, "\\%s\\%s\\%s\\", strProcessID, strStepID, strGlassIDLevel6th);
   case FTPCMD_RAWMERGE:
   {
      sprintf(pServerPath, "\\%s\\%s\\%s", strProcessID, strStepID,strGlassIDLevel6th.GetBuffer(0)); // 서버 경로 확인후 수정 kjg
      sprintf(pServerFile, "%s",strGlassID);
      sprintf(pLocalPath, "%s", m_RawMergeResult.getRawMergeLocalPath());
      sprintf(pLocalFile, "%s", strGlassID.GetBuffer(0));
   }
      break;
   case FTPCMD_MURA_IMAGE: //0404nwh
   {   //
      /*CTime time = m_tmFileCreateTime;
      sprintf(pServerPath, "%s\\%04d%02d%02d\\%s\\%s\\%s\\Image", pGlassData->m_strEquipID, time.GetYear(), time.GetMonth(), time.GetDay(),
         strGlassIDLevel5th.GetBuffer(0),
         strGlassIDLevel8th.GetBuffer(0),
         strGlassID.GetBuffer(0));
                  sprintf(pLocalPath, "%s%s", LOCAL_MURA_IMAGE_PATH, strGlassID.GetBuffer(0));
      strcpy(pServerFile, "*.*");
      strcpy(pLocalFile, "*.*");*/
      if (strGlassID.GetLength() > 6)
         sprintf(pServerPath, "\\%s\\%s\\%s\\%s\\", strProcessID, strStepID, strGlassIDLevel6th, strGlassID);
      else
         sprintf(pServerPath, "\\%s\\%s\\%s\\", strProcessID, strStepID, strGlassIDLevel6th);
         sprintf(pLocalPath, "%s%s", LOCAL_MURA_IMAGE_PATH, strGlassID.GetBuffer(0)); 
         strcpy(pServerFile, "*.*");