SDC C-Project CF Review 프로그램
LYW
2021-09-14 ffe71aadfdcb4a9ea2ac4d8d320983d42ef3cad5
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;
@@ -437,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;
}
@@ -931,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);
@@ -941,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);
@@ -950,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);
@@ -959,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);
@@ -968,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);
@@ -977,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
   {
@@ -1170,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)
   {
@@ -1389,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]
@@ -1542,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);
@@ -1571,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;
@@ -1713,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, "*.*");
      }
@@ -1871,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, "*.*");