SDC C-Project CF Review 프로그램
Ongoing60 #3662 CF AOI Review 전설비 알람 발생 조치
- Review History File Mapping 해제
- Review Inner History 다운 현상 예외처리 추가
- Review End 시 Review 다운 현상 예외처리 추가
4개 파일 변경됨
172 ■■■■■ 파일 변경됨
ReviewHistory/ReveiwHistory/DitGlassRawServer.cpp 132 ●●●● 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/ReviewSystem/DlgDeffectHistroy.cpp 11 ●●●●● 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/ReviewSystem/DlgReviewHistoryTool.cpp 20 ●●●●● 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/ReviewSystem/SequenceProcessor_CPJT.cpp 9 ●●●●● 패치 | 보기 | raw | blame | 히스토리
ReviewHistory/ReveiwHistory/DitGlassRawServer.cpp
@@ -15,6 +15,9 @@
CDitGlassRawServer::~CDitGlassRawServer(void)
{
    delete m_pGlassRawData;
    delete m_pGlassRawInfo;
    if (m_hMapBasicInfo!=NULL)
    {
        ::UnmapViewOfFile(m_hMapBasicInfo);
@@ -91,37 +94,40 @@
BOOL CDitGlassRawServer::CreateGlassRawInfo()
{
    if(m_hMapBasicInfo == NULL)
    {
        BOOL bCreateMem = TRUE;
        m_hMapBasicInfo = ::CreateFileMapping(INVALID_HANDLE_VALUE,NULL,PAGE_READWRITE
            , 0, sizeof(_grmDitGlassRawInfo), SHAREDMEMNAME_BASICINFO);
        if (::GetLastError() == ERROR_ALREADY_EXISTS)
        {
            m_hMapBasicInfo = ::OpenFileMapping(FILE_MAP_ALL_ACCESS,FALSE,SHAREDMEMNAME_BASICINFO);
            bCreateMem = FALSE;
        }
        if (m_hMapBasicInfo)
        {
            m_pGlassRawInfo = (_grmDitGlassRawInfo*)::MapViewOfFile(m_hMapBasicInfo, FILE_MAP_ALL_ACCESS, 0, 0, sizeof(_grmDitGlassRawInfo));
        }
        if(m_hMapBasicInfo == NULL || m_pGlassRawInfo == NULL)
        {
            if (m_hMapBasicInfo!=NULL)
            {
                ::UnmapViewOfFile(m_hMapBasicInfo);
                m_pGlassRawInfo = NULL;
            }
            m_pGlassRawInfo = NULL;
            return FALSE;
        }
//     if(m_hMapBasicInfo == NULL)
//     {
//         BOOL bCreateMem = TRUE;
//
//         m_hMapBasicInfo = ::CreateFileMapping(INVALID_HANDLE_VALUE,NULL,PAGE_READWRITE
//             , 0, sizeof(_grmDitGlassRawInfo), SHAREDMEMNAME_BASICINFO);
//
//         if (::GetLastError() == ERROR_ALREADY_EXISTS)
//         {
//             m_hMapBasicInfo = ::OpenFileMapping(FILE_MAP_ALL_ACCESS,FALSE,SHAREDMEMNAME_BASICINFO);
//             bCreateMem = FALSE;
//         }
//
//         if (m_hMapBasicInfo)
//         {
//             m_pGlassRawInfo = (_grmDitGlassRawInfo*)::MapViewOfFile(m_hMapBasicInfo, FILE_MAP_ALL_ACCESS, 0, 0, sizeof(_grmDitGlassRawInfo));
//         }
//
//         if(m_hMapBasicInfo == NULL || m_pGlassRawInfo == NULL)
//         {
//             if (m_hMapBasicInfo!=NULL)
//             {
//                 ::UnmapViewOfFile(m_hMapBasicInfo);
//                 m_pGlassRawInfo = NULL;
//             }
//             m_pGlassRawInfo = NULL;
//             return FALSE;
//         }
        //0으로 초기화
        if(bCreateMem && m_pGlassRawInfo)
        //if(bCreateMem && m_pGlassRawInfo)
        //_grmDitGlassRawInfo SemiServer;
    m_pGlassRawInfo = new _grmDitGlassRawInfo;
        if (m_pGlassRawInfo)
        {
            ZeroMemory(m_pGlassRawInfo,sizeof(_grmDitGlassRawInfo));
            
@@ -135,7 +141,7 @@
            int bytealign = m_pGlassRawInfo->m_nSizeOfGlassData%4;
        }
        
    }
    //}
    
@@ -145,39 +151,45 @@
BOOL CDitGlassRawServer::CreateGlassRawData()
{
    int nGlassRawSharedSize = (int)(m_pGlassRawInfo->m_nGlassRawDataSize);
//
//     if(m_hMapGlassData == NULL)
//     {
//         BOOL bCreateMem = TRUE;
//
//         m_hMapGlassData = ::CreateFileMapping(INVALID_HANDLE_VALUE,NULL,PAGE_READWRITE
//             , 0, nGlassRawSharedSize, SHAREDMEMNAME_GLASSDATA);
//
//         if (::GetLastError() == ERROR_ALREADY_EXISTS)
//         {
//             m_hMapGlassData = ::OpenFileMapping(FILE_MAP_ALL_ACCESS,FALSE,SHAREDMEMNAME_GLASSDATA);
//             bCreateMem = FALSE;
//         }
//
//         if (m_hMapGlassData)
//         {
//             m_pGlassRawData = (char*)::MapViewOfFile(m_hMapGlassData, FILE_MAP_ALL_ACCESS, 0, 0, nGlassRawSharedSize);
//         }
//
//         if(m_hMapGlassData == NULL || m_pGlassRawData == NULL)
//         {
//             if (m_hMapGlassData != NULL)
//             {
//                 ::UnmapViewOfFile(m_hMapGlassData);
//                 m_pGlassRawData = NULL;
//             }
//             m_pGlassRawData = NULL;
//             return FALSE;
//         }
//
//         //0으로 초기화
//         if(bCreateMem && m_pGlassRawData) ZeroMemory(m_pGlassRawData,sizeof(char)*nGlassRawSharedSize);
//     }
    if(m_hMapGlassData == NULL)
    {
        BOOL bCreateMem = TRUE;
        m_hMapGlassData = ::CreateFileMapping(INVALID_HANDLE_VALUE,NULL,PAGE_READWRITE
            , 0, nGlassRawSharedSize, SHAREDMEMNAME_GLASSDATA);
        if (::GetLastError() == ERROR_ALREADY_EXISTS)
        {
            m_hMapGlassData = ::OpenFileMapping(FILE_MAP_ALL_ACCESS,FALSE,SHAREDMEMNAME_GLASSDATA);
            bCreateMem = FALSE;
        }
        if (m_hMapGlassData)
        {
            m_pGlassRawData = (char*)::MapViewOfFile(m_hMapGlassData, FILE_MAP_ALL_ACCESS, 0, 0, nGlassRawSharedSize);
        }
        if(m_hMapGlassData == NULL || m_pGlassRawData == NULL)
        {
            if (m_hMapGlassData != NULL)
            {
                ::UnmapViewOfFile(m_hMapGlassData);
                m_pGlassRawData = NULL;
            }
            m_pGlassRawData = NULL;
            return FALSE;
        }
        //0으로 초기화
        if(bCreateMem && m_pGlassRawData) ZeroMemory(m_pGlassRawData,sizeof(char)*nGlassRawSharedSize);
    }
    m_pGlassRawData = new char[nGlassRawSharedSize];
     if(m_pGlassRawData)
        ZeroMemory(m_pGlassRawData,sizeof(char)*nGlassRawSharedSize);
    
    m_pGlassData  = (_grmGlassData*)&m_pGlassRawData[m_pGlassRawInfo->m_nGlassDataPoint];
    m_pBlockData  = (_grmBlockData*)&m_pGlassRawData[m_pGlassRawInfo->m_nBlockDataPoint];
ReviewSystem/ReviewSystem/DlgDeffectHistroy.cpp
@@ -575,6 +575,10 @@
void CDlgDeffectHistroy::OnDblclkListHistoryDefect(NMHDR *pNMHDR, LRESULT *pResult)
{
    /*< LYW 20211005 - #3662 ADD Start >*/
    try
    {
    LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
    // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
    
@@ -593,6 +597,13 @@
    *pResult = 0;
}
    catch (...)
    {
        return;
    }
    /*< LYW 20211005 - #3662 ADD End >*/
}
void CDlgDeffectHistroy::OnSize(UINT nType, int cx, int cy)
{
ReviewSystem/ReviewSystem/DlgReviewHistoryTool.cpp
@@ -674,6 +674,9 @@
void CDlgReviewHistoryTool::OnDblclkList1()
{
    /*< LYW 20211005 - #3662 ADD Start >*/
    try
    {
    // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
    CString strSelect, strGlassID, strStepID, strStepTime;
    int nTemp, nTemp2;
@@ -701,6 +704,14 @@
    SetDefectImage(GetReviewName(), m_pHistoryTemp);
    GetHistoryList(); //한번 갱신 해주고 처리하자
    m_bHistory = true;
    }
    catch (...)
    {
        return;
    }
    /*< LYW 20211005 - #3662 ADD End >*/
}
@@ -828,6 +839,9 @@
void CDlgReviewHistoryTool::OnBnClickedUseDefect()
{
    /*< LYW 20211005 - #3662 ADD Start >*/
    try
    {
    // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
    BOOL bCheck = ((CButton*)GetDlgItem(IDC_USE_DEFECT))->GetCheck();
//     CGlassResult* pHistoryResult = m_pDDL2P->ISP2P_GetHistoryResult(0);
@@ -838,6 +852,12 @@
    m_pDlgDefectHistoryMap->UpdateProcessStatus(m_pHistoryTemp); //디펙 맵 표현
    m_pDlgDefectHistory->UpdateProcessStatus(m_pHistoryTemp);
}
    catch (...)
    {
        return;
    }
    /*< LYW 20211005 - #3662 ADD End >*/
}
void CDlgReviewHistoryTool::OnBnClickedImageRotation()
ReviewSystem/ReviewSystem/SequenceProcessor_CPJT.cpp
@@ -3400,6 +3400,8 @@
void CSequenceProcessor_CPJT::UpdateHistoryResultFromTransferData(CGlassResult *pHistoryResult, CGlassResult* pGlassResult)
{
    try
    {
    if (pHistoryResult == NULL || pGlassResult == NULL) return;
    CTime time = CTime::GetCurrentTime();
@@ -3462,6 +3464,13 @@
    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)
{