SDC C-Project CF Review 프로그램
LYW
2021-09-14 ffe71aadfdcb4a9ea2ac4d8d320983d42ef3cad5
ReviewHistory/ReveiwHistory/InterfaceFTP.cpp
»õ ÆÄÀÏ
@@ -0,0 +1,389 @@
#include "StdAfx.h"
#include "InterfaceFTP.h"
#include "akLoggerExt.h"
#include "akCore/akFileUtil.h"
#define LOCAL_INDEX_PATH         "D:\\DIT_ResultData\\Index\\"
#define LOCAL_REV_IMAGE_PATH      "D:\\ResultData\\Upload\\Image\\"
#define LOCAL_AOI_IMAGE_PATH      "D:\\Image\\Defect\\"
#define LOCAL_MURA_IMAGE_PATH      "D:\\DIT_ResultData\\Mura\\IMG\\"
#define LOCAL_DEEP_PATH            "D:\\DIT_ResultData\\Deeplearning\\"
CInterfaceFTP::CInterfaceFTP(void)
{
}
CInterfaceFTP::~CInterfaceFTP(void)
{
}
void CInterfaceFTP::SendMessageFTPUploadLinkFile( _grmGlassData* pGlassData )
{
   if(pGlassData == NULL) return;
   HWND hWnd = ::FindWindow(NULL, "FTPUploader");
   if(hWnd == NULL) return;
   char strServerFolder[256] = {};
   char strServerFile[256] = {};
   char strLocalFolder[256] = {};
   char pLocalFile[256] = {};
   GetFormatDescription(FTPCMD_LINK, strServerFolder, strServerFile, strLocalFolder, pLocalFile, pGlassData);
   CFTPCopyDataParam upParam;
   strcpy(upParam.m_strServer_FolderName,         strServerFolder);
   strcpy(upParam.m_strServer_FileName,         strServerFile);
   strcpy(upParam.m_strLocal_FolderName,         strLocalFolder);
   strcpy(upParam.m_strLocal_FileName,            pLocalFile);
   strcpy(upParam.m_strServer_SignalFolderName,   "");
   strcpy(upParam.m_strServer_SignalFileName,      "");
   upParam.m_nCreateSignalFile                     = FALSE;//m_ctrlCreateSignal.GetCheck();
   upParam.m_nSendResultCode                     = FALSE;//m_ctrlResultAck.GetCheck();
   upParam.m_nProcessType                        = CFTPCopyDataParam::FTPProcessType_UpFile;
   COPYDATASTRUCT cds;
   cds.dwData = CFTPCopyDataParam::FTPCopyDataCmd_RawUpload;
   cds.cbData = sizeof(CFTPCopyDataParam);
   cds.lpData = &upParam;
   DWORD dwReturn = 0;
   if(SendMessageTimeout(hWnd, WM_COPYDATA, NULL, (LPARAM)&cds, SMTO_NORMAL, 20000, (PDWORD_PTR)(dwReturn)) == FALSE)
   {
   }
}
void CInterfaceFTP::SendMessageFTPUploadRaw( _grmGlassData* pGlassData )
{
   if(pGlassData == NULL) return;
   HWND hWnd = ::FindWindow(NULL, "FTPUploader");
   if(hWnd == NULL) return;
   char strServerFolder[256] = {};
   char strServerFile[256] = {};
   char strLocalFolder[256] = {};
   char pLocalFile[256] = {};
   GetFormatDescription(FTPCMD_RAW, strServerFolder, strServerFile, strLocalFolder, pLocalFile, pGlassData);
   CFTPCopyDataParam upParam;
   strcpy(upParam.m_strServer_FolderName,         strServerFolder);
   strcpy(upParam.m_strServer_FileName,         strServerFile);
   strcpy(upParam.m_strLocal_FolderName,         strLocalFolder);
   strcpy(upParam.m_strLocal_FileName,            pLocalFile);
   strcpy(upParam.m_strServer_SignalFolderName,   "");
   strcpy(upParam.m_strServer_SignalFileName,      "");
   upParam.m_nCreateSignalFile                     = FALSE;//m_ctrlCreateSignal.GetCheck();
   upParam.m_nSendResultCode                     = FALSE;//m_ctrlResultAck.GetCheck();
   upParam.m_nProcessType                        = CFTPCopyDataParam::FTPProcessType_UpFile;
   COPYDATASTRUCT cds;
   cds.dwData = CFTPCopyDataParam::FTPCopyDataCmd_RawUpload;
   cds.cbData = sizeof(CFTPCopyDataParam);
   cds.lpData = &upParam;
   DWORD dwReturn = 0;
   if(SendMessageTimeout(hWnd, WM_COPYDATA, NULL, (LPARAM)&cds, SMTO_NORMAL, 20000, (PDWORD_PTR)(dwReturn)) == FALSE)
   {
   }
}
void CInterfaceFTP::SendMessageFTPDownloadStack( _grmGlassData* pGlassData )
{
   if(pGlassData == NULL) return;
   HWND hWnd = ::FindWindow(NULL, "FTPUploader");
   if(hWnd == NULL) return;
   char strServerFolder[256] = {};
   char strServerFile[256] = {};
   char strLocalFolder[256] = {};
   char pLocalFile[256] = {};
   GetFormatDescription(FTPCMD_STACK, strServerFolder, strServerFile, strLocalFolder, pLocalFile, pGlassData);
   CFTPCopyDataParam upParam;
   strcpy(upParam.m_strServer_FolderName,         strServerFolder);
   strcpy(upParam.m_strServer_FileName,         strServerFile);
   strcpy(upParam.m_strLocal_FolderName,         strLocalFolder);
   strcpy(upParam.m_strLocal_FileName,            pLocalFile);
   strcpy(upParam.m_strServer_SignalFolderName,   "");
   strcpy(upParam.m_strServer_SignalFileName,      "");
   upParam.m_nCreateSignalFile                     = FALSE;//m_ctrlCreateSignal.GetCheck();
   upParam.m_nSendResultCode                     = FALSE;//m_ctrlResultAck.GetCheck();
   upParam.m_nProcessType                        = CFTPCopyDataParam::FTPProcessType_DownFile;
   COPYDATASTRUCT cds;
   cds.dwData = CFTPCopyDataParam::FTPCopyDataCmd_RawDownload;
   cds.cbData = sizeof(CFTPCopyDataParam);
   cds.lpData = &upParam;
   DWORD dwReturn = 0;
   if(SendMessageTimeout(hWnd, WM_COPYDATA, NULL, (LPARAM)&cds, SMTO_NORMAL, 20000, (PDWORD_PTR)(dwReturn)) == FALSE)
   {
   }
}
void CInterfaceFTP::SendMessageFTPDownloadDataFile( _grmGlassData* pGlassData )
{
   if(pGlassData == NULL) return;
   HWND hWnd = ::FindWindow(NULL, "FTPDownloader");
   if(hWnd == NULL) return;
   char strServerFolder[256] = {};
   char strServerFile[256] = {};
   char strLocalFolder[256] = {};
   char pLocalFile[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));
   }
   CFTPCopyDataParam upParam;
   strcpy(upParam.m_strServer_FolderName,         strServerFolder);
   strcpy(upParam.m_strServer_FileName,         strServerFile);
   strcpy(upParam.m_strLocal_FolderName,         strLocalFolder);
   strcpy(upParam.m_strLocal_FileName,            pLocalFile);
   strcpy(upParam.m_strServer_SignalFolderName,   "");
   strcpy(upParam.m_strServer_SignalFileName,      "");
   upParam.m_nCreateSignalFile                     = FALSE;//m_ctrlCreateSignal.GetCheck();
   upParam.m_nSendResultCode                     = FALSE;//m_ctrlResultAck.GetCheck();
   upParam.m_nProcessType                        = CFTPCopyDataParam::FTPProcessType_DownFile;
   COPYDATASTRUCT cds;
   cds.dwData = CFTPCopyDataParam::FTPCopyDataCmd_RawDownload;
   cds.cbData = sizeof(CFTPCopyDataParam);
   cds.lpData = &upParam;
   DWORD dwReturn = 0;
   if(SendMessageTimeout(hWnd, WM_COPYDATA, NULL, (LPARAM)&cds, SMTO_NORMAL, 20000, (PDWORD_PTR)(dwReturn)) == FALSE)
   {
   }
}
void CInterfaceFTP::SendMessageFTPUploadImage( _grmGlassData* pGlassData, emFTPCommand sort)
{
   if(pGlassData == NULL) return;
   HWND hWnd = ::FindWindow(NULL, "FTPUploader");
   if(hWnd == NULL) return;
   char strServerFolder[256] = {};
   char strServerFile[32];// = "*.*";
   char strLocalFolder[256] = {};
   char strLocalFile[32];// = "*.*";
   GetFormatDescription(sort, strServerFolder, strServerFile, strLocalFolder, strLocalFile, pGlassData);
//    if(0)//test
//    {
//       sprintf(strServerFolder, "HDD1/DIT/TestC");
//    }
   CFTPCopyDataParam upParam;
   strcpy(upParam.m_strServer_FolderName,         strServerFolder);
   strcpy(upParam.m_strServer_FileName,         strServerFile);
   strcpy(upParam.m_strLocal_FolderName,         strLocalFolder);
   strcpy(upParam.m_strLocal_FileName,            strLocalFile);
   strcpy(upParam.m_strServer_SignalFolderName,   "");
   strcpy(upParam.m_strServer_SignalFileName,      "");
   upParam.m_nCreateSignalFile                     = FALSE;
   upParam.m_nSendResultCode                     = FALSE;
   upParam.m_nProcessType                        = CFTPCopyDataParam::FTPProcessType_UpFile;
   COPYDATASTRUCT cds;
   cds.dwData = CFTPCopyDataParam::FTPCopyDataCmd_RawUpload; //<--요건 ë‚˜ì¤‘에 êµ¬ë¶„
   cds.cbData = sizeof(CFTPCopyDataParam);
   cds.lpData = &upParam;
   DWORD dwReturn = 0;
   if(SendMessageTimeout(hWnd, WM_COPYDATA, NULL, (LPARAM)&cds, SMTO_NORMAL, 20000, (PDWORD_PTR)(dwReturn)) == FALSE)
   {
   }
}
BOOL CInterfaceFTP::SendMessageFTPUploadIndexFile( _grmGlassData* pGlassData )
{
   if(pGlassData == NULL)
      return FALSE;
   HWND hWnd = ::FindWindow(NULL, "FTPUploader");
   if(hWnd == NULL) return FALSE;
   char strServerFolder[256] = {};
   char strServerFile[256] = {};
   char strLocalFolder[256] = {};
   char pLocalFile[256] = {};
   GetFormatDescription(FTPCMD_INDEX, strServerFolder, strServerFile, strLocalFolder, pLocalFile, pGlassData);
   //    if(0)//test
   //    {
   //       sprintf(strServerFolder, "HDD1/DIT/TestC");
   //       ServerFile = "ftptestfile.txt";
   //
   //       sprintf(strLocalFolder, "D:");
   //       pLocalFile = "ftptestfile.txt";
   //    }
   CFTPCopyDataParam upParam;
   strcpy(upParam.m_strServer_FolderName,         strServerFolder);
   strcpy(upParam.m_strServer_FileName,         strServerFile);
   strcpy(upParam.m_strLocal_FolderName,         strLocalFolder);
   strcpy(upParam.m_strLocal_FileName,            pLocalFile);
   strcpy(upParam.m_strServer_SignalFolderName,   "");
   strcpy(upParam.m_strServer_SignalFileName,      "");
   upParam.m_nCreateSignalFile                     = FALSE;//m_ctrlCreateSignal.GetCheck();
   upParam.m_nSendResultCode                     = FALSE;//m_ctrlResultAck.GetCheck();
   upParam.m_nProcessType                        = CFTPCopyDataParam::FTPProcessType_UpFile;
   COPYDATASTRUCT cds;
   cds.dwData = CFTPCopyDataParam::FTPCopyDataCmd_RawUpload;
   cds.cbData = sizeof(CFTPCopyDataParam);
   cds.lpData = &upParam;
   DWORD dwReturn = 0;
   if(SendMessageTimeout(hWnd, WM_COPYDATA, NULL, (LPARAM)&cds, SMTO_NORMAL, 20000, (PDWORD_PTR)(dwReturn)) == FALSE)
   {
   }
   return TRUE;
}
void CInterfaceFTP::GetFormatDescription(emFTPCommand sort, char* pServerPath, char* pServerFile, char* pLocalPath, char* pLocalFile, _grmGlassData* pGlassData)
{
   CString strGlassIDOrg = pGlassData->m_strGlassID;
   CString strGlassID = strGlassIDOrg.Left(12);
   CString strGlassIDLevel5th = strGlassID.Left(5);
   CString strGlassIDLevel8th = strGlassID.Left(8);
   switch(sort)
   {
   case FTPCMD_AOI_IMAGE:
      {
         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_AOI_IMAGE_PATH, strGlassID.GetBuffer(0));
         strcpy(pServerFile, "*.*");
         strcpy(pLocalFile, "*.*");
      }
      break;
   case FTPCMD_REVIEW_IMAGE:
      {
         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_REV_IMAGE_PATH, strGlassID.GetBuffer(0));
         strcpy(pServerFile, "*.*");
         strcpy(pLocalFile, "*.*");
      }
      break;
   case FTPCMD_RAW:
      {
         CTime time = m_tmFileCreateTime;
         CString strFileName;//파일생성 ì‹œê°„ ë•Œë¬¸ì— ì—¬ê¸°ì„œ ì •확하게 íŒŒì¼ëª… ë‹¤ì‹œ ì •ì •
         {
            //Glass ì •ë³´
            CTime CurrTime = m_tmFileCreateTime;
            CString strTime;
            strTime.Format(_T("%04d%02d%02d_%02d%02d%02d"),
               CurrTime.GetYear(), CurrTime.GetMonth(), CurrTime.GetDay(), CurrTime.GetHour(), CurrTime.GetMinute(), CurrTime.GetSecond());
            strFileName.Format("%s_%s_%s.csv", pGlassData->m_strOperID, pGlassData->m_strGlassID, strTime.GetBuffer(0));
         }
         sprintf(pServerPath, "%s\\%04d%02d%02d\\%s\\%s\\%s\\Data", pGlassData->m_strEquipID, time.GetYear(), time.GetMonth(), time.GetDay(),
            strGlassIDLevel5th.GetBuffer(0),
            strGlassIDLevel8th.GetBuffer(0),
            strGlassID.GetBuffer(0));
         sprintf(pLocalPath, "%s", pGlassData->m_strPath);
         sprintf(pServerFile, "%s", strFileName.GetBuffer(0));
         sprintf(pLocalFile, "%s", strFileName.GetBuffer(0));
      }
      break;
   case FTPCMD_STACK:
      {
//          CTime time = pGlassData->m_tmGlassLoading;
//          sprintf(pServerPath, "%s\\%04d%02d%02d\\%s\\%s\\%s\\Data", m_StackResult.getStackEquipID(), time.GetYear(), time.GetMonth(), time.GetDay(),
//             strGlassIDLevel5th.GetBuffer(0),
//             strGlassIDLevel8th.GetBuffer(0),
//             strGlassID.GetBuffer(0));
//
//          //가장 ìµœê·¼ê±¸ ì°¾ì•„야 í•˜ë‚˜? [김태현 2019/1/12]
//          sprintf(pServerFile, "%s_%s_*.csv",
//             m_StackResult.getStackOperID(),
//             pGlassData->m_strGlassID);
//
//          sprintf(pLocalPath, "%s", m_StackResult.getStackLocalPath());
//          sprintf(pLocalFile, "%s.txt", strGlassID.GetBuffer(0));
      }
      break;
   case FTPCMD_MURA_IMAGE:
      {
         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, "*.*");
      }
      break;
   case FTPCMD_INDEX:
      {
         CTime time = m_tmFileCreateTime;
         sprintf(pServerPath, "INDEX\\%s", pGlassData->m_strEquipID);
         sprintf(pServerFile, "%04d%02d%02d_%s.csv", time.GetYear(), time.GetMonth(), time.GetDay(),   pGlassData->m_strStepID);
         sprintf(pLocalPath, "%s", LOCAL_INDEX_PATH);
         sprintf(pLocalFile, "%s", pServerFile);
      }
      break;
   case FTPCMD_LINK:
      {
         CTime time = m_tmFileCreateTime;
         CString strFileName;//파일생성 ì‹œê°„ ë•Œë¬¸ì— ì—¬ê¸°ì„œ ì •확하게 íŒŒì¼ëª… ë‹¤ì‹œ ì •ì •
         {
            //Glass ì •ë³´
            CTime CurrTime = m_tmFileCreateTime;
            CString strTime;
            strTime.Format(_T("%04d%02d%02d_%02d%02d%02d"),
               CurrTime.GetYear(), CurrTime.GetMonth(), CurrTime.GetDay(), CurrTime.GetHour(), CurrTime.GetMinute(), CurrTime.GetSecond());
            strFileName.Format("%s_%s_%s.csv", pGlassData->m_strOperID, pGlassData->m_strGlassID, strTime.GetBuffer(0));
         }
         sprintf(pServerPath, "%s\\%s\\%s\\%s\\%s", "LINK", pGlassData->m_strEquipID,
            strGlassIDLevel5th.GetBuffer(0),
            strGlassIDLevel8th.GetBuffer(0),
            strGlassID.GetBuffer(0));
         sprintf(pLocalPath, "%s", pGlassData->m_strPath);
         sprintf(pServerFile, "%s", strFileName.GetBuffer(0));
         sprintf(pLocalFile, "%s", strFileName.GetBuffer(0));
      }
      break;
   }
}