| EdgeInspector_App/EdgeInspector_App.rc | 补丁 | 查看 | 原始文档 | blame | 历史 | |
| EdgeInspector_App/EdgeInspector_App.vcxproj | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| EdgeInspector_App/EdgeInspector_App.vcxproj.filters | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| EdgeInspector_App/InterfaceManager.cpp | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| EdgeInspector_App/InterfaceManager.h | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| EdgeInspector_App/MainFrm.cpp | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| EdgeInspector_App/Recipe/HardwareSettings.cpp | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| EdgeInspector_App/Recipe/HardwareSettings.h | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| EdgeInspector_App/View/ViewMain_HWSetting.cpp | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| EdgeInspector_App/View/ViewMain_ScanImage.cpp | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| EdgeInspector_App/resource.h | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
EdgeInspector_App/EdgeInspector_App.rcBinary files differ
EdgeInspector_App/EdgeInspector_App.vcxproj
@@ -323,6 +323,7 @@ <ClInclude Include="Thread\PriorityThread.h" /> <ClInclude Include="Thread\Thread_CheckSeq.h" /> <ClInclude Include="Thread\Thread_ControlIF.h" /> <ClInclude Include="Thread\Thread_SaveFullImg.h" /> <ClInclude Include="Thread\Thread_Send.h" /> <ClInclude Include="Thread\Thread_ViewRefresh.h" /> <ClInclude Include="TriggerBoard\TriggerControl_Mvsol.h" /> @@ -407,6 +408,7 @@ <ClCompile Include="Thread\PriorityThread.cpp" /> <ClCompile Include="Thread\Thread_CheckSeq.cpp" /> <ClCompile Include="Thread\Thread_ControlIF.cpp" /> <ClCompile Include="Thread\Thread_SaveFullImg.cpp" /> <ClCompile Include="Thread\Thread_Send.cpp" /> <ClCompile Include="Thread\Thread_ViewRefresh.cpp" /> <ClCompile Include="TriggerBoard\TriggerControl_Mvsol.cpp" /> EdgeInspector_App/EdgeInspector_App.vcxproj.filters
@@ -579,6 +579,9 @@ <ClInclude Include="WebSocket\WebSocketClientPool.h"> <Filter>WebSocket</Filter> </ClInclude> <ClInclude Include="Thread\Thread_SaveFullImg.h"> <Filter>Thread</Filter> </ClInclude> </ItemGroup> <ItemGroup> <ClCompile Include="stdafx.cpp"> @@ -803,6 +806,9 @@ <ClCompile Include="WebSocket\WebSocketClientPool.cpp"> <Filter>WebSocket</Filter> </ClCompile> <ClCompile Include="Thread\Thread_SaveFullImg.cpp"> <Filter>Thread</Filter> </ClCompile> </ItemGroup> <ItemGroup> <ResourceCompile Include="EdgeInspector_App.rc"> EdgeInspector_App/InterfaceManager.cpp
@@ -46,6 +46,7 @@ m_pThread_SendMSG = NULL; m_pThread_CheckSequence = NULL; m_pThread_ViewRefresh = NULL; m_pSaveFullImgThread = NULL; m_nScanStartCount = 0; m_bGlassLoadingEnd = FALSE; m_pLicense = NULL; @@ -117,26 +118,29 @@ BOOL CInterfaceManager::DestroyThread() { if(m_pThread_SendMSG != NULL) { if(m_pThread_SendMSG != nullptr) { m_pThread_SendMSG->StopThread(); delete m_pThread_SendMSG; } m_pThread_SendMSG = NULL; m_pThread_SendMSG = nullptr; if(m_pThread_CheckSequence != NULL) { if(m_pThread_CheckSequence != nullptr) { m_pThread_CheckSequence->StopThread(); delete m_pThread_CheckSequence; } m_pThread_CheckSequence = NULL; m_pThread_CheckSequence = nullptr; if(m_pThread_ViewRefresh != NULL) { if(m_pThread_ViewRefresh != nullptr) { m_pThread_ViewRefresh->StopThread(); delete m_pThread_ViewRefresh; } m_pThread_ViewRefresh = NULL; m_pThread_ViewRefresh = nullptr; if (m_pSaveFullImgThread != nullptr) { m_pSaveFullImgThread->StopThread(); delete m_pSaveFullImgThread; } m_pSaveFullImgThread = nullptr; return TRUE; } @@ -488,13 +492,13 @@ BOOL CInterfaceManager::PostProcess() { g_pLog->DisplayMessage(_T("Start PostProcess()")); g_pLog->DisplayMessage(_T("Start PostProcess")); if(m_pThread_CheckSequence != NULL) if (m_pThread_CheckSequence != NULL) { m_pThread_CheckSequence->ClearMessage(); } if(m_GlassData.IsPostProcStart() == TRUE) { if(m_GlassData.IsPostProcStart() == TRUE) { g_pLog->DisplayMessage(_T("Already Post Processing Start")); return TRUE; } @@ -505,7 +509,6 @@ m_PostProcess.SetView((void*) m_pView); m_PostProcess.RunPostProcessing(); // 馆靛矫 Scan End 脚龋 焊郴扁 傈俊 秦拎具茄促... Scan End 脚龋 焊尘锭 Loading捞 肯丰 救登搁 救焊郴瘤霸 阜囚乐澜.. m_bGlassLoadingEnd = FALSE; m_bPLCGlassLoading = FALSE; @@ -522,34 +525,22 @@ SetSlashText(GLOBAL_DEFINE::emHide, _T(""), RGB(0, 0, 0)); if (m_pView != NULL) { if (m_pView != NULL) { m_pView->SetGlassData(&m_GlassData); m_pView->RefreshDefect(m_PostProcess.GetResultPath(EM_RESULT_DEFECT)); if (m_pThread_ViewRefresh != NULL) { if (m_pThread_ViewRefresh != NULL) { m_pThread_ViewRefresh->AddViewMSG(0, 0, VIEW_REFRESH_INSPECT_END, 0); } } //CheckExpireDay(); // Check License Defect.. WritePLCResult(); // Loading Ack // m_pControlInterface->SendControlBit(emSnd_Short_ScanEnd_Ack, TRUE); if (m_pThread_SendMSG != NULL) if (m_pThread_SendMSG != NULL) { m_pThread_SendMSG->AddSendMSG(SEND_MESSAGE_CONTROLSIGNAL, IToC_Ack_ShortScanEndSuccess, TRUE); } if (0 == nDefectCount) { AfxBeginThread(CopyImageThreadFunc, this); } else { Save_FullImg(); } Save_FullImg(); #if MINI_LED m_PostProcess.RunPostProcessing_SaveFiltImage(); @@ -571,7 +562,7 @@ { CInterfaceManager *pMain = static_cast<CInterfaceManager*>(pParam); pMain->Save_FullImg(); pMain->Save_FullImg(); return 0; } @@ -615,9 +606,43 @@ g_pLog->DisplayMessage(_T("Sava %s iCam=%d, iScan=%d, szImage.cx=%ld, pBuffer->szImage.cy=%ld"), PANEL_SIDE[pCamera->m_eDimension], iCam, iScan, pBuffer->szImage.cx, pBuffer->szImage.cy); if (pBuffer->pImage != NULL && pBuffer->szImage.cx > 100 && pBuffer->szImage.cy > 100) { if (m_pSaveFullImgThread != nullptr && pBuffer->pImage != nullptr && pBuffer->szImage.cx > 100 && pBuffer->szImage.cy > 100) { strFileJpg.Format(_T("%s\\%s_%s_%s.jpg"), strFolder, strPanelID, PANEL_SIDE[pCamera->m_eDimension], g_pBase->m_strLoadingTime); SaveFullImageModern(strFileJpg, pBuffer->pImage, pBuffer->szImage.cx, pBuffer->szImage.cy, (int)pCamera->m_eDimension, 0, nQuality); if (pHard->m_bAsyncFullSave) { CT2A aPath(strFileJpg); SaveImgJob job; job.strPath = std::string(aPath); job.nWidth = (int)pBuffer->szImage.cx; job.nHeight = (int)pBuffer->szImage.cy; job.nBpp = 1; job.nStride = job.nWidth * job.nBpp; job.nStartY = 0; job.nDimension = (int)pCamera->m_eDimension; job.nQuality = nQuality; // 深拷贝 DWORD dwCopyStart = GetTickCount(); Lock(); size_t nBytes = size_t(job.nStride) * job.nHeight; job.vData.resize(nBytes); memcpy(job.vData.data(), pBuffer->pImage, nBytes); Unlock(); DWORD dwCopyEnd = GetTickCount(); g_pLog->DisplayMessage(_T("Full Image Copy Time = %d ms, Bytes=%zu, File=%s"), dwCopyEnd - dwCopyStart, nBytes, strFileJpg); // 入队 m_pSaveFullImgThread->Enqueue(std::move(job)); g_pLog->DisplayMessage(_T("Full Image Save : %s, Width=%d, Height=%d, Dimension=%s, Quality=%d"), strFileJpg, pBuffer->szImage.cx, pBuffer->szImage.cy, PANEL_SIDE[pCamera->m_eDimension], nQuality); } else { DWORD dwCopyStart = GetTickCount(); Lock(); SaveFullImageModern(strFileJpg, pBuffer->pImage, pBuffer->szImage.cx, pBuffer->szImage.cy, (int)pCamera->m_eDimension, 0, nQuality); Unlock(); DWORD dwCopyEnd = GetTickCount(); g_pLog->DisplayMessage(_T("Full Image Save Time = %d ms, File=%s"), dwCopyEnd - dwCopyStart, strFileJpg); } } } } @@ -1784,42 +1809,27 @@ void CInterfaceManager::CreateThread() { m_pThread_SendMSG = new CThread_SendMSG(); if(m_pThread_SendMSG != NULL) { if(m_pThread_SendMSG != NULL) { m_pThread_SendMSG->SetIN2P(static_cast<IPLCSendInterface2Parent*>(this)); m_pThread_SendMSG->CreateThread(); } m_pThread_CheckSequence = new CThread_CheckSequence(); if(m_pThread_CheckSequence != NULL) { if(m_pThread_CheckSequence != NULL) { m_pThread_CheckSequence->SetC2M(static_cast<ICheckSequenceInterface2Parent*>(this),&m_GlassData); m_pThread_CheckSequence->CreateThread(); } m_pThread_ViewRefresh = new CThread_ViewRefresh(); if(m_pThread_ViewRefresh != NULL) { if(m_pThread_ViewRefresh != NULL) { m_pThread_ViewRefresh->SetIN2P(static_cast<IViewRefreshInterface2Parent*>(this)); m_pThread_ViewRefresh->CreateThread(); } /* m_pThread_NetMSG = new CThread_NetMSG(); if(m_pThread_NetMSG != NULL) { m_pThread_NetMSG->SetIN2P(static_cast<IPLCReceiveInterface2Parent*>(this)); m_pThread_NetMSG->CreateThread(); m_pSaveFullImgThread = new CThread_SaveFullImg(); if (m_pSaveFullImgThread != NULL) { m_pSaveFullImgThread->CreateThread(); } m_pThread_Light = new CThread_Light(); if(m_pThread_Light != NULL) { m_pThread_Light->CreateThread(); } */ } LPBYTE CInterfaceManager::GetGrabBuffer(DimensionDir eDir,int iVline) EdgeInspector_App/InterfaceManager.h
@@ -18,6 +18,7 @@ #include "LanguageControl.h" #include "LicenseChecker.h" #include "TriggerControl_Mvsol.h" #include "Thread_SaveFullImg.h" #if USE_WEBSOCKET #include "WebSocketClientPool.h" @@ -161,6 +162,7 @@ CThread_SendMSG* m_pThread_SendMSG; CThread_CheckSequence* m_pThread_CheckSequence; CThread_ViewRefresh* m_pThread_ViewRefresh; CThread_SaveFullImg* m_pSaveFullImgThread; CPostProcess m_PostProcess; CCriticalSection m_csScanStart; int m_nScanStartCount; EdgeInspector_App/MainFrm.cpp
@@ -433,97 +433,41 @@ std::vector<DimensionDir> vecDirs = { DIMENSION_A_RIP, DIMENSION_B_RIP, DIMENSION_C_RIP, DIMENSION_D_RIP }; pMain->Simulate2PhaseScanByDirs(vecDirs, 1000); pMain->Simulate2PhaseScanByDirs(vecDirs, 3000); } break; case PROC_MODE_SIMULATION_SIDESHORT: { //pMain->m_GlassData.SetScanStartCount(MAX_CAMERA_COUNT); //pMain->SendGlassRecipe(); //for(iCam=0;iCam<MAX_CAMERA_COUNT;iCam++) //{ // pMain->ScanStartGrabManual(iCam,0); // pMain->ScanStartManual(iCam,0); //} std::vector<DimensionDir> vecDirs = { DIMENSION_B, DIMENSION_D, DIMENSION_B_DN, DIMENSION_D_DN }; pMain->Simulate2PhaseScanByDirs(vecDirs, 1000); pMain->Simulate2PhaseScanByDirs(vecDirs, 3000); } break; case PROC_MODE_SIMULATION_SIDELONG: { //pMain->m_GlassData.SetScanStartCount(MAX_CAMERA_COUNT); //pMain->SendGlassRecipe(); //for(iCam=0;iCam<MAX_CAMERA_COUNT;iCam++) //{ // pMain->ScanStartGrabManual(iCam,1); // pMain->ScanStartManual(iCam,1); //} std::vector<DimensionDir> vecDirs = { DIMENSION_A, DIMENSION_C, DIMENSION_A_DN, DIMENSION_C_DN }; pMain->Simulate2PhaseScanByDirs(vecDirs, 1000); pMain->Simulate2PhaseScanByDirs(vecDirs, 3000); } break; case PROC_MODE_SIMULATION_ALL: { //g_pLog->DisplayMessage(_T("Simulation Full ")); //pMain->m_GlassData.SetScanStartCount(MAX_DIMENSION_COUNT); //pMain->SendGlassRecipe(); //for(iCam=0;iCam<MAX_CAMERA_COUNT;iCam++) //{ // pMain->ScanStartGrabManual(iCam,0); // pMain->ScanStartGrabManual(iCam,1); //} //if(pMain->m_pThread_CheckSequence != NULL) //{ // double dOneScanTime = pMain->m_GlassRecipe.m_RecieParm.m_dOneScanTime_sec; // // pMain->m_pThread_CheckSequence->AddCheckSeqMSG(CHECKSEQ_GLASS_INSPECTION_OVERTIME,(int)(dOneScanTime* 1000.),pMain->m_HardwareRecipe.GetScanCount()-1); // g_pLog->DisplayMessage(_T("Simulation Time Out Set : %.1f"),dOneScanTime); //} //for(iCam=0;iCam<MAX_CAMERA_COUNT;iCam++) //{ // pMain->ScanStartManual(iCam,0); //} //DWORD sTime = GetTickCount(); //while(TRUE) //{ // if(pMain->m_GlassData.GetScanEnd(0) == TRUE) // break; // if(GetTickCount() - sTime >= 5000) // break; // // Sleep(10); //} //for(iCam=0;iCam<MAX_CAMERA_COUNT;iCam++) //{ // pMain->ScanStartManual(iCam,1); //} if (pMain->m_HardwareRecipe.m_bUseRipInspection) { std::vector<DimensionDir> vecDirs = { DIMENSION_A, DIMENSION_C, DIMENSION_A_DN, DIMENSION_C_DN, DIMENSION_B, DIMENSION_D, DIMENSION_B_DN, DIMENSION_D_DN, DIMENSION_A_RIP, DIMENSION_B_RIP, DIMENSION_C_RIP, DIMENSION_D_RIP }; pMain->Simulate2PhaseScanByDirs(vecDirs, 1000); pMain->Simulate2PhaseScanByDirs(vecDirs, 3000); } else { std::vector<DimensionDir> vecDirs = { DIMENSION_A, DIMENSION_C, DIMENSION_A_DN, DIMENSION_C_DN, DIMENSION_B, DIMENSION_D, DIMENSION_B_DN, DIMENSION_D_DN }; pMain->Simulate2PhaseScanByDirs(vecDirs, 1000); pMain->Simulate2PhaseScanByDirs(vecDirs, 3000); } } break; EdgeInspector_App/Recipe/HardwareSettings.cpp
@@ -991,7 +991,7 @@ { if(this != &rhs) { int iLoop; int iLoop; Reset(); m_nLightCount_Trans = rhs.m_nLightCount_Trans; @@ -1009,10 +1009,12 @@ m_strMachineName = rhs.m_strMachineName; m_strLineID = rhs.m_strLineID; m_nPLCSignalRetry = rhs.m_nPLCSignalRetry; m_nSaveImageQuality = rhs.m_nSaveImageQuality; m_nPLCSignalRetry = rhs.m_nPLCSignalRetry; // m_dOneScanTime = rhs.m_dOneScanTime; m_nSaveImageQuality = rhs.m_nSaveImageQuality; m_bAsyncFullSave = rhs.m_bAsyncFullSave; // m_dOneScanTime = rhs.m_dOneScanTime; m_nFolderRemoveDay = rhs.m_nFolderRemoveDay; m_PLCSettings = rhs.m_PLCSettings; @@ -1050,7 +1052,7 @@ void CHardwareSettings::Reset() { // m_dOneScanTime = 0.; // m_dOneScanTime = 0.; m_nLightCount_Trans = 0; m_nLightCount_Reflect = 0; m_nCameraCount = 0; @@ -1058,6 +1060,7 @@ m_nFolderRemoveDay = 0; m_nPLCSignalRetry = 0; m_nSaveImageQuality = 30; m_bAsyncFullSave = FALSE; m_strMachineName = _T(""); m_strLineID = _T(""); m_nBoardType = GRAB_LINK_BOARD; @@ -1280,6 +1283,8 @@ str = _T("SAVE_DEBUG_IMAGE"); else if((void *)&m_nSaveImageQuality == pValue) str = _T("SAVEIMAGE_QUALITY"); else if ((void*)&m_bAsyncFullSave == pValue) str = _T("ASYNC_FULL_SAVE"); // ly,2025.07.10 else if ((void*)&m_bSaveResultByHour == pValue) @@ -1381,6 +1386,10 @@ return FALSE; BasicInfoFile.GetItemValue((TCHAR*)(LPCTSTR)str,m_nSaveImageQuality,30); str = GetFileString((void*)&m_bAsyncFullSave); if (str.IsEmpty() == TRUE) return FALSE; BasicInfoFile.GetItemValue((TCHAR*)(LPCTSTR)str, m_bAsyncFullSave, FALSE); SetCameraCount(m_nCameraCount,m_nScanCount); iLoop = 0; @@ -1567,7 +1576,12 @@ str = GetFileString((void *)&m_nSaveImageQuality); if(str.IsEmpty() == TRUE) return FALSE; Register.GetItemValue((TCHAR*)(LPCTSTR)str,m_nSaveImageQuality,30); Register.GetItemValue((TCHAR*)(LPCTSTR)str,m_nSaveImageQuality,30); str = GetFileString((void*)&m_bAsyncFullSave); if (str.IsEmpty() == TRUE) return FALSE; Register.GetItemValue((TCHAR*)(LPCTSTR)str, m_bAsyncFullSave, FALSE); SetCameraCount(m_nCameraCount,m_nScanCount); iLoop = 0; @@ -1737,6 +1751,11 @@ if(str.IsEmpty() == TRUE) return FALSE; Register.SetItemValue((TCHAR*)(LPCTSTR)str,m_nSaveImageQuality); str = GetFileString((void*)&m_bAsyncFullSave); if (str.IsEmpty() == TRUE) return FALSE; Register.SetItemValue((TCHAR*)(LPCTSTR)str, m_bAsyncFullSave); if(m_pCameraSettings != NULL) { @@ -1926,7 +1945,13 @@ if (str.IsEmpty() == TRUE) { return FALSE; } BasicInfoFile.SetItemValue((TCHAR*)(LPCTSTR)str,m_nSaveImageQuality); BasicInfoFile.SetItemValue((TCHAR*)(LPCTSTR)str,m_nSaveImageQuality); str = GetFileString((void*)&m_bAsyncFullSave); if (str.IsEmpty() == TRUE) { return FALSE; } BasicInfoFile.SetItemValue((TCHAR*)(LPCTSTR)str, m_bAsyncFullSave); if (m_pCameraSettings != NULL) { iLoop = 0; EdgeInspector_App/Recipe/HardwareSettings.h
@@ -185,6 +185,7 @@ int m_nFolderRemoveDay; BOOL m_bUseColorVisual; int m_nSaveImageQuality; BOOL m_bAsyncFullSave; // Software public: EdgeInspector_App/View/ViewMain_HWSetting.cpp
@@ -65,7 +65,8 @@ DDX_Check(pDX,IDC_CHK_INS_REVERSE,m_pDlgHDSettingParm->m_bInsDirReverse); DDX_Text(pDX, IDC_EDIT_PLC_SIGNAL_RETRY_COUNT, m_pDlgHDSettingParm->m_nPLCSignalRetry); DDX_Text(pDX, IDC_EDIT_SAVEIMAGE_QUALITY, m_pDlgHDSettingParm->m_nSaveImageQuality); DDX_Text(pDX, IDC_EDIT_SAVEIMAGE_QUALITY, m_pDlgHDSettingParm->m_nSaveImageQuality); DDX_Check(pDX, IDC_CHECK_USE_ASYNC_FULL_IMAGE_SAVE, m_pDlgHDSettingParm->m_bAsyncFullSave); DDX_Text(pDX,IDC_EDIT_FOLDER_REMOVE_DAY,m_pDlgHDSettingParm->m_nFolderRemoveDay); EdgeInspector_App/View/ViewMain_ScanImage.cpp
@@ -949,7 +949,7 @@ BOOL CViewMain_ScanImage::ManualThreadStart(int nCmd,int nIndex /*= -1*/) { if(m_pManualProcess) { DWORD dwWait = ::WaitForSingleObject(m_pManualProcess->m_hThread, 1000); DWORD dwWait = ::WaitForSingleObject(m_pManualProcess->m_hThread, 3000); if (dwWait == WAIT_TIMEOUT) { DWORD dwExitCode; if ((::GetExitCodeThread(m_pManualProcess->m_hThread, &dwExitCode)) && (dwExitCode == STILL_ACTIVE)) { EdgeInspector_App/resource.h
@@ -363,6 +363,7 @@ #define IDC_CHK_USECOLORVISUAL 1072 #define IDC_STATIC_SUBJECT 1072 #define IDC_SCROLLBAR_V_9 1072 #define IDC_CHECK_USE_ASYNC_FULL_IMAGE_SAVE 1073 #define IDC_UPDN_WIDTH1 1074 #define IDC_BTN_PROC 1075 #define IDC_SLIDER_ZOOM 1076