优化:显示在流程中解锁,并且把文件字符集统一替换成UTF-8(BOM)
| | |
| | | #ifndef BL_COMMON_H |
| | | #ifndef BL_COMMON_H |
| | | #define BL_COMMON_H |
| | | |
| | | #include <windows.h> |
| | |
| | | #include "StdAfx.h" |
| | | #include "StdAfx.h" |
| | | #include "DefectStorage.h" |
| | | #include "SISBuffer.h" |
| | | #include "BlobStorage.h" |
| | |
| | | delete[] m_pDefect; |
| | | } |
| | | |
| | | // 16ä¿ºç¼ å¯çé æä¿..æ? é´å¹².. |
| | | // 16ä¿ºç¼ å¯çé æä¿..æ? é´å¹².. |
| | | int DefectSapce= maxDefect+ 16; |
| | | m_pDefect= new CDefect[DefectSapce]; |
| | | |
| | |
| | | #pragma once |
| | | #pragma once |
| | | |
| | | |
| | | #include "AssemDefect.h" |
| | |
| | | |
| | | class CDefectControl : public CDefectStorage |
| | | { |
| | | public:// Defect åä»·ä½ ç å. |
| | | public:// Defect åä»·ä½ ç å. |
| | | CDefectControl(); |
| | | virtual ~CDefectControl(); |
| | | |
| | |
| | | // Glass.cpp: implementation of the CGlass class. |
| | | // Glass.cpp: implementation of the CGlass class. |
| | | // |
| | | ////////////////////////////////////////////////////////////////////// |
| | | |
| | |
| | | arrString.clear(); |
| | | |
| | | CString strData = strDataInput; |
| | | strData.Trim(); //??3y??óD????μ??é?? |
| | | strData.Trim(); //??3y??óD????μ??é?? |
| | | if (strData.IsEmpty()) { |
| | | return TRUE; |
| | | } |
| | | if (-1 == strData.Find(strSign)) { //2?°üo?·???·? |
| | | if (-1 == strData.Find(strSign)) { //2?°üo?·???·? |
| | | arrString.push_back(strData); |
| | | return TRUE; |
| | | } |
| | | while (0 == strData.Find(strSign)) { //?-?·é?3yê�?é?μ?·???·? |
| | | while (0 == strData.Find(strSign)) { //?-?·é?3yê�?é?μ?·???·? |
| | | strData.Delete(0, strSign.GetLength()); |
| | | } |
| | | strData += strSign; |
| | |
| | | #pragma once |
| | | #pragma once |
| | | |
| | | #include <vector> |
| | | #include "Global_Define.h" |
| | |
| | | BOOL m_bInspectComplete; |
| | | BOOL m_bJudgeNG; // TRUE : NG, FALSE : OK |
| | | // Defect |
| | | MapDefect m_MapDefect_NG; // æ¬çªæ²¥ç (NG) |
| | | MapDefect m_MapDefect_OK; // æ¬çªæ²¥ç (OK) |
| | | MapDefect m_MapDefect_NG; // æ¬çªæ²¥ç (NG) |
| | | MapDefect m_MapDefect_OK; // æ¬çªæ²¥ç (OK) |
| | | |
| | | int m_nCurDefectIdx_Total; |
| | | int m_nCurDefectIdx_NG; |
| | |
| | | CString m_strLoadingTimeFileName; |
| | | CString m_strLoadingDayFileName; |
| | | |
| | | // Stage theta çæ²¥ |
| | | // Stage theta çæ²¥ |
| | | short m_nStageLongTheta[2]; |
| | | short m_nStageShortTheta[2]; |
| | | |
| | |
| | | #pragma once |
| | | #pragma once |
| | | |
| | | #include "Global_Define.h" |
| | | |
| | |
| | | #include "StdAfx.h" |
| | | #include "StdAfx.h" |
| | | #include "PostProcess.h" |
| | | #include "Config.h" |
| | | #include "FreeImage.h" |
| | |
| | | if (glass_id.IsEmpty() == TRUE) |
| | | glass_id.Format(_T("MANUAL_ID")); |
| | | |
| | | // è·åå½å产åå è½½æ¶é´ |
| | | // è·åå½å产åå è½½æ¶é´ |
| | | CTime tGlassLoading = m_pGlassData->GetLoadingTime(); |
| | | |
| | | CString measure_data; |
| | |
| | | |
| | | CString measure_file_path; |
| | | if (m_pHardware->m_bSaveResultByHour) { |
| | | // æå°æ¶ä¿åç»æ |
| | | // æå°æ¶ä¿åç»æ |
| | | measure_file_path.Format(_T("%s\\%s_%02d_MeasureData.csv"), m_strResultFolder, g_pBase->m_strLoadingDay, tGlassLoading.GetHour()); |
| | | } |
| | | else { |
| | | // 䏿尿¶ä¿åç»æ |
| | | // 䏿尿¶ä¿åç»æ |
| | | measure_file_path.Format(_T("%s\\%s_MeasureData.csv"), m_strResultFolder, g_pBase->m_strLoadingDay); |
| | | } |
| | | |
| | |
| | | CString strDefectType = g_strDefectType[pDefect->m_DefectInfo.m_DefectLoc]; |
| | | if ((strDefectType.Compare(_T("Chip")) == 0 || strDefectType.Compare(_T("In_Chip")) == 0)) |
| | | { |
| | | // è·åå½åæ¶é´ |
| | | // è·åå½åæ¶é´ |
| | | std::time_t now = std::time(nullptr); |
| | | // 使ç¨localtime_s代æ¿localtime |
| | | // 使ç¨localtime_s代æ¿localtime |
| | | std::tm nowTm; |
| | | localtime_s(&nowTm, &now); |
| | | |
| | |
| | | |
| | | if ((strDefectType.Compare(_T("Chip")) == 0 || strDefectType.Compare(_T("In_Chip")) == 0)) |
| | | { |
| | | // è·åå½åæ¶é´ |
| | | // è·åå½åæ¶é´ |
| | | std::time_t now = std::time(nullptr); |
| | | // 使ç¨localtime_s代æ¿localtime |
| | | // 使ç¨localtime_s代æ¿localtime |
| | | std::tm nowTm; |
| | | localtime_s(&nowTm, &now); |
| | | |
| | |
| | | |
| | | CString Chip_file_path; |
| | | if (m_pHardware->m_bSaveResultByHour) { |
| | | // æå°æ¶ä¿åç»æ |
| | | // æå°æ¶ä¿åç»æ |
| | | Chip_file_path.Format(_T("%s\\%s_%02d_ChipData.csv"), m_strResultFolder, g_pBase->m_strLoadingDay, tGlassLoading.GetHour()); |
| | | } |
| | | else { |
| | | // 䏿尿¶ä¿åç»æ |
| | | // 䏿尿¶ä¿åç»æ |
| | | Chip_file_path.Format(_T("%s\\%s_ChipData.csv"), m_strResultFolder, g_pBase->m_strLoadingDay); |
| | | } |
| | | |
| | |
| | | |
| | | CString Defect_file_path; |
| | | if (m_pHardware->m_bSaveResultByHour) { |
| | | // æå°æ¶ä¿åç»æ |
| | | // æå°æ¶ä¿åç»æ |
| | | Defect_file_path.Format(_T("%s\\%s_%02d_DefectData.csv"), m_strResultFolder, g_pBase->m_strLoadingDay, tGlassLoading.GetHour()); |
| | | } |
| | | else { |
| | | // 䏿尿¶ä¿åç»æ |
| | | // 䏿尿¶ä¿åç»æ |
| | | Defect_file_path.Format(_T("%s\\%s_DefectData.csv"), m_strResultFolder, g_pBase->m_strLoadingDay); |
| | | } |
| | | |
| | |
| | | BOOL bSuccess = TRUE; |
| | | |
| | | Lock(); |
| | | // æ é¢ææ¬ |
| | | // æ é¢ææ¬ |
| | | CString strTitle; |
| | | int nSideIdx = (0 <= pDefect->m_DefectInfo.m_nSideIdx && pDefect->m_DefectInfo.m_nSideIdx < MAX_SIDE_COUNT) ? pDefect->m_DefectInfo.m_nSideIdx : MAX_SIDE_COUNT; |
| | | int nCategoryIdx = (0 <= pDefect->m_DefectInfo.m_DefectLoc && pDefect->m_DefectInfo.m_DefectLoc < DefectLoc_None) ? pDefect->m_DefectInfo.m_DefectLoc : DefectLoc_Unknown; |
| | |
| | | // 3. Corner |
| | | |
| | | |
| | | // A æä½ å®è¹¿ |
| | | // A æä½ å®è¹¿ |
| | | vecStrTitle.push_back(_T("CORNER_1_X")); |
| | | strTemp.Format(_T("%d"), m_pGlassData->GetSideData(DIMENSION_A)->m_nBottomCornerWidth); |
| | | vecStrResultData.push_back(strTemp); |
| | |
| | | strTemp.Format(_T("%d"), m_pGlassData->GetSideData(DIMENSION_A)->m_nBottomCornerHeight); |
| | | vecStrResultData.push_back(strTemp); |
| | | |
| | | // C æä½ å®è¹¿ |
| | | // C æä½ å®è¹¿ |
| | | vecStrTitle.push_back(_T("CORNER_2_X")); |
| | | strTemp.Format(_T("%d"), m_pGlassData->GetSideData(DIMENSION_C)->m_nBottomCornerWidth); |
| | | vecStrResultData.push_back(strTemp); |
| | |
| | | strTemp.Format(_T("%d"), m_pGlassData->GetSideData(DIMENSION_C)->m_nBottomCornerHeight); |
| | | vecStrResultData.push_back(strTemp); |
| | | |
| | | // C æä½ åª |
| | | // C æä½ åª |
| | | vecStrTitle.push_back(_T("CORNER_3_X")); |
| | | strTemp.Format(_T("%d"), m_pGlassData->GetSideData(DIMENSION_C)->m_nTopCornerWidth); |
| | | vecStrResultData.push_back(strTemp); |
| | |
| | | strTemp.Format(_T("%d"), m_pGlassData->GetSideData(DIMENSION_C)->m_nTopCornerHeight); |
| | | vecStrResultData.push_back(strTemp); |
| | | |
| | | // A æä½ åª |
| | | // A æä½ åª |
| | | vecStrTitle.push_back(_T("CORNER_4_X")); |
| | | strTemp.Format(_T("%d"), m_pGlassData->GetSideData(DIMENSION_A)->m_nTopCornerWidth); |
| | | vecStrResultData.push_back(strTemp); |
| | |
| | | CSide_Data* pSideData_UP = NULL; |
| | | CSide_Data* pSideData_DN = NULL; |
| | | |
| | | // Notchä¹ç»° æ è«æ |
| | | // Notchä¹ç»° æ è«æ |
| | | for(int nSideIdx=0; nSideIdx<MAX_PANEL_SIDE; nSideIdx++) |
| | | { |
| | | pSideData_UP = m_pGlassData->GetSideData(arryWriteOrder_UP[nSideIdx]); |
| | |
| | | |
| | | for(int nNotchIdx=0; nNotchIdx<MAX_SIDE_NOTCH_COUNT; nNotchIdx++) |
| | | { |
| | | // 4-2. Dimension, é
éææ èº èæ²¥ |
| | | // 4-2. Dimension, é
éææ èº èæ²¥ |
| | | for(int nMeasureIdx = 0; nMeasureIdx < MAX_SIDE_NOTCH_MEASURE_COUNT; nMeasureIdx++) |
| | | { |
| | | strTemp.Format(_T("NOTCH_%d_DIM_%d"), nNotchIdx+1, nMeasureIdx+1); |
| | |
| | | // Save Path |
| | | CString strFilePath; |
| | | if (m_pHardware->m_bSaveResultByHour) { |
| | | // æå°æ¶ä¿åï¼ç»å®ç»ç Loading Time |
| | | // æå°æ¶ä¿åï¼ç»å®ç»ç Loading Time |
| | | strFilePath.Format(_T("D:\\Data\\%s\\%s\\%d\\%02d\\%02d\\%s_%s_%02d.csv"), |
| | | m_pHardware->GetMachineName(), |
| | | m_pHardware->GetLineID(), |
| | |
| | | tLoadingTime.GetHour()); |
| | | } |
| | | else { |
| | | // æå¤©ä¿åï¼ç»å®ç»ç Loading Time |
| | | // æå¤©ä¿åï¼ç»å®ç»ç Loading Time |
| | | strFilePath.Format(_T("D:\\Data\\%s\\%s\\%d\\%02d\\%02d\\%s_%s.csv"), |
| | | m_pHardware->GetMachineName(), |
| | | m_pHardware->GetLineID(), |
| | |
| | | |
| | | /* |
| | | pDefect->m_nUMOriginX = (int)((double) (pDefect->m_DefectInfo.m_ptDefectPos_pxl.y - nStartLine) * dScanRes); |
| | | pDefect->m_nUMOriginY = (int)((double) (pDefect->m_DefectInfo.m_ptDefectPos_pxl.x * dConvRes)); // èæ²¥ é夸.. |
| | | pDefect->m_nUMOriginY = (int)((double) (pDefect->m_DefectInfo.m_ptDefectPos_pxl.x * dConvRes)); // èæ²¥ é夸.. |
| | | */ |
| | | |
| | | CSIDE_PARM* pSideParam = &pRecipe->m_SideParam[pDefect->m_DefectInfo.m_nSideIdx]; |
| | |
| | | TCHAR szTemp[MAX_PATH]; |
| | | |
| | | wcscpy_s(szTemp, MAX_PATH, strFolder); |
| | | szTemp[strFolder.GetLength() + 1] = NULL; // NULLå·©ç£å 滴俺 ç¸ç»¢åå
· èä¿. |
| | | szTemp[strFolder.GetLength() + 1] = NULL; // NULLå·©ç£å 滴俺 ç¸ç»¢åå
· èä¿. |
| | | |
| | | FileOp.hwnd = NULL; |
| | | FileOp.wFunc = FO_DELETE; |
| | | FileOp.pFrom = NULL; |
| | | FileOp.pTo = NULL; |
| | | FileOp.fFlags = FOF_NOCONFIRMATION | FOF_NOERRORUI; // ç¬ç¢çç«ç¤å æåæ¡£åº æ±²æ²¥ |
| | | FileOp.fFlags = FOF_NOCONFIRMATION | FOF_NOERRORUI; // ç¬ç¢çç«ç¤å æåæ¡£åº æ±²æ²¥ |
| | | FileOp.fAnyOperationsAborted = false; |
| | | FileOp.hNameMappings = NULL; |
| | | FileOp.lpszProgressTitle = NULL; |
| | |
| | | #pragma once |
| | | #pragma once |
| | | |
| | | #include "Global_Define.h" |
| | | #include "HardwareSettings.h" |
| | |
| | | BOOL DeleteFolder(const CString &strFolder); |
| | | |
| | | private: |
| | | CRITICAL_SECTION m_criticalSection; //?¥3aá? |
| | | CRITICAL_SECTION m_criticalSection; //?¥3aá? |
| | | inline void Lock() { ::InitializeCriticalSection(&m_criticalSection); } |
| | | inline void Unlock() { ::DeleteCriticalSection(&m_criticalSection); } |
| | | |
| | |
| | | // StopWatch.cpp: implementation of the CStopWatch class. |
| | | // StopWatch.cpp: implementation of the CStopWatch class. |
| | | // |
| | | ////////////////////////////////////////////////////////////////////// |
| | | #include "stdafx.h" |
| | |
| | | // StopWatch.h: interface for the CStopWatch class. |
| | | // StopWatch.h: interface for the CStopWatch class. |
| | | // |
| | | ////////////////////////////////////////////////////////////////////// |
| | | |
| | |
| | | #include "StdAfx.h" |
| | | #include "StdAfx.h" |
| | | #include "TransDataManager.h" |
| | | #include <fstream> |
| | | #include <iostream> |
| | |
| | | EnumPackType ePackType = eAscii; |
| | | CString tmpItemByte; |
| | | |
| | | char LineStr[200]; //è 临çªå° ä½¬ç»¢ç¸æç»° æ»æ¬º |
| | | char *tmpStr; //çªå°èº è°ç¯® åæç£ç« ååºèç»° å¨ç¢ç£ |
| | | char LineStr[200]; //è 临çªå° ä½¬ç»¢ç¸æç»° æ»æ¬º |
| | | char *tmpStr; //çªå°èº è°ç¯® åæç£ç« ååºèç»° å¨ç¢ç£ |
| | | char *strType; |
| | | char seps[]=" ,\t\n"; //å¤çç£ |
| | | char seps[]=" ,\t\n"; //å¤çç£ |
| | | |
| | | std::ifstream input; |
| | | input.open(FilePath, std::ios::in /*| std::ios::nocreate*/); |
| | |
| | | int KeyValue = 0; |
| | | if (Key == -1) |
| | | { |
| | | KeyValue = (int)m_TransDataPackMap.size(); //ç¶è è¡è èè¼é æç¤ è¼æ æ æªæ¶é´æ èº é´çå©ç¢ ç¢é¸è¶ è¼æ èè¼æ å³ |
| | | KeyValue = (int)m_TransDataPackMap.size(); //ç¶è è¡è èè¼é æç¤ è¼æ æ æªæ¶é´æ èº é´çå©ç¢ ç¢é¸è¶ è¼æ èè¼æ å³ |
| | | } |
| | | else KeyValue = Key; |
| | | |
| | |
| | | |
| | | int k = Fstr.GetLength(); |
| | | |
| | | //åå½é ç»ç©ä¿ |
| | | //åå½é ç»ç©ä¿ |
| | | for(i=0;i<Fstr.GetLength();i++) |
| | | { |
| | | if(Fstr.Mid(i,1) != " ") |
| | |
| | | } |
| | | |
| | | k = returnValue.GetLength(); |
| | | //é
å
¬ç¹ dataæ¡£ ç»æ æ "*" è´¸åºèä¿ |
| | | //é
å
¬ç¹ dataæ¡£ ç»æ æ "*" è´¸åºèä¿ |
| | | if(returnValue.GetLength() == 0) |
| | | returnValue.Format("*"); |
| | | else if(returnValue.Mid(0,1) == "") |
| | |
| | | #pragma once |
| | | #pragma once |
| | | |
| | | |
| | | #include <map> |
| | |
| | | eAscii = 0, |
| | | eUnsignedDec |
| | | }; |
| | | class CTransDataPack //æ±å¹
æ²¥ç class. |
| | | class CTransDataPack //æ±å¹
æ²¥ç class. |
| | | { |
| | | protected: |
| | | int m_nIndex; |
| | |
| | | } |
| | | } |
| | | |
| | | int GetIndex() {return m_nIndex;}; //æ±å¹
æ²¥çç¼ é´è¾ |
| | | int GetByte() {return m_nByte;}; //æ±å¹
æ²¥çç¼ è¾¨æ. |
| | | int GetIndex() {return m_nIndex;}; //æ±å¹
æ²¥çç¼ é´è¾ |
| | | int GetByte() {return m_nByte;}; //æ±å¹
æ²¥çç¼ è¾¨æ. |
| | | EnumPackType GetPackType() {return m_ePackType;} |
| | | char* GetValue() {return m_pstrData;}; //æ±å¹
æ²¥çç¼ è¼ |
| | | char* GetValue() {return m_pstrData;}; //æ±å¹
æ²¥çç¼ è¼ |
| | | |
| | | void SetValue(char* pstrData) |
| | | { |
| | |
| | | virtual ~CTransDataManager(); |
| | | CTransDataManager& operator=(const CTransDataManager& rhs); |
| | | |
| | | // æª¬ææ³ |
| | | // æª¬ææ³ |
| | | void ResetPackData(); |
| | | |
| | | // 16æ³è -> 10æ³è(int) |
| | | // 16æ³è -> 10æ³è(int) |
| | | int Hex2Dec(CString hex_str); |
| | | // 16æ³è -> ä½é¾ç»ç»° 10æ³è(short) |
| | | // 16æ³è -> ä½é¾ç»ç»° 10æ³è(short) |
| | | short Hex2SignedDec(CString hex_str); |
| | | // é
è¶è -> 16æ³è å·©ç£å¯ |
| | | // é
è¶è -> 16æ³è å·©ç£å¯ |
| | | CString Asc2Hex(CStringA hex_str); |
| | | // è¶é£å
-> 16æ³è |
| | | // è¶é£å
-> 16æ³è |
| | | BOOL StrToHex(CHAR* pchData, CHAR* pchDataSrc, INT nLength, BOOL bWordReverse = FALSE); |
| | | // 16æ³è -> ä½é¾ä¹ç»° 10æ³è |
| | | // 16æ³è -> ä½é¾ä¹ç»° 10æ³è |
| | | UINT Hex2UnsignedDec(CString hex_str); |
| | | // åµé -> 10æ³è |
| | | // åµé -> 10æ³è |
| | | UINT GetDataWord2Dec(CString buff, int ap, BOOL hi_bit); |
| | | // åµé -> å·©ç£å¯ |
| | | // åµé -> å·©ç£å¯ |
| | | CString GetDataWord2Str(CString& value, int& addr, int length); |
| | | // æ±å¹
æ²¥ç è¾æ¹ |
| | | // æ±å¹
æ²¥ç è¾æ¹ |
| | | BOOL SearchValueInMap(CString Name, CString& ReturnValue, int& ByteLength); |
| | | // æ±å¹
æ²¥ç è¾æ¹ |
| | | // æ±å¹
æ²¥ç è¾æ¹ |
| | | BOOL SearchValueInMap(CString Name, int& nReturnValue, int& ByteLength); |
| | | // PLC åæç£ -> ç |
| | | // PLC åæç£ -> ç |
| | | BOOL InsertPLCValueToPack(CString keyName, char* pstrData); |
| | | // è¼ è¾æ¹ |
| | | // è¼ è¾æ¹ |
| | | BOOL GetPackDataAll(CString &Name, int Index, int &Byte, CString &Value); |
| | | // æ±å¹
åæç£ åç å¢¨æ¬¾é£ |
| | | // æ±å¹
åæç£ åç å¢¨æ¬¾é£ |
| | | int GetDataPackTotalNumber(); |
| | | // æ±å¹
åæç£ åç å®æé£ |
| | | // æ±å¹
åæç£ åç å®æé£ |
| | | int GetDataPackTotalByteSize(){return m_DataPackTotalByteSize;}; |
| | | |
| | | // PLC åæç£ -> ç |
| | | // PLC åæç£ -> ç |
| | | BOOL InsertPLCValueToMap(char* pstrRawData,int nLength); |
| | | |
| | | // æ±å¹
åæç£ 卿 æ®¿åº |
| | | // æ±å¹
åæç£ 卿 æ®¿åº |
| | | void InsertTransItemToMap(CString ItemName, int ItemByte, int Key=-1, EnumPackType ePackType = eAscii); |
| | | // æ±å¹
åæç£ 卿 佬æ |
| | | // æ±å¹
åæç£ 卿 佬æ |
| | | BOOL LoadTransItemFromFile(CString FilePath); |
| | | |
| | | CString GetItemName(int nIndex); |
| | |
| | | void ResetData(); |
| | | private: |
| | | int m_DataPackTotalByteSize; |
| | | std::map<CString,CTransDataPack*> m_TransDataPackMap; //æ±å¹
æ²¥ç ææ, 辨æ, è¼ä¿ æªè ç ç§ææå |
| | | std::map<CString,CTransDataPack*>::iterator m_TransDataPackMapiterator; //æ±å¹
æ²¥ç ååºèç»° å¨ç¢ç£ |
| | | std::vector<CString> m_vTransDataList; //æ±å¹
æ²¥ç åºè¶é£ |
| | | std::map<CString,CTransDataPack*> m_TransDataPackMap; //æ±å¹
æ²¥ç ææ, 辨æ, è¼ä¿ æªè ç ç§ææå |
| | | std::map<CString,CTransDataPack*>::iterator m_TransDataPackMapiterator; //æ±å¹
æ²¥ç ååºèç»° å¨ç¢ç£ |
| | | std::vector<CString> m_vTransDataList; //æ±å¹
æ²¥ç åºè¶é£ |
| | | }; |
| | |
| | | #include "stdafx.h" |
| | | #include "stdafx.h" |
| | | #include "Transfer_Data.h" |
| | | |
| | | CTransfer_Data::CTransfer_Data() |
| | |
| | | #pragma once |
| | | #pragma once |
| | | |
| | | #include "TransDataManager.h" |
| | | |
| | |
| | | #pragma once |
| | | #pragma once |
| | | |
| | | #define DEFECTIMAGE_WIDTH 1024 |
| | | #define DEFECTIMAGE_HEIGHT 500 |
| | |
| | | int m_nJudge_Type; |
| | | |
| | | // Exception Area |
| | | int m_nExceptionArea; // 0 : åºå¨çª, 1 : æ··å¨ å§é, 2 : è¯å å¨çª |
| | | int m_nExceptionArea; // 0 : åºå¨çª, 1 : æ··å¨ å§é, 2 : è¯å å¨çª |
| | | |
| | | // User Defect Idx |
| | | int m_nUserDefectAreaIdx; |
| | |
| | | #ifndef GLOBAL_DEFINE_H |
| | | #ifndef GLOBAL_DEFINE_H |
| | | #define GLOBAL_DEFINE_H |
| | | |
| | | #include <map> |
| | |
| | | #define CHKMAX(a,b) (((a) > (b)) ? (a) : (b)) |
| | | #define CHKMIN(a,b) (((a) < (b)) ? (a) : (b)) |
| | | |
| | | #define MAX_PANEL_SIDE 4 // æ è |
| | | #define UPDN_TYPE 2 // æçª éæ ä¹ç»°çå¿« 2 çªå±ç¶ ä¹ç»°çå¿« 1 |
| | | #define MAX_PANEL_SIDE 4 // æ è |
| | | #define UPDN_TYPE 2 // æçª éæ ä¹ç»°çå¿« 2 çªå±ç¶ ä¹ç»°çå¿« 1 |
| | | #define MAX_SIDE_COUNT 8 |
| | | #define MAX_CORNER_DIMENSION_MEASURE_COUNT 5 |
| | | #define MAX_SIDE_DIMENSION_MEASURE_COUNT 16 // å¼¥æª Frame è ç¶æ |
| | | #define MAX_SIDE_DIMENSION_MEASURE_COUNT 16 // å¼¥æª Frame è ç¶æ |
| | | |
| | | #define MAX_SIDE_EXCEPTION_AREA_COUNT 32 |
| | | #define MAX_SIDE_USER_DEFECT_AREA_COUNT 32 |
| | |
| | | |
| | | enum EmSplashCmd {emShow=0, emHide, emText}; |
| | | |
| | | enum ScanDirectionIns { SD_Forward = 0, SD_Backward, SD_Unknown }; // Glass æé Scan è§æ°¢. |
| | | enum ScanDirectionIns { SD_Forward = 0, SD_Backward, SD_Unknown }; // Glass æé Scan è§æ°¢. |
| | | enum DimensionDir { DIMENSION_A=0, DIMENSION_B, DIMENSION_C, DIMENSION_D,DIMENSION_A_DN, DIMENSION_B_DN, DIMENSION_C_DN, DIMENSION_D_DN, DIMENSION_NONE}; |
| | | enum EM_CORNER_JUDGE {A_ZONE_CRACK=0,B_ZONE_CRACK,B_ZONE_BURR,C_ZONE_CRACK,C_ZONE_BURR, D_ZONE_CRACK, EDGE_THINCRACK, CHIP_WHITE}; |
| | | |
| | |
| | | #define IMAGE_WIDTH 4096 // 8192//2048 |
| | | #define IMAGE_HEIGHT 1024 |
| | | #define MAX_IMAGE_FRAME 160//100 |
| | | #define MAX_IMAGE_FRAME_SHORT 160//100 // å¼¥æª æ©é¥ç è |
| | | #define MAX_IMAGE_FRAME_LONG 160//100 // å¼¥æª æ©é¥ç è |
| | | #define MAX_IMAGE_FRAME_SHORT 160//100 // å¼¥æª æ©é¥ç è |
| | | #define MAX_IMAGE_FRAME_LONG 160//100 // å¼¥æª æ©é¥ç è |
| | | |
| | | #define MAX_SIDE_INSPECT_AREA_COUNT 12 |
| | | |
| | | #define MAX_IMAGE_LINE_SHORT MAX_IMAGE_FRAME_SHORT * IMAGE_HEIGHT // å¼¥æª æ¼ç¢è |
| | | #define MAX_IMAGE_LINE_LONG MAX_IMAGE_FRAME_LONG * IMAGE_HEIGHT // å¼¥æª æ¼ç¢è |
| | | #define MAX_IMAGE_LINE_SHORT MAX_IMAGE_FRAME_SHORT * IMAGE_HEIGHT // å¼¥æª æ¼ç¢è |
| | | #define MAX_IMAGE_LINE_LONG MAX_IMAGE_FRAME_LONG * IMAGE_HEIGHT // å¼¥æª æ¼ç¢è |
| | | #define MAX_IMAGE_LINE MAX_IMAGE_LINE_LONG |
| | | #define MAX_LIMIT_LINE (MAX_IMAGE_FRAME - 1) * IMAGE_HEIGHT |
| | | |
| | | #define MAX_IMAGE_LINE_MARGIN ((MAX_IMAGE_FRAME+50) * IMAGE_HEIGHT) //(150 * IMAGE_HEIGHT) // å¼¥æª æ¼ç¢è |
| | | #define MAX_IMAGE_LINE_MARGIN ((MAX_IMAGE_FRAME+50) * IMAGE_HEIGHT) //(150 * IMAGE_HEIGHT) // å¼¥æª æ¼ç¢è |
| | | |
| | | #define ALIGN_4BYTE(width) (width + 3)/4*4 |
| | | #define PI 3.14159265358979323846 |
| | |
| | | #define MAX_SIDE_INSPECT_TYPE 8 |
| | | |
| | | struct WSSendData { |
| | | //=======================å¾
å®========================== |
| | | //uint8_t operation; // æä½ç¬¦ (1åè) |
| | | //uint8_t operand; // æä½æ° (1åè) |
| | | //uint16_t blockNumber; // å¾ååç¼å· (2åèæ ç¬¦å·æ´æ°) |
| | | //uint32_t dataOffset; // æ°æ®åç§» (4åèæ ç¬¦å·æ´æ°) |
| | | //=======================å¾
å®========================== |
| | | //uint8_t operation; // æä½ç¬¦ (1åè) |
| | | //uint8_t operand; // æä½æ° (1åè) |
| | | //uint16_t blockNumber; // å¾ååç¼å· (2åèæ ç¬¦å·æ´æ°) |
| | | //uint32_t dataOffset; // æ°æ®åç§» (4åèæ ç¬¦å·æ´æ°) |
| | | //===================================================== |
| | | |
| | | uint8_t nCheckType = 0; // æ£æµç±»å |
| | | uint8_t nRecipe = 0; // é
æ¹ |
| | | uint8_t nLineType = 0; // 线å«ç±»å |
| | | uint8_t nIndex = 0; // å¾çåºå· |
| | | uint8_t nFrameIdx = 0; // 帧åºå· |
| | | uint8_t nScanIdx = 0; // ä¾§å« |
| | | uint8_t nNGType = 0; // NG ç±»å |
| | | uint8_t nPosition = 0; // ä½ç½® |
| | | uint8_t nState = 0; // ״̬ |
| | | uint16_t nEdgeX = 0; // Xæ¹åè¾¹ç¼åæ |
| | | uint16_t nEdgeY = 0; // Xæ¹åè¾¹ç¼åæ |
| | | uint16_t nNPointY = 0; // Yæ¹åNGåºååæ |
| | | uint16_t nWidth = 0; // å¾å宽度 |
| | | uint16_t nHeight = 0; // å¾åé«åº¦ |
| | | double dTimeStamp = 0.0; // æ¶é´æ³ |
| | | uint16_t nLeft = 0; // å¨åå¾çä½ç½® |
| | | uint16_t nTop = 0; // å¨åå¾çä½ç½® |
| | | std::string strSN = ""; // åºåå· |
| | | std::vector<char> image = {}; // å¾åæ°æ® (äºè¿å¶æ°æ®) |
| | | uint8_t nCheckType = 0; // æ£æµç±»å |
| | | uint8_t nRecipe = 0; // é
æ¹ |
| | | uint8_t nLineType = 0; // 线å«ç±»å |
| | | uint8_t nIndex = 0; // å¾çåºå· |
| | | uint8_t nFrameIdx = 0; // 帧åºå· |
| | | uint8_t nScanIdx = 0; // ä¾§å« |
| | | uint8_t nNGType = 0; // NG ç±»å |
| | | uint8_t nPosition = 0; // ä½ç½® |
| | | uint8_t nState = 0; // ç¶æ |
| | | uint16_t nEdgeX = 0; // Xæ¹åè¾¹ç¼åæ |
| | | uint16_t nEdgeY = 0; // Xæ¹åè¾¹ç¼åæ |
| | | uint16_t nNPointY = 0; // Yæ¹åNGåºååæ |
| | | uint16_t nWidth = 0; // å¾å宽度 |
| | | uint16_t nHeight = 0; // å¾åé«åº¦ |
| | | double dTimeStamp = 0.0; // æ¶é´æ³ |
| | | uint16_t nLeft = 0; // å¨åå¾çä½ç½® |
| | | uint16_t nTop = 0; // å¨åå¾çä½ç½® |
| | | std::string strSN = ""; // åºåå· |
| | | std::vector<char> image = {}; // å¾åæ°æ® (äºè¿å¶æ°æ®) |
| | | }; |
| | | |
| | | struct WSReceiveData { |
| | | // å®ä¹ä¸ä¸ªè¡¨ç¤ºNGä½ç½®çç»æä½ |
| | | // å®ä¹ä¸ä¸ªè¡¨ç¤ºNGä½ç½®çç»æä½ |
| | | struct NGPosition { |
| | | uint8_t nNGType = 0; // NG ç±»å |
| | | uint16_t nLeft = 0; // å¨åå¾çä½ç½® |
| | | uint16_t nTop = 0; // å¨åå¾çä½ç½® |
| | | uint16_t nRight = 0; // å¨åå¾çä½ç½® |
| | | uint16_t nBottom = 0; // å¨åå¾çä½ç½® |
| | | uint8_t nNGType = 0; // NG ç±»å |
| | | uint16_t nLeft = 0; // å¨åå¾çä½ç½® |
| | | uint16_t nTop = 0; // å¨åå¾çä½ç½® |
| | | uint16_t nRight = 0; // å¨åå¾çä½ç½® |
| | | uint16_t nBottom = 0; // å¨åå¾çä½ç½® |
| | | }; |
| | | |
| | | uint8_t nRecipe = 0; // é
æ¹ |
| | | uint8_t nLineType = 0; // 线å«ç±»å |
| | | uint8_t nIndex = 0; // å¾çåºå· |
| | | uint8_t nFrameIdx = 0; // 帧åºå· |
| | | uint8_t nScanIdx = 0; // ä¾§å« |
| | | std::string strSN = ""; // åºåå· |
| | | double dTimeStamp = 0.0; // æ¶é´æ³ |
| | | uint8_t nGNum = 0; // NG æ°é |
| | | std::vector<NGPosition> ngPosArray = {}; // NG ä½ç½®æ°ç» |
| | | uint8_t nRecipe = 0; // é
æ¹ |
| | | uint8_t nLineType = 0; // 线å«ç±»å |
| | | uint8_t nIndex = 0; // å¾çåºå· |
| | | uint8_t nFrameIdx = 0; // 帧åºå· |
| | | uint8_t nScanIdx = 0; // ä¾§å« |
| | | std::string strSN = ""; // åºåå· |
| | | double dTimeStamp = 0.0; // æ¶é´æ³ |
| | | uint8_t nGNum = 0; // NG æ°é |
| | | std::vector<NGPosition> ngPosArray = {}; // NG ä½ç½®æ°ç» |
| | | }; |
| | | |
| | | #endif // GLOBAL_DEFINE_H |
| | |
| | | #include "stdafx.h" |
| | | #include "stdafx.h" |
| | | #include "config.h" |
| | | |
| | | const TCHAR *PANEL_SIDE[] = {_T("A_TOP"), _T("B_TOP"), _T("C_TOP"), _T("D_TOP"),_T("A_BOT"), _T("B_BOT"), _T("C_BOT"), _T("D_BOT")}; |
| | |
| | | // HMX64Fundamentals.h: interface for the CHMX64Fundamentals class. |
| | | // HMX64Fundamentals.h: interface for the CHMX64Fundamentals class. |
| | | // |
| | | ////////////////////////////////////////////////////////////////////// |
| | | |
| | |
| | | public: |
| | | CStringArray m_strCamCCA; |
| | | CStringArray m_strCamCVI; |
| | | int *m_pBufferSize; // Grabä¿è¾ Bufferç¼ åæ. |
| | | int *m_pBufferCount; // Grab Bufferç¼ è. |
| | | int *m_pMemFrameNo; // è§å çèåº æ©é¥ç è |
| | | int *m_pBufferSize; // Grabä¿è¾ Bufferç¼ åæ. |
| | | int *m_pBufferCount; // Grab Bufferç¼ è. |
| | | int *m_pMemFrameNo; // è§å çèåº æ©é¥ç è |
| | | int *m_pCameraPort; |
| | | int *m_pFrameHeight; |
| | | int *m_pFrameWidth; |
| | | int *m_nBoardID; |
| | | int *m_nBoardCh; |
| | | AcqMode m_AcqMode; |
| | | int m_nFrameDefectPixel; // è Frameç¼ å¼¥æª æ¬çª Pixel è |
| | | int m_nMaxDefect; // miniont,2011-04-28, å¼¥æª æ¬çª 俺è |
| | | int m_nFrameDefectPixel; // è Frameç¼ å¼¥æª æ¬çª Pixel è |
| | | int m_nMaxDefect; // miniont,2011-04-28, å¼¥æª æ¬çª 俺è |
| | | int m_nCameraCount; |
| | | int m_nScanCount; |
| | | int m_nThreadCount; |
| | |
| | | #include "StdAfx.h" |
| | | #include "StdAfx.h" |
| | | #include "StatusMonitor.h" |
| | | |
| | | |
| | |
| | | TCHAR szTemp[MAX_PATH]; |
| | | |
| | | wcscpy_s(szTemp, MAX_PATH, strFolder); |
| | | szTemp[strFolder.GetLength() + 1] = NULL; // NULLå·©ç£å 滴俺 ç¸ç»¢åå
· èä¿. |
| | | szTemp[strFolder.GetLength() + 1] = NULL; // NULLå·©ç£å 滴俺 ç¸ç»¢åå
· èä¿. |
| | | |
| | | FileOp.hwnd = NULL; |
| | | FileOp.wFunc = FO_DELETE; |
| | | FileOp.pFrom = NULL; |
| | | FileOp.pTo = NULL; |
| | | FileOp.fFlags = FOF_NOCONFIRMATION | FOF_NOERRORUI; // ç¬ç¢çç«ç¤å æåæ¡£åº æ±²æ²¥ |
| | | FileOp.fFlags = FOF_NOCONFIRMATION | FOF_NOERRORUI; // ç¬ç¢çç«ç¤å æåæ¡£åº æ±²æ²¥ |
| | | FileOp.fAnyOperationsAborted = false; |
| | | FileOp.hNameMappings = NULL; |
| | | FileOp.lpszProgressTitle = NULL; |
| | |
| | | #pragma once |
| | | #pragma once |
| | | |
| | | #include "Singleton.h" |
| | | #include "Config.h" |
| | |
| | | #include "LicenseChecker.h" |
| | | |
| | | /* |
| | | Main Interface ç¼ Instance Pointer ç« ç±ç» ä¹ç»°ä¿. |
| | | Main Interface ç¼ Instance Pointer ç« ç±ç» ä¹ç»°ä¿. |
| | | |
| | | UIä¿è¾ç»° Main Interface ç«è¾é çªé¸ç»æ æé¾ æ¼ç¼æéª¨èº, |
| | | UIä¿è¾ç»° Main Interface ç«è¾é çªé¸ç»æ æé¾ æ¼ç¼æéª¨èº, |
| | | |
| | | CStatusMonitor èº é¿ Instance ä¿ ç«è¾çªæ¡£åº çªç£ |
| | | CStatusMonitor èº é¿ Instance ä¿ ç«è¾çªæ¡£åº çªç£ |
| | | |
| | | UI ä»ä¿ Interface ç¶éç»°è èæ»¡æ èªçª |
| | | UI ä»ä¿ Interface ç¶éç»°è èæ»¡æ èªçª |
| | | */ |
| | | |
| | | class CStatusMonitor : public Singleton<CStatusMonitor> |
| | |
| | | // DlgLicenseInfo.cpp : 夿³
é¢èæ¶èªä¿. |
| | | // DlgLicenseInfo.cpp : 夿³
é¢èæ¶èªä¿. |
| | | // |
| | | |
| | | #include "stdafx.h" |
| | |
| | | #include "afxdialogex.h" |
| | | |
| | | |
| | | // CDlgLicenseInfo æªæ³ æç£æ¶èªä¿. |
| | | // CDlgLicenseInfo æªæ³ æç£æ¶èªä¿. |
| | | |
| | | IMPLEMENT_DYNAMIC(CDlgLicenseInfo, CDialogEx) |
| | | |
| | |
| | | // key status |
| | | switch (status.nKeyStatus) |
| | | { |
| | | case LicenseKey_NotConnected: // æ¥·æ¬ æå³ |
| | | case LicenseKey_NotConnected: // æ¥·æ¬ æå³ |
| | | strValue = L"Key Status = Not Connected"; |
| | | break; |
| | | case LicenseKey_NotCertified: // ç¢å æå³ |
| | | case LicenseKey_NotCertified: // ç¢å æå³ |
| | | strValue = L"Key Status = Not Certified"; |
| | | break; |
| | | case LicenseKey_NotActivated: // åå·±æ³ æå³ |
| | | case LicenseKey_NotActivated: // åå·±æ³ æå³ |
| | | strValue = L"Key Status = Not Activated"; |
| | | break; |
| | | case LicenseKey_Activated: // åå·±æ³ å³ |
| | | case LicenseKey_Activated: // åå·±æ³ å³ |
| | | strValue = L"Key Status = Activated"; |
| | | break; |
| | | } |
| | |
| | | END_MESSAGE_MAP() |
| | | |
| | | |
| | | // CDlgLicenseInfo çç«ç¤ è´¸åºææ¶èªä¿. |
| | | // CDlgLicenseInfo çç«ç¤ è´¸åºææ¶èªä¿. |
| | |
| | | #pragma once |
| | | #pragma once |
| | | #include "StatusMonitor.h" |
| | | |
| | | // CDlgLicenseInfo æªæ³ æç£æ¶èªä¿. |
| | | // CDlgLicenseInfo æªæ³ æç£æ¶èªä¿. |
| | | |
| | | class CDlgLicenseInfo : public CDialogEx |
| | | { |
| | | DECLARE_DYNAMIC(CDlgLicenseInfo) |
| | | |
| | | public: |
| | | CDlgLicenseInfo(CWnd* pParent = NULL); // éé ç§¯å·±ç£æ¶èªä¿. |
| | | CDlgLicenseInfo(CWnd* pParent = NULL); // éé ç§¯å·±ç£æ¶èªä¿. |
| | | virtual ~CDlgLicenseInfo(); |
| | | |
| | | // æªæ³ æç£ åæç£æ¶èªä¿. |
| | | // æªæ³ æç£ åæç£æ¶èªä¿. |
| | | enum { IDD = IDD_DIALOG_LICENSE }; |
| | | |
| | | protected: |
| | | virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV ç¤çæ¶èªä¿. |
| | | virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV ç¤çæ¶èªä¿. |
| | | |
| | | DECLARE_MESSAGE_MAP() |
| | | |
| | |
| | | // DlgSideDimensionSetting.cpp : 夿³
é¢èæ¶èªä¿. |
| | | // DlgSideDimensionSetting.cpp : 夿³
é¢èæ¶èªä¿. |
| | | // |
| | | |
| | | #include "stdafx.h" |
| | |
| | | #include "afxdialogex.h" |
| | | |
| | | |
| | | // CDlgSideDimensionSetting æªæ³ æç£æ¶èªä¿. |
| | | // CDlgSideDimensionSetting æªæ³ æç£æ¶èªä¿. |
| | | |
| | | IMPLEMENT_DYNAMIC(CDlgSideDimensionSetting, CDialogEx) |
| | | |
| | |
| | | #pragma once |
| | | #pragma once |
| | | #include "GridCtrl.h" |
| | | #include "GlassRecipe.h" |
| | | #include "Glass_Data.h" |
| | | |
| | | // CDlgSideDimensionSetting æªæ³ æç£æ¶èªä¿. |
| | | // CDlgSideDimensionSetting æªæ³ æç£æ¶èªä¿. |
| | | |
| | | class CDlgSideDimensionSetting : public CDialogEx |
| | | { |
| | | DECLARE_DYNAMIC(CDlgSideDimensionSetting) |
| | | |
| | | public: |
| | | CDlgSideDimensionSetting(CWnd* pParent = NULL); // éé ç§¯å·±ç£æ¶èªä¿. |
| | | CDlgSideDimensionSetting(CWnd* pParent = NULL); // éé ç§¯å·±ç£æ¶èªä¿. |
| | | virtual ~CDlgSideDimensionSetting(); |
| | | |
| | | // æªæ³ æç£ åæç£æ¶èªä¿. |
| | | // æªæ³ æç£ åæç£æ¶èªä¿. |
| | | enum { IDD = IDD_DLG_SIDE_DIMENSION_SETTING }; |
| | | |
| | | protected: |
| | | virtual BOOL OnInitDialog(); |
| | | BOOL PreTranslateMessage(MSG* pMsg); |
| | | virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV ç¤çæ¶èªä¿. |
| | | virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV ç¤çæ¶èªä¿. |
| | | |
| | | DECLARE_MESSAGE_MAP() |
| | | |
| | |
| | | // DlgSideExceptoinSetting.cpp : 夿³
é¢èæ¶èªä¿. |
| | | // DlgSideExceptoinSetting.cpp : 夿³
é¢èæ¶èªä¿. |
| | | // |
| | | |
| | | #include "stdafx.h" |
| | |
| | | #include "afxdialogex.h" |
| | | |
| | | |
| | | // CDlgSideDimensionSetting æªæ³ æç£æ¶èªä¿. |
| | | // CDlgSideDimensionSetting æªæ³ æç£æ¶èªä¿. |
| | | |
| | | IMPLEMENT_DYNAMIC(CDlgSideExceptoinSetting, CDialogEx) |
| | | |
| | |
| | | #pragma once |
| | | #pragma once |
| | | #include "GridCtrl.h" |
| | | #include "GlassRecipe.h" |
| | | #include "Glass_Data.h" |
| | | #include "EdgeImageViewer.h" |
| | | |
| | | // CDlgSideExceptoinSetting æªæ³ æç£æ¶èªä¿. |
| | | // CDlgSideExceptoinSetting æªæ³ æç£æ¶èªä¿. |
| | | |
| | | class CDlgSideExceptoinSetting : public CDialogEx |
| | | { |
| | | DECLARE_DYNAMIC(CDlgSideExceptoinSetting) |
| | | |
| | | public: |
| | | CDlgSideExceptoinSetting(CWnd* pParent = NULL); // éé ç§¯å·±ç£æ¶èªä¿. |
| | | CDlgSideExceptoinSetting(CWnd* pParent = NULL); // éé ç§¯å·±ç£æ¶èªä¿. |
| | | virtual ~CDlgSideExceptoinSetting(); |
| | | |
| | | // æªæ³ æç£ åæç£æ¶èªä¿. |
| | | // æªæ³ æç£ åæç£æ¶èªä¿. |
| | | enum { IDD = IDD_DLG_SIDE_EXCEPTION_SETTING }; |
| | | |
| | | protected: |
| | | virtual BOOL OnInitDialog(); |
| | | BOOL PreTranslateMessage(MSG* pMsg); |
| | | virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV ç¤çæ¶èªä¿. |
| | | virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV ç¤çæ¶èªä¿. |
| | | |
| | | DECLARE_MESSAGE_MAP() |
| | | |
| | |
| | | // DlgSideNotchSetting.cpp : 夿³
é¢èæ¶èªä¿. |
| | | // DlgSideNotchSetting.cpp : 夿³
é¢èæ¶èªä¿. |
| | | // |
| | | |
| | | #include "stdafx.h" |
| | |
| | | #include "Global_Define.h" |
| | | |
| | | |
| | | // CDlgSideNotchSetting æªæ³ æç£æ¶èªä¿. |
| | | // CDlgSideNotchSetting æªæ³ æç£æ¶èªä¿. |
| | | |
| | | IMPLEMENT_DYNAMIC(CDlgSideNotchSetting, CDialogEx) |
| | | |
| | |
| | | vecParams.push_back(strTemp); |
| | | strTemp.Format(_T("Use Notch Defect")); |
| | | vecParams.push_back(strTemp); |
| | | strTemp.Format(_T("Inspect Threshold (â³)")); |
| | | strTemp.Format(_T("Inspect Threshold (â³)")); |
| | | vecParams.push_back(strTemp); |
| | | strTemp.Format(_T("Inspect Offset")); |
| | | vecParams.push_back(strTemp); |
| | |
| | | #pragma once |
| | | #pragma once |
| | | #include "GridCtrl.h" |
| | | #include "GlassRecipe.h" |
| | | #include "Glass_Data.h" |
| | | #include "EdgeImageViewer.h" |
| | | |
| | | // CDlgSideNotchSetting æªæ³ æç£æ¶èªä¿. |
| | | // CDlgSideNotchSetting æªæ³ æç£æ¶èªä¿. |
| | | |
| | | class CDlgSideNotchSetting : public CDialogEx |
| | | { |
| | | DECLARE_DYNAMIC(CDlgSideNotchSetting) |
| | | |
| | | public: |
| | | CDlgSideNotchSetting(CWnd* pParent = NULL); // éé ç§¯å·±ç£æ¶èªä¿. |
| | | CDlgSideNotchSetting(CWnd* pParent = NULL); // éé ç§¯å·±ç£æ¶èªä¿. |
| | | virtual ~CDlgSideNotchSetting(); |
| | | |
| | | // æªæ³ æç£ åæç£æ¶èªä¿. |
| | | // æªæ³ æç£ åæç£æ¶èªä¿. |
| | | enum { IDD = IDD_DLG_SIDE_NOTCH_SETTING }; |
| | | |
| | | protected: |
| | | virtual BOOL OnInitDialog(); |
| | | BOOL PreTranslateMessage(MSG* pMsg); |
| | | virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV ç¤çæ¶èªä¿. |
| | | virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV ç¤çæ¶èªä¿. |
| | | |
| | | DECLARE_MESSAGE_MAP() |
| | | |
| | |
| | | // DlgSideUserDefectSetting.cpp : 夿³
é¢èæ¶èªä¿. |
| | | // DlgSideUserDefectSetting.cpp : 夿³
é¢èæ¶èªä¿. |
| | | // |
| | | |
| | | #include "stdafx.h" |
| | |
| | | #include "afxdialogex.h" |
| | | |
| | | |
| | | // CDlgSideDimensionSetting æªæ³ æç£æ¶èªä¿. |
| | | // CDlgSideDimensionSetting æªæ³ æç£æ¶èªä¿. |
| | | |
| | | IMPLEMENT_DYNAMIC(CDlgSideUserDefectSetting, CDialogEx) |
| | | |
| | |
| | | #pragma once |
| | | #pragma once |
| | | #include "GridCtrl.h" |
| | | #include "GlassRecipe.h" |
| | | #include "Glass_Data.h" |
| | | #include "EdgeImageViewer.h" |
| | | |
| | | // CDlgSideUserDefectSetting æªæ³ æç£æ¶èªä¿. |
| | | // CDlgSideUserDefectSetting æªæ³ æç£æ¶èªä¿. |
| | | |
| | | class CDlgSideUserDefectSetting : public CDialogEx |
| | | { |
| | | DECLARE_DYNAMIC(CDlgSideUserDefectSetting) |
| | | |
| | | public: |
| | | CDlgSideUserDefectSetting(CWnd* pParent = NULL); // éé ç§¯å·±ç£æ¶èªä¿. |
| | | CDlgSideUserDefectSetting(CWnd* pParent = NULL); // éé ç§¯å·±ç£æ¶èªä¿. |
| | | virtual ~CDlgSideUserDefectSetting(); |
| | | |
| | | // æªæ³ æç£ åæç£æ¶èªä¿. |
| | | // æªæ³ æç£ åæç£æ¶èªä¿. |
| | | enum { IDD = IDD_DLG_SIDE_USER_DEFECT_SETTING }; |
| | | |
| | | protected: |
| | | virtual BOOL OnInitDialog(); |
| | | BOOL PreTranslateMessage(MSG* pMsg); |
| | | virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV ç¤çæ¶èªä¿. |
| | | virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV ç¤çæ¶èªä¿. |
| | | |
| | | DECLARE_MESSAGE_MAP() |
| | | |
| | |
| | | |
| | | // EdgeInspector_App.cpp : è§ä¾© æ©èºå¼ä¼ä¿ æªè åªè´°è¶ æ¼ç´¯é æ²¥ç¼é¦èªä¿. |
| | |  |
| | | // EdgeInspector_App.cpp : è§ä¾© æ©èºå¼ä¼ä¿ æªè åªè´°è¶ æ¼ç´¯é æ²¥ç¼é¦èªä¿. |
| | | // |
| | | |
| | | #include "stdafx.h" |
| | |
| | | BOOL g_bUse_SaveAllDMP = FALSE; |
| | | |
| | | LONG WINAPI MyUnhandledExceptionFilter(EXCEPTION_POINTERS* pExceptionInfo) { |
| | | // 太éî¦å¼éä¼² |
| | | // 太éî¦å¼éä¼² |
| | | char szFileName[MAX_PATH]; |
| | | struct stat buffer; |
| | | if (stat("D:\\Inspection\\Temp", &buffer) != 0) |
| | |
| | | |
| | | snprintf(szFileName, MAX_PATH, "D:\\Inspection\\Temp\\EdgeInspector_DmpFile.dmp"); |
| | | |
| | | // ?åå¼é |
| | | // ?åå¼é |
| | | HANDLE hFile = CreateFileA(szFileName, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); |
| | | if (hFile != INVALID_HANDLE_VALUE) { |
| | | MINIDUMP_EXCEPTION_INFORMATION dumpInfo; |
| | |
| | | dumpInfo.ThreadId = GetCurrentThreadId(); |
| | | dumpInfo.ClientPointers = TRUE; |
| | | |
| | | // ?å¿dumpå¼é |
| | | // ?å¿dumpå¼é |
| | | BOOL success = MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), hFile, g_bUse_SaveAllDMP ? MiniDumpWithFullMemory : MiniDumpFilterMemory, &dumpInfo, NULL, NULL); |
| | | CloseHandle(hFile); |
| | | |
| | |
| | | |
| | | BEGIN_MESSAGE_MAP(CEdgeInspector_App, CWinAppEx) |
| | | ON_COMMAND(ID_APP_ABOUT, &CEdgeInspector_App::OnAppAbout) |
| | | // éé é¢èé ææª¬èº çªç»° å·©è¾ ç飿¶èªä¿. |
| | | // éé é¢èé ææª¬èº çªç»° å·©è¾ ç飿¶èªä¿. |
| | | ON_COMMAND(ID_FILE_NEW, &CWinAppEx::OnFileNew) |
| | | ON_COMMAND(ID_FILE_OPEN, &CWinAppEx::OnFileOpen) |
| | | // éé ç¢å° 汲沥 ç飿¶èªä¿. |
| | | // éé ç¢å° 汲沥 ç飿¶èªä¿. |
| | | ON_COMMAND(ID_FILE_PRINT_SETUP, &CWinAppEx::OnFilePrintSetup) |
| | | END_MESSAGE_MAP() |
| | | |
| | | |
| | | // CEdgeInspector_App 积己 |
| | | // CEdgeInspector_App 积己 |
| | | |
| | | CEdgeInspector_App::CEdgeInspector_App() |
| | | { |
| | | SetUnhandledExceptionFilter(MyUnhandledExceptionFilter); |
| | | m_bHiColorIcons = TRUE; |
| | | |
| | | // ä¿ç« ç«ç´¯ å
åºç£ ç¤ç |
| | | // ä¿ç« ç«ç´¯ å
åºç£ ç¤ç |
| | | m_dwRestartManagerSupportFlags = AFX_RESTART_MANAGER_SUPPORT_ALL_ASPECTS; |
| | | #ifdef _MANAGED |
| | | // è§ä¾© æ©èºå¼ä¼é å侩 æ«ç»¢ ç¹é¸¥ç ç¤çé è¤ä¾©çªå¯ å¼éè çå¿«(/clr): |
| | | // 1) æ ç å æ±²æ²¥ç¯® ä¿ç« ç«ç´¯ å
åºç£ ç¤çæ åæªèº ç´¯æ¼çªç»° å é夸é¦èªä¿. |
| | | // 2) æ©èºçé£ä¿è¾ å¼éçªå¦¨æ System.Windows.Formsä¿ æªè æ¼ç¼ç« ç å秦å
· é¦èªä¿. |
| | | // è§ä¾© æ©èºå¼ä¼é å侩 æ«ç»¢ ç¹é¸¥ç ç¤çé è¤ä¾©çªå¯ å¼éè çå¿«(/clr): |
| | | // 1) æ ç å æ±²æ²¥ç¯® ä¿ç« ç«ç´¯ å
åºç£ ç¤çæ åæªèº ç´¯æ¼çªç»° å é夸é¦èªä¿. |
| | | // 2) æ©èºçé£ä¿è¾ å¼éçªå¦¨æ System.Windows.Formsä¿ æªè æ¼ç¼ç« ç å秦å
· é¦èªä¿. |
| | | System::Windows::Forms::Application::SetUnhandledExceptionMode(System::Windows::Forms::UnhandledExceptionMode::ThrowException); |
| | | #endif |
| | | |
| | | // TODO: é
è´° è§ä¾© æ©èºå¼ä¼ ID å·©ç£å¯é ç»è¡ ID å·©ç£å¯èº 宿ç»ç«å·(é¼»å). |
| | | // å·©ç£å¯ä¿ æªè è¾ä¾¥: CompanyName.ProductName.SubProduct.VersionInformation |
| | | // TODO: é
è´° è§ä¾© æ©èºå¼ä¼ ID å·©ç£å¯é ç»è¡ ID å·©ç£å¯èº 宿ç»ç«å·(é¼»å). |
| | | // å·©ç£å¯ä¿ æªè è¾ä¾¥: CompanyName.ProductName.SubProduct.VersionInformation |
| | | SetAppID(_T("EdgeInspector_App.AppID.NoVersion")); |
| | | |
| | | // TODO: å¯æä¿ ç§¯å·± å
éç« ç åé¦èªä¿. |
| | | // InitInstanceä¿ èçµ åå¤¸è æª¬ææ³ ç´¯è¯é ç¡
æ¹é¦èªä¿. |
| | | // TODO: å¯æä¿ ç§¯å·± å
éç« ç åé¦èªä¿. |
| | | // InitInstanceä¿ èçµ åå¤¸è æª¬ææ³ ç´¯è¯é ç¡
æ¹é¦èªä¿. |
| | | m_bCreateBase = FALSE; |
| | | m_bCreateLog = FALSE; |
| | | m_hMutex = NULL; |
| | | } |
| | | |
| | | // è¡èè CEdgeInspector_App ä¿ºçæ¶èªä¿. |
| | | // è¡èè CEdgeInspector_App ä¿ºçæ¶èªä¿. |
| | | |
| | | CEdgeInspector_App theApp; |
| | | |
| | | |
| | | // CEdgeInspector_App æª¬ææ³ |
| | | // CEdgeInspector_App æª¬ææ³ |
| | | |
| | | BOOL CEdgeInspector_App::InitInstance() |
| | | { |
| | | // è§ä¾© æ©èºå¼ä¼ æ¦èªå
¶è¶é£å ComCtl32.dll æ»å 6 ææé è¤ä¾©çªå¯ åæå è¶é¸¥èé |
| | | // è¤ä¾©çªæ¡£åº ç¤æ²¥çªç»° çå¿«, Windows XP æä¿è¾ é¦éç« InitCommonControlsEx()å é夸é¦èªä¿. |
| | | // InitCommonControlsEx()ç« è¤ä¾©çªç¤ è¼æ æ èé ç¶ç¸ è ç»å¼èªä¿. |
| | | // è§ä¾© æ©èºå¼ä¼ æ¦èªå
¶è¶é£å ComCtl32.dll æ»å 6 ææé è¤ä¾©çªå¯ åæå è¶é¸¥èé |
| | | // è¤ä¾©çªæ¡£åº ç¤æ²¥çªç»° çå¿«, Windows XP æä¿è¾ é¦éç« InitCommonControlsEx()å é夸é¦èªä¿. |
| | | // InitCommonControlsEx()ç« è¤ä¾©çªç¤ è¼æ æ èé ç¶ç¸ è ç»å¼èªä¿. |
| | | INITCOMMONCONTROLSEX InitCtrls; |
| | | InitCtrls.dwSize = sizeof(InitCtrls); |
| | | // è§ä¾© æ©èºå¼ä¼ä¿è¾ è¤ä¾©ä¸ èçµ å侩 ç§é£è´¹ åªè´°è¶ç« å¨çªçªæ¡£åº |
| | | // æ äº²æ ¼é æ±²æ²¥çªç»ç«å·. |
| | | // è§ä¾© æ©èºå¼ä¼ä¿è¾ è¤ä¾©ä¸ èçµ å侩 ç§é£è´¹ åªè´°è¶ç« å¨çªçªæ¡£åº |
| | | // æ äº²æ ¼é æ±²æ²¥çªç»ç«å·. |
| | | InitCtrls.dwICC = ICC_WIN95_CLASSES; |
| | | InitCommonControlsEx(&InitCtrls); |
| | | |
| | |
| | | } |
| | | } |
| | | |
| | | // OLE æ¼æå®ç¾åºç« æª¬ææ³é¦èªä¿. |
| | | // OLE æ¼æå®ç¾åºç« æª¬ææ³é¦èªä¿. |
| | | if (!AfxOleInit()) |
| | | { |
| | | AfxMessageBox(IDP_OLE_INIT_FAILED); |
| | |
| | | |
| | | EnableTaskbarInteraction(FALSE); |
| | | |
| | | // RichEdit ç§é£è´¹é è¤ä¾©çªå¦¨æ AfxInitRichEdit2()å ä¹ç»¢å
· é¦èªä¿. |
| | | // RichEdit ç§é£è´¹é è¤ä¾©çªå¦¨æ AfxInitRichEdit2()å ä¹ç»¢å
· é¦èªä¿. |
| | | // AfxInitRichEdit2(); |
| | | |
| | | // éé æª¬ææ³ |
| | | // æç¸ æç·é è¤ä¾©çªç¤ è¼ç» å¼¥è¾ è§é é¢èç¼ åæç« 临æå¦¨æ |
| | | // é
è´°ä¿è¾ é夸 ç»ç»° æ¼æ²¥ æª¬ææ³ |
| | | // é£åé åè秦å
· é¦èªä¿. |
| | | // 秦寸 汲沥æ ååç é¥ç¤è¶é£åº èç« å½ççªç»ç«å·. |
| | | // TODO: æ å·©ç£å¯é éè¤ èç»° ç¼æµç¼ ææè é篮 |
| | | // å©ä¾è é´ä¾©æ èº èæ²¥ç§¦å
· é¦èªä¿. |
| | | SetRegistryKey(_T("èºæ¿ è§ä¾© æ©èºå¼ä¼ ä»è¿è¤ä¿è¾ 积己ç è§ä¾© æ©èºå¼ä¼")); |
| | | LoadStdProfileSettings(4); // MRUç« å¨çªçªå¯ éé INI é¢è å¯è®°é èºéé¦èªä¿. |
| | | // éé æª¬ææ³ |
| | | // æç¸ æç·é è¤ä¾©çªç¤ è¼ç» å¼¥è¾ è§é é¢èç¼ åæç« 临æå¦¨æ |
| | | // é
è´°ä¿è¾ é夸 ç»ç»° æ¼æ²¥ æª¬ææ³ |
| | | // é£åé åè秦å
· é¦èªä¿. |
| | | // 秦寸 汲沥æ ååç é¥ç¤è¶é£åº èç« å½ççªç»ç«å·. |
| | | // TODO: æ å·©ç£å¯é éè¤ èç»° ç¼æµç¼ ææè é篮 |
| | | // å©ä¾è é´ä¾©æ èº èæ²¥ç§¦å
· é¦èªä¿. |
| | | SetRegistryKey(_T("èºæ¿ è§ä¾© æ©èºå¼ä¼ ä»è¿è¤ä¿è¾ 积己ç è§ä¾© æ©èºå¼ä¼")); |
| | | LoadStdProfileSettings(4); // MRUç« å¨çªçªå¯ éé INI é¢è å¯è®°é èºéé¦èªä¿. |
| | | |
| | | if (NULL != g_pBase) |
| | | { |
| | |
| | | theApp.GetTooltipManager()->SetTooltipParams(AFX_TOOLTIP_TYPE_ALL, |
| | | RUNTIME_CLASS(CMFCToolTipCtrl), &ttParams); |
| | | |
| | | // è§ä¾© æ©èºå¼ä¼ç¼ å·©è¾ è¢æ²å¤é 殿åºé¦èªä¿. å·©è¾ è¢æ²å¤ç¯® |
| | | // å·©è¾, æ©é¥ç è æ£º è½° è¤æç¼ æ¥·æ¬ å¼ä¸é é¦èªä¿. |
| | | // è§ä¾© æ©èºå¼ä¼ç¼ å·©è¾ è¢æ²å¤é 殿åºé¦èªä¿. å·©è¾ è¢æ²å¤ç¯® |
| | | // å·©è¾, æ©é¥ç è æ£º è½° è¤æç¼ æ¥·æ¬ å¼ä¸é é¦èªä¿. |
| | | CSingleDocTemplate* pDocTemplate; |
| | | pDocTemplate = new CSingleDocTemplate( |
| | | IDR_MAINFRAME, |
| | | RUNTIME_CLASS(CEdgeInspector_AppDoc), |
| | | RUNTIME_CLASS(CMainFrame), // æ SDI æ©é¥ç èæ¶èªä¿. |
| | | RUNTIME_CLASS(CMainFrame), // æ SDI æ©é¥ç èæ¶èªä¿. |
| | | RUNTIME_CLASS(CEdgeInspector_AppView)); |
| | | if (!pDocTemplate) |
| | | return FALSE; |
| | | AddDocTemplate(pDocTemplate); |
| | | |
| | | |
| | | // éé 夹 çé£, DDE, é¢è å¯æä¿ æªè çé£ä¸´é å¤å·© çç±é¦èªä¿. |
| | | // éé 夹 çé£, DDE, é¢è å¯æä¿ æªè çé£ä¸´é å¤å·© çç±é¦èªä¿. |
| | | CCommandLineInfo cmdInfo; |
| | | ParseCommandLine(cmdInfo); |
| | | |
| | | |
| | | |
| | | // çé£ä¸´ä¿ ç¤æ²¥ç çé£é å¼è¶è©æ¹é¦èªä¿. |
| | | // è§ä¾© æ©èºå¼ä¼æ /RegServer, /Register, /Unregserver èç»° /Unregisterèº ç«ç´¯ç çå¿« FALSEç« é¦å¸é¦èªä¿. |
| | | // çé£ä¸´ä¿ ç¤æ²¥ç çé£é å¼è¶è©æ¹é¦èªä¿. |
| | | // è§ä¾© æ©èºå¼ä¼æ /RegServer, /Register, /Unregserver èç»° /Unregisterèº ç«ç´¯ç çå¿« FALSEç« é¦å¸é¦èªä¿. |
| | | if (!ProcessShellCommand(cmdInfo)) |
| | | return FALSE; |
| | | |
| | | // è çªå±ç¶ æª¬ææ³ç»èæ éª¨èº æç« éç«çªç» è¯åæé£é¦èªä¿. |
| | | // è çªå±ç¶ æª¬ææ³ç»èæ éª¨èº æç« éç«çªç» è¯åæé£é¦èªä¿. |
| | | m_pMainWnd->ShowWindow(SW_SHOW); |
| | | m_pMainWnd->UpdateWindow(); |
| | | // ç«åºè¤å ä¹é çå¿«ä¿ç¶ DragAcceptFilesç« é¾å
é¦èªä¿. |
| | | // SDI è§ä¾© æ©èºå¼ä¼ä¿è¾ç»° ProcessShellCommand é¥¶ä¿ æç¾è é¾å
æ æ¯ç§¯ç§¦å
· é¦èªä¿. |
| | | // ç«åºè¤å ä¹é çå¿«ä¿ç¶ DragAcceptFilesç« é¾å
é¦èªä¿. |
| | | // SDI è§ä¾© æ©èºå¼ä¼ä¿è¾ç»° ProcessShellCommand é¥¶ä¿ æç¾è é¾å
æ æ¯ç§¯ç§¦å
· é¦èªä¿. |
| | | |
| | | CMainFrame* pMain = static_cast<CMainFrame*>(AfxGetMainWnd()); |
| | | //pMain->SetDoc(static_cast<CAlignInspectionDoc*>(pMain->GetActiveDocument())); |
| | |
| | | |
| | | CloseHandle(m_hMutex); |
| | | |
| | | //TODO: ç åè ç å åºå®¶è¶ç« è´¸åºé¦èªä¿. |
| | | //TODO: ç åè ç å åºå®¶è¶ç« è´¸åºé¦èªä¿. |
| | | AfxOleTerm(FALSE); |
| | | |
| | | return CWinAppEx::ExitInstance(); |
| | | } |
| | | |
| | | // CEdgeInspector_App çç«ç¤ è´¸åºæ |
| | | // CEdgeInspector_App çç«ç¤ è´¸åºæ |
| | | |
| | | |
| | | // è§ä¾© æ©èºå¼ä¼ æ²¥çä¿ è¤ä¾©ç»ç»° CAboutDlg æªæ³ æç£æ¶èªä¿. |
| | | // è§ä¾© æ©èºå¼ä¼ æ²¥çä¿ è¤ä¾©ç»ç»° CAboutDlg æªæ³ æç£æ¶èªä¿. |
| | | |
| | | class CAboutDlg : public CDialogEx |
| | | { |
| | | public: |
| | | CAboutDlg(); |
| | | |
| | | // æªæ³ æç£ åæç£æ¶èªä¿. |
| | | // æªæ³ æç£ åæç£æ¶èªä¿. |
| | | enum { IDD = IDD_ABOUTBOX }; |
| | | |
| | | protected: |
| | | virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV ç¤çæ¶èªä¿. |
| | | virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV ç¤çæ¶èªä¿. |
| | | |
| | | // 夿³
æ¶èªä¿. |
| | | // 夿³
æ¶èªä¿. |
| | | protected: |
| | | DECLARE_MESSAGE_MAP() |
| | | }; |
| | |
| | | BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx) |
| | | END_MESSAGE_MAP() |
| | | |
| | | // æªæ³ æç£ç« è§éçªæ å°è è§ä¾© æ©èºå¼ä¼ ç飿¶èªä¿. |
| | | // æªæ³ æç£ç« è§éçªæ å°è è§ä¾© æ©èºå¼ä¼ ç飿¶èªä¿. |
| | | void CEdgeInspector_App::OnAppAbout() |
| | | { |
| | | CAboutDlg aboutDlg; |
| | | aboutDlg.DoModal(); |
| | | } |
| | | |
| | | // CEdgeInspector_App è¤ä¾©ç£ ç¤æ²¥ èºé/åå çè¾é |
| | | // CEdgeInspector_App è¤ä¾©ç£ ç¤æ²¥ èºé/åå çè¾é |
| | | |
| | | void CEdgeInspector_App::PreLoadState() |
| | | { |
| | |
| | | { |
| | | } |
| | | |
| | | // CEdgeInspector_App çç«ç¤ è´¸åºæ |
| | | // CEdgeInspector_App çç«ç¤ è´¸åºæ |
| | | |
| | | |
| | | |
| | |
| | | |
| | | // EdgeInspector_App.h : EdgeInspector_App è§ä¾© æ©èºå¼ä¼ä¿ æªè æ åºæ¹ é¢è |
| | |  |
| | | // EdgeInspector_App.h : EdgeInspector_App è§ä¾© æ©èºå¼ä¼ä¿ æªè æ åºæ¹ é¢è |
| | | // |
| | | #pragma once |
| | | |
| | | #ifndef __AFXWIN_H__ |
| | | #error "PCHä¿ æªç§¦ æ é¢èé å¨çªçªæ åä¿ 'stdafx.h'ç« å¨çªé¦èªä¿." |
| | | #error "PCHä¿ æªç§¦ æ é¢èé å¨çªçªæ åä¿ 'stdafx.h'ç« å¨çªé¦èªä¿." |
| | | #endif |
| | | |
| | | #include "resource.h" // æ æé¾æ¶èªä¿. |
| | | #include "resource.h" // æ æé¾æ¶èªä¿. |
| | | |
| | | |
| | | // CEdgeInspector_App: |
| | | // æ åªè´°è¶ç¼ 夿³
ä¿ æªç§¦è¾ç»° EdgeInspector_App.cppé æ¼ç¼çªç»ç«å·. |
| | | // æ åªè´°è¶ç¼ 夿³
ä¿ æªç§¦è¾ç»° EdgeInspector_App.cppé æ¼ç¼çªç»ç«å·. |
| | | // |
| | | |
| | | class CEdgeInspector_App : public CWinAppEx |
| | |
| | | |
| | | ULONG_PTR m_gdiplusToken; |
| | | BOOL m_bCreateBase; |
| | | BOOL m_bCreateLog; // è¾ä¸°ç« çåç« å°ç§¦. |
| | | BOOL m_bCreateLog; // è¾ä¸°ç« çåç« å°ç§¦. |
| | | HANDLE m_hMutex; |
| | | |
| | | // çæ²¥ç¼æ¶èªä¿. |
| | | // çæ²¥ç¼æ¶èªä¿. |
| | | public: |
| | | virtual BOOL InitInstance(); |
| | | virtual int ExitInstance(); |
| | | |
| | | // 夿³
æ¶èªä¿. |
| | | // 夿³
æ¶èªä¿. |
| | | UINT m_nAppLook; |
| | | BOOL m_bHiColorIcons; |
| | | |
| | |
| | | |
| | | // EdgeInspector_AppDoc.cpp : CEdgeInspector_AppDoc åªè´°è¶ç¼ 夿³
|
| | |  |
| | | // EdgeInspector_AppDoc.cpp : CEdgeInspector_AppDoc åªè´°è¶ç¼ 夿³
|
| | | // |
| | | |
| | | #include "stdafx.h" |
| | | // SHARED_HANDLERSç»° åºåº çæ, 绵家é å¼è¦ 棺 å
«ç¥¸ éç£ è´¸åºæç« å¤æ³
çªç»° ATL æ©èºçé£ä¿è¾ æ²¥ç¼ä¸ è 乿 å¥ |
| | | // 秦寸 æ©èºçé£å®¢ å·©è¾ å
éç« åè¡çªæ¡£åº 秦 åèªä¿. |
| | | // SHARED_HANDLERSç»° åºåº çæ, 绵家é å¼è¦ 棺 å
«ç¥¸ éç£ è´¸åºæç« å¤æ³
çªç»° ATL æ©èºçé£ä¿è¾ æ²¥ç¼ä¸ è 乿 å¥ |
| | | // 秦寸 æ©èºçé£å®¢ å·©è¾ å
éç« åè¡çªæ¡£åº 秦 åèªä¿. |
| | | #ifndef SHARED_HANDLERS |
| | | #include "EdgeInspector_App.h" |
| | | #endif |
| | |
| | | END_MESSAGE_MAP() |
| | | |
| | | |
| | | // CEdgeInspector_AppDoc 积己/å®¶æ |
| | | // CEdgeInspector_AppDoc 积己/å®¶æ |
| | | |
| | | CEdgeInspector_AppDoc::CEdgeInspector_AppDoc() |
| | | { |
| | | // TODO: å¯æä¿ èéå·± 积己 å
éç« ç åé¦èªä¿. |
| | | // TODO: å¯æä¿ èéå·± 积己 å
éç« ç åé¦èªä¿. |
| | | |
| | | } |
| | | |
| | |
| | | if (!CDocument::OnNewDocument()) |
| | | return FALSE; |
| | | |
| | | // TODO: å¯æä¿ çæª¬ææ³ å
éç« ç åé¦èªä¿. |
| | | // SDI å·©è¾ç»° æ å·©è¾ç« ä¿ç« è¤ä¾©é¦èªä¿. |
| | | // TODO: å¯æä¿ çæª¬ææ³ å
éç« ç åé¦èªä¿. |
| | | // SDI å·©è¾ç»° æ å·©è¾ç« ä¿ç« è¤ä¾©é¦èªä¿. |
| | | |
| | | return TRUE; |
| | | } |
| | |
| | | { |
| | | if (ar.IsStoring()) |
| | | { |
| | | // TODO: å¯æä¿ åå å
éç« ç åé¦èªä¿. |
| | | // TODO: å¯æä¿ åå å
éç« ç åé¦èªä¿. |
| | | } |
| | | else |
| | | { |
| | | // TODO: å¯æä¿ èºç¹ å
éç« ç åé¦èªä¿. |
| | | // TODO: å¯æä¿ èºç¹ å
éç« ç åé¦èªä¿. |
| | | } |
| | | } |
| | | |
| | | #ifdef SHARED_HANDLERS |
| | | |
| | | // 绵家é å¼è¦é ç¤çé¦èªä¿. |
| | | // 绵家é å¼è¦é ç¤çé¦èªä¿. |
| | | void CEdgeInspector_AppDoc::OnDrawThumbnail(CDC& dc, LPRECT lprcBounds) |
| | | { |
| | | // å·©è¾ç¼ åæç£ç« å¼åºå¦¨æ æ å
éç« èæ²¥çªç»ç«å·. |
| | | // å·©è¾ç¼ åæç£ç« å¼åºå¦¨æ æ å
éç« èæ²¥çªç»ç«å·. |
| | | dc.FillSolidRect(lprcBounds, RGB(255, 255, 255)); |
| | | |
| | | CString strText = _T("TODO: implement thumbnail drawing here"); |
| | |
| | | dc.SelectObject(pOldFont); |
| | | } |
| | | |
| | | // å
«ç¥¸ è´¸åºæç« ç¤çé¦èªä¿. |
| | | // å
«ç¥¸ è´¸åºæç« ç¤çé¦èªä¿. |
| | | void CEdgeInspector_AppDoc::InitializeSearchContent() |
| | | { |
| | | CString strSearchContent; |
| | | // å·©è¾ç¼ åæç£ä¿è¾ å
«ç¥¸ è½å¨æç« 汲沥é¦èªä¿. |
| | | // è½å¨æ ä½ç篮 ";"èº å¤çç»ç»¢å
· é¦èªä¿. |
| | | // å·©è¾ç¼ åæç£ä¿è¾ å
«ç¥¸ è½å¨æç« 汲沥é¦èªä¿. |
| | | // è½å¨æ ä½ç篮 ";"èº å¤çç»ç»¢å
· é¦èªä¿. |
| | | |
| | | // æ: strSearchContent = _T("point;rectangle;circle;ole object;"); |
| | | // æ: strSearchContent = _T("point;rectangle;circle;ole object;"); |
| | | SetSearchContent(strSearchContent); |
| | | } |
| | | |
| | |
| | | |
| | | #endif // SHARED_HANDLERS |
| | | |
| | | // CEdgeInspector_AppDoc æ³çª |
| | | // CEdgeInspector_AppDoc æ³çª |
| | | |
| | | #ifdef _DEBUG |
| | | void CEdgeInspector_AppDoc::AssertValid() const |
| | |
| | | #endif //_DEBUG |
| | | |
| | | |
| | | // CEdgeInspector_AppDoc çé£ |
| | | // CEdgeInspector_AppDoc çé£ |
| | |
| | | |
| | | // EdgeInspector_AppDoc.h : CEdgeInspector_AppDoc åªè´°è¶ç¼ ç¢ç£å
¶æè¶ |
| | |  |
| | | // EdgeInspector_AppDoc.h : CEdgeInspector_AppDoc åªè´°è¶ç¼ ç¢ç£å
¶æè¶ |
| | | // |
| | | |
| | | |
| | |
| | | |
| | | class CEdgeInspector_AppDoc : public CDocument |
| | | { |
| | | protected: // serializationä¿è¾ç¶ ç¶ç¸ç»¢ç¬¼èªä¿. |
| | | protected: // serializationä¿è¾ç¶ ç¶ç¸ç»¢ç¬¼èªä¿. |
| | | CEdgeInspector_AppDoc(); |
| | | DECLARE_DYNCREATE(CEdgeInspector_AppDoc) |
| | | |
| | | // æ¼å·±æ¶èªä¿. |
| | | // æ¼å·±æ¶èªä¿. |
| | | public: |
| | | |
| | | // ç´¯è¯æ¶èªä¿. |
| | | // ç´¯è¯æ¶èªä¿. |
| | | public: |
| | | |
| | | // çæ²¥ç¼æ¶èªä¿. |
| | | // çæ²¥ç¼æ¶èªä¿. |
| | | public: |
| | | virtual BOOL OnNewDocument(); |
| | | virtual void Serialize(CArchive& ar); |
| | |
| | | virtual void OnDrawThumbnail(CDC& dc, LPRECT lprcBounds); |
| | | #endif // SHARED_HANDLERS |
| | | |
| | | // 夿³
æ¶èªä¿. |
| | | // 夿³
æ¶èªä¿. |
| | | public: |
| | | virtual ~CEdgeInspector_AppDoc(); |
| | | #ifdef _DEBUG |
| | |
| | | |
| | | protected: |
| | | |
| | | // 积己ç çç«ç¤ ç çªè |
| | | // 积己ç çç«ç¤ ç çªè |
| | | protected: |
| | | DECLARE_MESSAGE_MAP() |
| | | |
| | | #ifdef SHARED_HANDLERS |
| | | // å
«ç¥¸ è´¸åºæä¿ æªè å
«ç¥¸ è½å¨æç« 汲沥çªç»° æ¡£å¿«åº çªè |
| | | // å
«ç¥¸ è´¸åºæä¿ æªè å
«ç¥¸ è½å¨æç« 汲沥çªç»° æ¡£å¿«åº çªè |
| | | void SetSearchContent(const CString& value); |
| | | #endif // SHARED_HANDLERS |
| | | }; |
| | |
| | | |
| | | // EdgeInspector_AppView.cpp : CEdgeInspector_AppView åªè´°è¶ç¼ 夿³
|
| | |  |
| | | // EdgeInspector_AppView.cpp : CEdgeInspector_AppView åªè´°è¶ç¼ 夿³
|
| | | // |
| | | |
| | | #include "stdafx.h" |
| | |
| | | |
| | | |
| | | // CEdgeInspector_AppView |
| | | // CEdgeInspector_AppView 积己/å®¶æ |
| | | // CEdgeInspector_AppView 积己/å®¶æ |
| | | |
| | | IMPLEMENT_DYNCREATE(CEdgeInspector_AppView, CFormView) |
| | | |
| | |
| | | |
| | | BOOL CEdgeInspector_AppView::PreCreateWindow(CREATESTRUCT& cs) |
| | | { |
| | | // TODO: CREATESTRUCT csç« èæ²¥çªå¯ 坿ä¿è¾ |
| | | // Window åªè´°è¶ èç»° è¶é¸¥èé èæ²¥é¦èªä¿. |
| | | // TODO: CREATESTRUCT csç« èæ²¥çªå¯ 坿ä¿è¾ |
| | | // Window åªè´°è¶ èç»° è¶é¸¥èé èæ²¥é¦èªä¿. |
| | | |
| | | return CFormView::PreCreateWindow(cs); |
| | | } |
| | | |
| | | // CEdgeInspector_AppView æ³çª |
| | | // CEdgeInspector_AppView æ³çª |
| | | |
| | | void CEdgeInspector_AppView::DoDataExchange(CDataExchange* pDX) |
| | | { |
| | |
| | | ON_EVENT(CEdgeInspector_AppView, IDC_BTN_MAIN_EXIT, DISPID_CLICK, CEdgeInspector_AppView::ClickMenuButton, VTS_NONE) |
| | | END_EVENTSINK_MAP() |
| | | |
| | | // CEdgeInspector_AppView çç«ç¤ è´¸åºæ |
| | | // CEdgeInspector_AppView çç«ç¤ è´¸åºæ |
| | | |
| | | void CEdgeInspector_AppView::CreateChildView() |
| | | { |
| | |
| | | |
| | |  |
| | | #pragma once |
| | | |
| | | #include "btnenh.h" |
| | |
| | | public: |
| | | enum{ IDD = IDD_MAIN_VIEW }; |
| | | |
| | | // çæ²¥ç¼æ¶èªä¿. |
| | | // çæ²¥ç¼æ¶èªä¿. |
| | | public: |
| | | virtual BOOL PreCreateWindow(CREATESTRUCT& cs); |
| | | virtual void DoDataExchange(CDataExchange* pDX); |
| | |
| | | #include "StdAfx.h" |
| | | #include "StdAfx.h" |
| | | #include "CHDataFitting.h" |
| | | |
| | | #include <algorithm> |
| | |
| | | #pragma once |
| | | #pragma once |
| | | |
| | | #include <vector> |
| | | typedef std::vector<double> VectorDouble; |
| | |
| | | #include "StdAfx.h" |
| | | #include "StdAfx.h" |
| | | #include "MulticamControl.h" |
| | | #include "Global_Define.h" |
| | | #include "FrameBufferController.h" |
| | |
| | | if (nYStart + nYSize > nBufSizeY* GetEndFrameIdx()) |
| | | return FALSE; |
| | | |
| | | // ç«ç´¯ æ©é¥ç é
é¾å®¢ åº æ©é¥ç é
é¾. |
| | | // ç«ç´¯ æ©é¥ç é
é¾å®¢ åº æ©é¥ç é
é¾. |
| | | int nStartFrameNo = nYStart / nBufSizeY; |
| | | int nEndFrameNo = (nYStart + nYSize) / nBufSizeY; |
| | | LPBYTE lpHeadAddr = GetFrameHeader(iScan,nStartFrameNo); |
| | |
| | | memcpy(lpIn + i * nXSize, lpStart + nLine * nBufSizeX, nXSize); |
| | | if (nStartFrameNo <= nEndFrameNo && (nYStart + i + 1) % nBufSizeY == 0) |
| | | { |
| | | // æåºç¤ç« è¶é´å
·çªç»° åº·å¼æ MemFrameNo çæä¿ å§åªä¹ç»° çå¿« è´¸åº. |
| | | // æåºç¤ç« è¶é´å
·çªç»° åº·å¼æ MemFrameNo çæä¿ å§åªä¹ç»° çå¿« è´¸åº. |
| | | lpHeadAddr = GetFrameHeader(iScan,++nStartFrameNo); |
| | | lpStart = lpHeadAddr + nXStart; |
| | | nLine = 0; |
| | |
| | | return FALSE; |
| | | } |
| | | |
| | | if(m_isLiveGrab == TRUE) // Live Grab ç«. |
| | | if(m_isLiveGrab == TRUE) // Live Grab ç«. |
| | | { |
| | | m_nSetBufferIdx = 0; |
| | | |
| | |
| | | int buffer_pitch_value; |
| | | driver_status |= McGetParamInt(m_hGrabChannel, MC_BufferPitch, &buffer_pitch_value); |
| | | |
| | | ///// Time out 5 檬.... |
| | | ///// Time out 5 檬.... |
| | | driver_status |= McSetParamInt(m_hGrabChannel, MC_AcqTimeout_ms, -1); |
| | | |
| | | driver_status |= McSetParamInt(m_hGrabChannel, MC_SurfaceCount, 25); |
| | |
| | | |
| | |  |
| | | #pragma once |
| | | |
| | | #include "GrabberControl.h" |
| | |
| | | public: |
| | | ////////////////////////////////////////////////////////////////////////// |
| | | // Initialization |
| | | virtual BOOL Initialize(void *pParam, int *pErrorCode,int iBoard=0); // Grabber æª¬ææ³ |
| | | virtual BOOL Initialize(void *pParam, int *pErrorCode,int iBoard=0); // Grabber æª¬ææ³ |
| | | virtual BOOL InitializeBuffer(void *pParam); |
| | | ////////////////////////////////////////////////////////////////////////// |
| | | // Deinit |
| | |
| | | |
| | | public: |
| | | _GRABBER_INIT_PARAM_ m_Param; |
| | | int m_nEndFrameIdx; // æ³
ç Grab è è |
| | | int m_nStartFrameIdx; // åå å·è´°åä¿ Grabè Frameç¼ ç¢é¸è¶. |
| | | int m_nEndFrameIdx; // æ³
ç Grab è è |
| | | int m_nStartFrameIdx; // åå å·è´°åä¿ Grabè Frameç¼ ç¢é¸è¶. |
| | | int m_nSetBufferIdx; |
| | | int m_nScanIndex; |
| | | int m_nBoardID; |
| | |
| | | #include "StdAfx.h" |
| | | #include "StdAfx.h" |
| | | #include "RadientControl.h" |
| | | #include "FrameBufferController.h" |
| | | |
| | |
| | | if (nYStart + nYSize > nBufSizeY* GetEndFrameIdx()) |
| | | return FALSE; |
| | | |
| | | // ç«ç´¯ æ©é¥ç é
é¾å®¢ åº æ©é¥ç é
é¾. |
| | | // ç«ç´¯ æ©é¥ç é
é¾å®¢ åº æ©é¥ç é
é¾. |
| | | int nStartFrameNo = nYStart / nBufSizeY; |
| | | int nEndFrameNo = (nYStart + nYSize) / nBufSizeY; |
| | | LPBYTE lpHeadAddr = GetFrameHeader(iScan,nStartFrameNo); |
| | |
| | | memcpy(lpIn + i * nXSize, lpStart + nLine * nBufSizeX, nXSize); |
| | | if (nStartFrameNo <= nEndFrameNo && (nYStart + i + 1) % nBufSizeY == 0) |
| | | { |
| | | // æåºç¤ç« è¶é´å
·çªç»° åº·å¼æ MemFrameNo çæä¿ å§åªä¹ç»° çå¿« è´¸åº. |
| | | // æåºç¤ç« è¶é´å
·çªç»° åº·å¼æ MemFrameNo çæä¿ å§åªä¹ç»° çå¿« è´¸åº. |
| | | lpHeadAddr = GetFrameHeader(iScan,++nStartFrameNo); |
| | | lpStart = lpHeadAddr + nXStart; |
| | | nLine = 0; |
| | |
| | | |
| | | CGrabberRadient *pRadient = (CGrabberRadient*)HookDataPtr; |
| | | |
| | | if(pRadient->m_isLiveGrab == TRUE) // Live Grab ç«. |
| | | if(pRadient->m_isLiveGrab == TRUE) // Live Grab ç«. |
| | | { |
| | | pRadient->m_nSetBufferIdx = 0; |
| | | |
| | |
| | | /* |
| | | MdigControl(m_MilDigitizer, M_CAMERALINK_CC1_SOURCE, M_GRAB_EXPOSURE+M_TIMER1); |
| | | MdigControl(m_MilDigitizer, M_GRAB_EXPOSURE+M_TIMER1, M_ENABLE); |
| | | MdigControl(m_MilDigitizer, M_GRAB_EXPOSURE_SOURCE+M_TIMER1, M_CONTINUOUS); // Periodic èé¾ ç¢å |
| | | MdigControl(m_MilDigitizer, M_GRAB_EXPOSURE_SOURCE+M_TIMER1, M_CONTINUOUS); // Periodic èé¾ ç¢å |
| | | MdigControl(m_MilDigitizer, M_GRAB_EXPOSURE_TIME+M_TIMER1, nExposureTimer); //10000ns |
| | | MdigControl(m_MilDigitizer, M_GRAB_EXPOSURE_TIME_DELAY+M_TIMER1, nExposureTimerDelay); //10000ns |
| | | */ |
| | |
| | | |
| | |  |
| | | #pragma once |
| | | |
| | | #include "Global_Define.h" |
| | |
| | | public: |
| | | ////////////////////////////////////////////////////////////////////////// |
| | | // Initialization |
| | | virtual BOOL Initialize(void *pParam, int *pErrorCode,int iBoard=0); // Grabber æª¬ææ³ |
| | | virtual BOOL Initialize(void *pParam, int *pErrorCode,int iBoard=0); // Grabber æª¬ææ³ |
| | | virtual BOOL InitializeBuffer(void *pParam); |
| | | ////////////////////////////////////////////////////////////////////////// |
| | | // Deinit |
| | |
| | | public: |
| | | _GRABBER_INIT_PARAM_ m_Param; |
| | | |
| | | MIL_ID m_MilSystem; // çé寸 1å½è |
| | | MIL_ID m_MilDigitizer; // å¢¨çæ¼ å½è |
| | | MIL_ID m_MilSystem; // çé寸 1å½è |
| | | MIL_ID m_MilDigitizer; // å¢¨çæ¼ å½è |
| | | MIL_ID m_Milbufgrab[BUFFERING_SIZE_MAX]; |
| | | DIGSTATUS m_DigitizerStatus; |
| | | long m_lBord; |
| | |
| | | |
| | | CCriticalSection m_critical; |
| | | |
| | | int m_nEndFrameIdx; // æ³
ç Grab è è |
| | | int m_nStartFrameIdx; // åå å·è´°åä¿ Grabè Frameç¼ ç¢é¸è¶. |
| | | int m_nEndFrameIdx; // æ³
ç Grab è è |
| | | int m_nStartFrameIdx; // åå å·è´°åä¿ Grabè Frameç¼ ç¢é¸è¶. |
| | | int m_nSetBufferIdx; |
| | | int m_nScanIndex; |
| | | int m_nAllocatedGrabBufSize; |
| | |
| | | #include "StdAfx.h" |
| | | #include "StdAfx.h" |
| | | #include "SapControl.h" |
| | | |
| | | #define FRAME_HEAD_MARKER 0x55AAFF00 |
| | |
| | | |
| | | BOOL CSapControl::CreateXfer() |
| | | { |
| | | // Xferå¤ç¸ 积己 |
| | | // Xferå¤ç¸ 积己 |
| | | if (DisplayStatus("CorXferNew", CorXferNew(m_hBoard, m_hAcq, *m_hBuffer, NULL, &m_hXfer))) |
| | | return FALSE; |
| | | |
| | |
| | | xfer_desc.incByte = m_Param.nFrameWidth; |
| | | |
| | | #ifdef FRAME_CALLBACK |
| | | // å¦®å½ çªè æ®¿åº |
| | | // å¦®å½ çªè æ®¿åº |
| | | if (DisplayStatus("CorXferRegisterCallback" |
| | | , CorXferRegisterCallback(m_hXfer |
| | | , CORXFER_VAL_EVENT_TYPE_END_OF_FRAME |
| | | , XferCallback, (void*)this))) |
| | | #else |
| | | // å¦®å½ çªè æ®¿åº |
| | | // å¦®å½ çªè æ®¿åº |
| | | if (DisplayStatus("CorXferRegisterCallback" |
| | | , CorXferRegisterCallback(m_hXfer |
| | | , CORXFER_VAL_EVENT_TYPE_END_OF_NLINES + m_Param.nFrameHeight |
| | |
| | | if (DisplayStatus("CorXferAppend", CorXferAppend(m_hXfer, m_hAcq, m_hBuffer[i], NULL))) |
| | | return FALSE; |
| | | |
| | | // å¦®å½ çªè æ®¿åº |
| | | // å¦®å½ çªè æ®¿åº |
| | | if (DisplayStatus("CorXferRegisterCallback" |
| | | , CorXferRegisterCallback(m_hXfer |
| | | , CORXFER_VAL_EVENT_TYPE_END_OF_FRAME |
| | |
| | | return FALSE; |
| | | |
| | | ////////////////////////////////////////////////////////////////////////// |
| | | // Buffer ä¸å¯¸ |
| | | // Buffer ä¸å¯¸ |
| | | CORSTATUS st; |
| | | int i; |
| | | SIZE_T tempBufferSize= m_Param.nGrabBufSize; |
| | |
| | | |
| | | for (i = 0; i <nBufferrCount; i++) |
| | | { |
| | | // Memory Address ä¸å¯¸. |
| | | // Memory Address ä¸å¯¸. |
| | | m_pX64Buffer[i] = (void*)(m_pOneLargeBuffer+ nBufferSize*i); |
| | | if (m_pX64Buffer[i]) |
| | | { |
| | |
| | | if (DisplayStatus("CorAcqSetPrms", CorAcqSetPrms(m_hAcq, m_hVic, m_hCam, TRUE))) |
| | | return FALSE; |
| | | |
| | | // èç¬¼ä¸ åº·æç¼ åæ ç å
|
| | | // èç¬¼ä¸ åº·æç¼ åæ ç å
|
| | | // if (DisplayStatus("CorAcqGetPrm", CorAcqGetPrm(m_hAcq, CORACQ_PRM_SCALE_HORZ, &g_pBase->m_nFrameWidth))) |
| | | // return FALSE; |
| | | |
| | |
| | | |
| | | if(bFreeRun == FALSE) |
| | | { |
| | | // æ¼æ 康æç¬ç çå¿« |
| | | // æ¼æ 康æç¬ç çå¿« |
| | | if( DisplayStatus( "CorAcqSetPrm", CorAcqSetPrm(m_hAcq, CORACQ_PRM_EXT_FRAME_TRIGGER_ENABLE, TRUE))) |
| | | return FALSE; |
| | | |
| | |
| | | { |
| | | g_pLog->DisplayMessage(L"StopAcq : Grab %d, End %d", m_nSetBufferIdx, m_nEndFrameIdx); |
| | | |
| | | //20141022 yjm abort èº çªæ ä¿æ¾ å¼ä¹ç« ç£æçéå æ¡ç»¢æ»èµ´ä¿. ç使³¼ç¶ ç¹çª..æªå¹¿ 俺ç»ç§¯ã±ã±ã |
| | | //20141022 yjm abort èº çªæ ä¿æ¾ å¼ä¹ç« ç£æçéå æ¡ç»¢æ»èµ´ä¿. ç使³¼ç¶ ç¹çª..æªå¹¿ 俺ç»ç§¯ã±ã±ã |
| | | if (DisplayStatus("CorXferStop", CorXferStop(m_hXfer)))//if (DisplayStatus("CorXferStop", CorXferAbort(m_hXfer))) |
| | | { |
| | | g_pLog->DisplayMessage(L"CorXferAbort Fail. Grab %d, End %d", m_nSetBufferIdx, m_nEndFrameIdx); |
| | |
| | | if (nYStart + nYSize > nBufSizeY* GetEndFrameIdx()) |
| | | return FALSE; |
| | | |
| | | // ç«ç´¯ æ©é¥ç é
é¾å®¢ åº æ©é¥ç é
é¾. |
| | | // ç«ç´¯ æ©é¥ç é
é¾å®¢ åº æ©é¥ç é
é¾. |
| | | int nStartFrameNo = nYStart / nBufSizeY; |
| | | int nEndFrameNo = (nYStart + nYSize) / nBufSizeY; |
| | | LPBYTE lpHeadAddr = GetFrameHeader(iScan,nStartFrameNo); |
| | |
| | | memcpy(lpIn + i * nXSize, lpStart + nLine * nBufSizeX, nXSize); |
| | | if (nStartFrameNo <= nEndFrameNo && (nYStart + i + 1) % nBufSizeY == 0) |
| | | { |
| | | // æåºç¤ç« è¶é´å
·çªç»° åº·å¼æ MemFrameNo çæä¿ å§åªä¹ç»° çå¿« è´¸åº. |
| | | // æåºç¤ç« è¶é´å
·çªç»° åº·å¼æ MemFrameNo çæä¿ å§åªä¹ç»° çå¿« è´¸åº. |
| | | lpHeadAddr = GetFrameHeader(iScan,++nStartFrameNo); |
| | | lpStart = lpHeadAddr + nXStart; |
| | | nLine = 0; |
| | |
| | | { |
| | | LPBYTE lpBuffer = NULL; |
| | | |
| | | // æåºç¤ç« å篮 婿 ç»ç»° çå¿«ç»° æ»æ¬ºç« åºçèä¿. |
| | | // æåºç¤ç« å篮 婿 ç»ç»° çå¿«ç»° æ»æ¬ºç« åºçèä¿. |
| | | if (m_nStartFrameIdx == 0 && m_nEndFrameIdx == 0) |
| | | { |
| | | if (nFrameNo >= 0 && nFrameNo < g_pBase->m_pMemFrameNo[m_Param.nCameraIdx]) |
| | |
| | | else |
| | | lpBuffer = NULL; |
| | | } |
| | | else // æåºç¤ç« å篮 çå¿«ç»° Frame Noç« ç¬ç¢çªå¯ æ»æ¬ºç« åºçèä¿. |
| | | else // æåºç¤ç« å篮 çå¿«ç»° Frame Noç« ç¬ç¢çªå¯ æ»æ¬ºç« åºçèä¿. |
| | | { |
| | | if (nFrameNo >= m_nStartFrameIdx && nFrameNo < m_nEndFrameIdx) |
| | | { |
| | |
| | | #pragma once |
| | | #pragma once |
| | | |
| | | #include "Global_Define.h" |
| | | #include "GrabberControl.h" |
| | |
| | | virtual ~CSapControl(void); |
| | | |
| | | public: |
| | | virtual BOOL Initialize(void *pParam, int *pErrorCode,int iBoard=0); // Grabber æª¬ææ³ |
| | | virtual BOOL Initialize(void *pParam, int *pErrorCode,int iBoard=0); // Grabber æª¬ææ³ |
| | | virtual BOOL InitializeBuffer(void *pParam); |
| | | virtual BOOL Deinitialize(); |
| | | virtual BOOL GrabScanStart(int iScan, BOOL bFreeRun, int nPeriod, int nExposure=10, BOOL bAuto=TRUE); |
| | |
| | | |
| | | protected: |
| | | _GRABBER_INIT_PARAM_ m_Param; |
| | | int m_nEndFrameIdx; // æ³
ç Grab è è |
| | | int m_nStartFrameIdx; // åå å·è´°åä¿ Grabè Frameç¼ ç¢é¸è¶. |
| | | int m_nEndFrameIdx; // æ³
ç Grab è è |
| | | int m_nStartFrameIdx; // åå å·è´°åä¿ Grabè Frameç¼ ç¢é¸è¶. |
| | | int m_nSetBufferIdx; |
| | | int m_nScanIndex; |
| | | int m_nAllocatedGrabBufSize; |
| | |
| | | CCriticalSection m_csIdxLock; |
| | | |
| | | BYTE* m_pOneLargeBuffer; |
| | | void* m_pX64Buffer[MAX_BUFFER_COUNT]; // è§å ä¸å¯¸çª æ»æ¬º. |
| | | void* m_pX64Buffer[MAX_BUFFER_COUNT]; // è§å ä¸å¯¸çª æ»æ¬º. |
| | | CORBUFFER m_hBuffer[MAX_BUFFER_COUNT]; // Handle to Buffer module where acquisition will take place |
| | | CORBUFFER m_hFrame[MAX_FRAME_COUNT]; |
| | | BOOL m_bIsGrabbing; // Grabbing åç¢ç¤ é
å±ç¤ éçª. |
| | | BOOL m_bIsGrabbing; // Grabbing åç¢ç¤ é
å±ç¤ éçª. |
| | | |
| | | CORSERVER m_hPC; // Handle to a PC Sapera server |
| | | CORSERVER m_hBoard; // Handle to Sapera server that will be acquiring |
| | |
| | | |
| | |  |
| | | #include "StdAfx.h" |
| | | #include "SapLineGrab.h" |
| | | |
| | |
| | | return INITX64_FAIL_CREATEBUFFER; |
| | | |
| | | if(ActivateObjects() == FALSE) |
| | | return INITX64_FAIL_CREATEXFER;// ??? è´§èºæ¬¾ define æ¥æ« é夸 |
| | | return INITX64_FAIL_CREATEXFER;// ??? è´§èºæ¬¾ define æ¥æ« é夸 |
| | | |
| | | m_pXfer->Connect(); |
| | | m_pXfer->SetAutoConnect(TRUE); |
| | |
| | | |
| | | |
| | | //////////////////////////////////////////////////////////////////////////////////////////////////////////// |
| | | // Process侩 æ»æ¬º 积己 |
| | | // Process侩 æ»æ¬º 积己 |
| | | |
| | | // 1. Memory Virtual Alloc |
| | | |
| | |
| | | |
| | | LPBYTE CSapLineGrab::GetGrabFrameHeader(int nFrameNo, BOOL* bRet) |
| | | { |
| | | // æåºç¤ç« å篮 婿 ç»ç»° çå¿«ç»° æ»æ¬ºç« åºçèä¿. |
| | | // æåºç¤ç« å篮 婿 ç»ç»° çå¿«ç»° æ»æ¬ºç« åºçèä¿. |
| | | LPBYTE pBuff= NULL; |
| | | if(nFrameNo > m_nSetBufferIdx) return NULL; |
| | | |
| | |
| | | else |
| | | lpBuffer = NULL; |
| | | } |
| | | else // æåºç¤ç« å篮 çå¿«ç»° Frame Noç« ç¬ç¢çªå¯ æ»æ¬ºç« åºçèä¿. |
| | | else // æåºç¤ç« å篮 çå¿«ç»° Frame Noç« ç¬ç¢çªå¯ æ»æ¬ºç« åºçèä¿. |
| | | { |
| | | if (bRet) |
| | | *bRet = TRUE; |
| | |
| | | |
| | | if (bGrabbing == FALSE) |
| | | { |
| | | // Snap ç飿 åæ å± Callback çªèå é¾å
ç»ç¤ è¼ç¯® çå¿« Abort() é¾å
-> Callback çªèå é¾å
ç»ç¤ è¼æ æ Freeze()èºç»° Snap è¾ä¸°å æçä¿. |
| | | // Snap ç飿 åæ å± Callback çªèå é¾å
ç»ç¤ è¼ç¯® çå¿« Abort() é¾å
-> Callback çªèå é¾å
ç»ç¤ è¼æ æ Freeze()èºç»° Snap è¾ä¸°å æçä¿. |
| | | g_pLog->DisplayMessage(_T("Stop Acq Case 1-1 Not Grabbing")); |
| | | if(m_bSnapStart == TRUE && m_bXferCall == FALSE) |
| | | { |
| | |
| | | } |
| | | else |
| | | { |
| | | // Callback çªèå é¾å
ç çå¿«ç»° Freeze() é¾å
|
| | | // Callback çªèå é¾å
ç çå¿«ç»° Freeze() é¾å
|
| | | //g_pLog->DisplayMessage(TRUE, "Stop Acq Case 2-1"); |
| | | if(m_bXferCall) |
| | | { |
| | |
| | | } |
| | | |
| | | /* |
| | | // ç«ç´¯ æ©é¥ç é
é¾å®¢ åº æ©é¥ç é
é¾. |
| | | // ç«ç´¯ æ©é¥ç é
é¾å®¢ åº æ©é¥ç é
é¾. |
| | | int nStartFrameNo = nYStart / nBufSizeY; |
| | | int nEndFrameNo = (nYStart + nYSize) / nBufSizeY; |
| | | LPBYTE lpHeadAddr = GetFrameHeader(iScan,nStartFrameNo); |
| | |
| | | memcpy(lpIn + i * nXSize, lpStart + nLine * nBufSizeX, nXSize); |
| | | if (nStartFrameNo <= nEndFrameNo && (nYStart + i + 1) % nBufSizeY == 0) |
| | | { |
| | | // æåºç¤ç« è¶é´å
·çªç»° åº·å¼æ MemFrameNo çæä¿ å§åªä¹ç»° çå¿« è´¸åº. |
| | | // æåºç¤ç« è¶é´å
·çªç»° åº·å¼æ MemFrameNo çæä¿ å§åªä¹ç»° çå¿« è´¸åº. |
| | | lpHeadAddr = GetFrameHeader(iScan,++nStartFrameNo); |
| | | lpStart = lpHeadAddr + nXStart; |
| | | nLine = 0; |
| | |
| | | #pragma once |
| | | #pragma once |
| | | |
| | | #include "StdAfx.h" |
| | | #include "sapclassbasic.h" |
| | |
| | | virtual ~CSapLineGrab(void); |
| | | |
| | | public: |
| | | virtual BOOL Initialize(void *pParam, int *pErrorCode,int iBoard=0); // Grabber æª¬ææ³ |
| | | virtual BOOL Initialize(void *pParam, int *pErrorCode,int iBoard=0); // Grabber æª¬ææ³ |
| | | virtual BOOL InitializeBuffer(void *pParam); |
| | | virtual BOOL Deinitialize(); |
| | | virtual BOOL GrabScanStart(int iScan, BOOL bFreeRun, int nPeriod, int nExposure=10, BOOL bAuto=TRUE); |
| | | virtual BOOL GrabLiveStart(int nExposure=15); |
| | | virtual BOOL GrabScanStop(); |
| | | virtual BOOL IsGrabbing(); |
| | | virtual int IsAcqFrame(int nFrameNo, int nThreadIdx = -1); // Return 0 - é
æµ æåæ¾, Return -1 - ç¤åµ, Return 1 - æ²¥æ |
| | | virtual int IsAcqFrame(int nFrameNo, int nThreadIdx = -1); // Return 0 - é
æµ æåæ¾, Return -1 - ç¤åµ, Return 1 - æ²¥æ |
| | | virtual LPBYTE GetFrameHeader(int iScan,int nFrameNo, BOOL* bSuccess = NULL); |
| | | virtual LPBYTE GetFrameHeaderLine(int iScan,int nLine, BOOL* bSuccess = NULL); |
| | | virtual BOOL GetSmallImage(int iScan,LPBYTE lpIn, int nXStart, int nYStart, int nXSize, int nYSize, BOOL bMustMapping = TRUE); |
| | |
| | | SapBuffer *m_pSapBuffers; |
| | | SapTransfer *m_pXfer; |
| | | SapView *View; |
| | | int m_nGrabFrameNo; // ç«ç´¯æ¥è å
«è¤ä¸ æ©é¥ç èä¿è¾ æéç è§å åç»° æ©é¥ç è. |
| | | int m_nGrabFrameNo; // ç«ç´¯æ¥è å
«è¤ä¸ æ©é¥ç èä¿è¾ æéç è§å åç»° æ©é¥ç è. |
| | | _GRABBER_INIT_PARAM_ m_Param; |
| | | int m_nBoardID; |
| | | int m_nAllocatedGrabBufSize; |
| | | int m_cxferCall; // Xfercallbackæ é¾å
ç 墨款é£. |
| | | int m_cxferCall; // Xfercallbackæ é¾å
ç 墨款é£. |
| | | int m_nScanIndex; |
| | | dqGrabIdx m_dqCallbackFrame; |
| | | CCriticalSection m_csIdxLock; |
| | |
| | | #include "StdAfx.h" |
| | | #include "StdAfx.h" |
| | | #include "SoliosControl.h" |
| | | #include "FrameBufferController.h" |
| | | |
| | |
| | | if (nYStart + nYSize > nBufSizeY* GetEndFrameIdx()) |
| | | return FALSE; |
| | | |
| | | // ç«ç´¯ æ©é¥ç é
é¾å®¢ åº æ©é¥ç é
é¾. |
| | | // ç«ç´¯ æ©é¥ç é
é¾å®¢ åº æ©é¥ç é
é¾. |
| | | int nStartFrameNo = nYStart / nBufSizeY; |
| | | int nEndFrameNo = (nYStart + nYSize) / nBufSizeY; |
| | | LPBYTE lpHeadAddr = GetFrameHeader(iScan,nStartFrameNo); |
| | |
| | | memcpy(lpIn + i * nXSize, lpStart + nLine * nBufSizeX, nXSize); |
| | | if (nStartFrameNo <= nEndFrameNo && (nYStart + i + 1) % nBufSizeY == 0) |
| | | { |
| | | // æåºç¤ç« è¶é´å
·çªç»° åº·å¼æ MemFrameNo çæä¿ å§åªä¹ç»° çå¿« è´¸åº. |
| | | // æåºç¤ç« è¶é´å
·çªç»° åº·å¼æ MemFrameNo çæä¿ å§åªä¹ç»° çå¿« è´¸åº. |
| | | lpHeadAddr = GetFrameHeader(iScan,++nStartFrameNo); |
| | | lpStart = lpHeadAddr + nXStart; |
| | | nLine = 0; |
| | |
| | | |
| | | CGrabberSolios *pRadient = (CGrabberSolios*)HookDataPtr; |
| | | |
| | | if(pRadient->m_isLiveGrab == TRUE) // Live Grab ç«. |
| | | if(pRadient->m_isLiveGrab == TRUE) // Live Grab ç«. |
| | | { |
| | | pRadient->m_nSetBufferIdx = 0; |
| | | |
| | |
| | | /* |
| | | MdigControl(m_MilDigitizer, M_CAMERALINK_CC1_SOURCE, M_GRAB_EXPOSURE+M_TIMER1); |
| | | MdigControl(m_MilDigitizer, M_GRAB_EXPOSURE+M_TIMER1, M_ENABLE); |
| | | MdigControl(m_MilDigitizer, M_GRAB_EXPOSURE_SOURCE+M_TIMER1, M_CONTINUOUS); // Periodic èé¾ ç¢å |
| | | MdigControl(m_MilDigitizer, M_GRAB_EXPOSURE_SOURCE+M_TIMER1, M_CONTINUOUS); // Periodic èé¾ ç¢å |
| | | MdigControl(m_MilDigitizer, M_GRAB_EXPOSURE_TIME+M_TIMER1, nExposureTimer); //10000ns |
| | | MdigControl(m_MilDigitizer, M_GRAB_EXPOSURE_TIME_DELAY+M_TIMER1, nExposureTimerDelay); //10000ns |
| | | */ |
| | |
| | | |
| | |  |
| | | #pragma once |
| | | |
| | | #include "Global_Define.h" |
| | |
| | | public: |
| | | ////////////////////////////////////////////////////////////////////////// |
| | | // Initialization |
| | | virtual BOOL Initialize(void *pParam, int *pErrorCode,int iBoard=0); // Grabber æª¬ææ³ |
| | | virtual BOOL Initialize(void *pParam, int *pErrorCode,int iBoard=0); // Grabber æª¬ææ³ |
| | | virtual BOOL InitializeBuffer(void *pParam); |
| | | ////////////////////////////////////////////////////////////////////////// |
| | | // Deinit |
| | |
| | | public: |
| | | _GRABBER_INIT_PARAM_ m_Param; |
| | | |
| | | MIL_ID m_MilSystem; // çé寸 1å½è |
| | | MIL_ID m_MilDigitizer; // å¢¨çæ¼ å½è |
| | | MIL_ID m_MilSystem; // çé寸 1å½è |
| | | MIL_ID m_MilDigitizer; // å¢¨çæ¼ å½è |
| | | MIL_ID m_Milbufgrab[BUFFERING_SIZE_MAX]; |
| | | DIGSTATUS m_DigitizerStatus; |
| | | long m_lBord; |
| | |
| | | |
| | | CCriticalSection m_critical; |
| | | |
| | | int m_nEndFrameIdx; // æ³
ç Grab è è |
| | | int m_nStartFrameIdx; // åå å·è´°åä¿ Grabè Frameç¼ ç¢é¸è¶. |
| | | int m_nEndFrameIdx; // æ³
ç Grab è è |
| | | int m_nStartFrameIdx; // åå å·è´°åä¿ Grabè Frameç¼ ç¢é¸è¶. |
| | | int m_nSetBufferIdx; |
| | | int m_nScanIndex; |
| | | int m_nAllocatedGrabBufSize; |
| | |
| | | #include "StdAfx.h" |
| | | #include "StdAfx.h" |
| | | #include "InterfaceManager.h" |
| | | #include "MulticamControl.h" |
| | | #include "RadientControl.h" |
| | |
| | | return 0; |
| | | } |
| | | |
| | | // End Signalé PLCä¿è¾ è ç»ç½é
è¾ Retry æèæ¾ |
| | | // End Signalé PLCä¿è¾ è ç»ç½é
è¾ Retry æèæ¾ |
| | | void CInterfaceManager::PLCSignalRetry(SEND_MESSAGE_SECTION emSection,InspectToControlSignal emSendSignal,enInterface_Send_Control emControlSignal) |
| | | { |
| | | if(m_HardwareRecipe.m_nPLCSignalRetry <= 0) |
| | |
| | | m_PostProcess.SetView((void*) m_pView); |
| | | m_PostProcess.RunPostProcessing(); |
| | | |
| | | // é¦éç« Scan End èé¾ çé´æ åä¿ ç§¦æå
·èä¿... Scan End èé¾ çå°é Loadingæ è¯ä¸° æç»æ æçé´ç¤é¸ éå乿¾.. |
| | | // é¦éç« Scan End èé¾ çé´æ åä¿ ç§¦æå
·èä¿... Scan End èé¾ çå°é Loadingæ è¯ä¸° æç»æ æçé´ç¤é¸ éå乿¾.. |
| | | m_bGlassLoadingEnd = FALSE; |
| | | m_bPLCGlassLoading = FALSE; |
| | | |
| | |
| | | if(!m_strReserveRecipe.IsEmpty()) |
| | | { |
| | | g_pLog->DisplayMessage(_T("Apply reserve Recipe Loading - [%s]"), m_strReserveRecipe); |
| | | if (LoadGlassRecipe(m_strReserveRecipe,TRUE)) // é篮 Recipeæ¼æ¡£ å©ä¾© æè·ç»ç»¢ 乿 æ ä¿ç« èºç¹èä¿. |
| | | if (LoadGlassRecipe(m_strReserveRecipe,TRUE)) // é篮 Recipeæ¼æ¡£ å©ä¾© æè·ç»ç»¢ 乿 æ ä¿ç« èºç¹èä¿. |
| | | { |
| | | g_pLog->DisplayMessage(_T("Apply reserve Recipe Loading - [%s] : Success"), m_strReserveRecipe); |
| | | } |
| | |
| | | return FALSE; |
| | | } |
| | | |
| | | if (strRcp.CompareNoCase(m_GlassRecipe.GetRecipeName()) != 0) // strRecipeName å®å·®æ èºç¹èä¿. |
| | | if (strRcp.CompareNoCase(m_GlassRecipe.GetRecipeName()) != 0) // strRecipeName å®å·®æ èºç¹èä¿. |
| | | { |
| | | if (LoadGlassRecipe(strRcp,TRUE) == FALSE) |
| | | { |
| | |
| | | BlVision_GetVisionRecipe()->setRecipeType(EI_VISION_RECIPE); |
| | | BlVision_GetVisionRecipe()->init(); |
| | | |
| | | for (int i = 0; i < nCount; i++) { //设置å辨ç |
| | | for (int i = 0; i < nCount; i++) { //设置å辨ç |
| | | DimensionDir eDir = (DimensionDir)(i); |
| | | CBlSideData *pSide = BlVision_GetVisionRecipe()->getSideData(eDir); |
| | | |
| | |
| | | g_pLog->DisplayMessage( _T("CreateCamera Start!")); |
| | | |
| | | ////////////////////////////////////////////////////////////////////////// |
| | | // Camera Handle 积己. |
| | | // Camera Handle 积己. |
| | | int iCam; |
| | | BOOL bRet = TRUE; |
| | | |
| | |
| | | int nErrorCode; |
| | | int nBoardId = iCam; |
| | | |
| | | // B5 4龿 æ¸æ³¼ |
| | | // B5 4龿 æ¸æ³¼ |
| | | g_pBase->m_strSBKLine = m_HardwareRecipe.GetLineID(); |
| | | g_pBase->m_strSBKLine.Append(_T("#")); |
| | | |
| | |
| | | FreeImage_Unload(bitmap); |
| | | |
| | | Unlock(); |
| | | |
| | | return TRUE; |
| | | } |
| | | |
| | | BOOL CInterfaceManager::SaveFullImageModern(CString strPath,LPBYTE lpOrigin,int nImgWidth,int nImgHeight,int iSide,int nStartY,int nQuality /*= 80*/) |
| | |
| | | cvReleaseImageHeader(&pImg); |
| | | #else |
| | | Lock(); |
| | | // åå§å¾åæ°æ®è½¬ cv::Mat |
| | | // åå§å¾åæ°æ®è½¬ cv::Mat |
| | | cv::Mat origin(nImgHeight, nImgWidth, CV_8UC1, lpOrigin + (nImgWidth * nStartY)); |
| | | |
| | | // 缩æ¾å¾å |
| | | // 缩æ¾å¾å |
| | | cv::Size szNew(static_cast<int>(nImgWidth * dRatio), static_cast<int>(nImgHeight * dRatio)); |
| | | cv::Mat resized; |
| | | cv::resize(origin, resized, szNew, 0, 0, cv::INTER_LINEAR); |
| | | |
| | | // 设置 JPEG åç¼©åæ° |
| | | // 设置 JPEG åç¼©åæ° |
| | | std::vector<int> params = { |
| | | cv::IMWRITE_JPEG_QUALITY, |
| | | nQuality |
| | |
| | | strPath.Append(_T("_NG")); |
| | | } |
| | | #else |
| | | // å è½½ç°åº¦å¾å |
| | | // å è½½ç°åº¦å¾å |
| | | std::string strFilename = CT2A(strPath); |
| | | cv::Mat img = cv::imread(strFilename, cv::IMREAD_GRAYSCALE); |
| | | |
| | |
| | | nHeight = img.rows; |
| | | } |
| | | else { |
| | | // ææ¯ä¾ç¼©æ¾ |
| | | // ææ¯ä¾ç¼©æ¾ |
| | | const double dRatio = 1.0 - static_cast<double>(IMAGE_COMPRESSRATIO) / 100.0; |
| | | int newWidth = static_cast<int>(img.cols / dRatio); |
| | | int newHeight = static_cast<int>(img.rows / dRatio); |
| | |
| | | #pragma once |
| | | #pragma once |
| | | |
| | | #include "Global_Define.h" |
| | | #include "EdgeInspector_AppView.h" |
| | |
| | | #include "StdAfx.h" |
| | | #include "StdAfx.h" |
| | | #include "LanguageControl.h" |
| | | #include <fstream> |
| | | #include <iostream> |
| | |
| | | |
| | | char lineBuffer[1024]; |
| | | |
| | | char seps[]="=\n"; //å¤çç£ |
| | | char seps[]="=\n"; //å¤çç£ |
| | | |
| | | char* pTemp; |
| | | char* pContext; |
| | |
| | | BSTR bstrWide; |
| | | char* pszAnsi; |
| | | int nLength; |
| | | nLength = MultiByteToWideChar(CP_UTF8, 0, lineBuffer, strlen(lineBuffer) + 1, NULL, NULL); |
| | | nLength = MultiByteToWideChar(CP_UTF8, 0, lineBuffer, (int)(strlen(lineBuffer) + 1), NULL, NULL); |
| | | bstrWide = SysAllocStringLen(NULL, nLength); |
| | | |
| | | MultiByteToWideChar(CP_UTF8, 0, lineBuffer, strlen(lineBuffer) + 1, bstrWide, nLength); |
| | | MultiByteToWideChar(CP_UTF8, 0, lineBuffer, (int)(strlen(lineBuffer) + 1), bstrWide, nLength); |
| | | nLength = WideCharToMultiByte(CP_ACP, 0, bstrWide, -1, NULL, 0, NULL, NULL); |
| | | pszAnsi = new char[nLength]; |
| | | |
| | |
| | | |
| | | char lineBuffer[1024]; |
| | | |
| | | char seps[]="=\n"; //å¤çç£ |
| | | char seps[]="=\n"; //å¤çç£ |
| | | |
| | | char* pTemp; |
| | | char* pContext; |
| | |
| | | BSTR bstrWide; |
| | | char* pszAnsi; |
| | | int nLength; |
| | | nLength = MultiByteToWideChar(CP_UTF8, 0, lineBuffer, strlen(lineBuffer) + 1, NULL, NULL); |
| | | nLength = MultiByteToWideChar(CP_UTF8, 0, lineBuffer, (int)(strlen(lineBuffer) + 1), NULL, NULL); |
| | | bstrWide = SysAllocStringLen(NULL, nLength); |
| | | |
| | | MultiByteToWideChar(CP_UTF8, 0, lineBuffer, strlen(lineBuffer) + 1, bstrWide, nLength); |
| | | MultiByteToWideChar(CP_UTF8, 0, lineBuffer, (int)(strlen(lineBuffer) + 1), bstrWide, nLength); |
| | | nLength = WideCharToMultiByte(CP_ACP, 0, bstrWide, -1, NULL, 0, NULL, NULL); |
| | | pszAnsi = new char[nLength]; |
| | | |
| | |
| | | |
| | | char lineBuffer[1024]; |
| | | |
| | | char seps[]="=\n"; //å¤çç£ |
| | | char seps[]="=\n"; //å¤çç£ |
| | | |
| | | //char* pTemp; |
| | | //char* pContext; |
| | |
| | | BSTR bstrWide; |
| | | char* pszAnsi; |
| | | int nLength; |
| | | nLength = MultiByteToWideChar(CP_UTF8, 0, lineBuffer, strlen(lineBuffer) + 1, NULL, NULL); |
| | | nLength = MultiByteToWideChar(CP_UTF8, 0, lineBuffer, (int)(strlen(lineBuffer) + 1), NULL, NULL); |
| | | bstrWide = SysAllocStringLen(NULL, nLength); |
| | | |
| | | MultiByteToWideChar(CP_UTF8, 0, lineBuffer, strlen(lineBuffer) + 1, bstrWide, nLength); |
| | | MultiByteToWideChar(CP_UTF8, 0, lineBuffer, (int)(strlen(lineBuffer) + 1), bstrWide, nLength); |
| | | nLength = WideCharToMultiByte(CP_ACP, 0, bstrWide, -1, NULL, 0, NULL, NULL); |
| | | pszAnsi = new char[nLength]; |
| | | |
| | |
| | | |
| | | char lineBuffer[1024]; |
| | | |
| | | char seps[]="=\n"; //å¤çç£ |
| | | char seps[]="=\n"; //å¤çç£ |
| | | |
| | | //char* pTemp; |
| | | //char* pContext; |
| | |
| | | nLength = MultiByteToWideChar(CP_UTF8, 0, lineBuffer, strlen(lineBuffer) + 1, NULL, NULL); |
| | | bstrWide = SysAllocStringLen(NULL, nLength); |
| | | |
| | | MultiByteToWideChar(CP_UTF8, 0, lineBuffer, strlen(lineBuffer) + 1, bstrWide, nLength); |
| | | MultiByteToWideChar(CP_UTF8, 0, lineBuffer, (int)(strlen(lineBuffer) + 1), bstrWide, nLength); |
| | | nLength = WideCharToMultiByte(CP_ACP, 0, bstrWide, -1, NULL, 0, NULL, NULL); |
| | | pszAnsi = new char[nLength]; |
| | | |
| | |
| | | #pragma once |
| | | #pragma once |
| | | #include "Config.h" |
| | | #include "Global_Define.h" |
| | | |
| | |
| | | #include "stdafx.h" |
| | | #include "stdafx.h" |
| | | #include "Worker_UpdateLicense.h" |
| | | |
| | | #ifdef _DEBUG |
| | |
| | | #pragma comment(lib,"l_mega64.lib") |
| | | #endif |
| | | |
| | | // çåé æ¼æå®ç¾åº å¯ä½ çªè æ¥æ« ç«ç´¯ |
| | | // çåé æ¼æå®ç¾åº å¯ä½ çªè æ¥æ« ç«ç´¯ |
| | | #ifdef __cplusplus |
| | | extern "C" { |
| | | #endif |
| | | extern unsigned int lock_init_usb(unsigned int op1); // çåé æ²¤ç¥¸ |
| | | extern unsigned int lock_init_usb(unsigned int op1); // çåé æ²¤ç¥¸ |
| | | extern unsigned char lock_write(unsigned char op1, char op2); |
| | | extern unsigned char lock_read(unsigned char op1); |
| | | extern unsigned int lock_boot_cnt(void); // 使³¼ åè ææ |
| | | extern unsigned int lock_boot_cnt(void); // 使³¼ åè ææ |
| | | extern unsigned char lock_version(void); |
| | | extern unsigned char lock_sn(char); // çåé ç»è¡é
é¾ |
| | | extern unsigned char lock_check(void); // çåé ç²®ç å¯ä½ç« çç¦ç» åçªæ´ çå |
| | | extern unsigned char lock_sn(char); // çåé ç»è¡é
é¾ |
| | | extern unsigned char lock_check(void); // çåé ç²®ç å¯ä½ç« çç¦ç» åçªæ´ çå |
| | | extern int lock_write_ex(int op1, int op2); |
| | | extern int lock_read_ex(int op1); |
| | | extern BOOL lock_receive(void); |
| | | |
| | | // æå æ»åè é¾å¸å·± è¡ç¤ç« å°è çªè, èç¹è¯çç¢ çå¿« é
è´°ç¼ çªèç»° è¤ä¾©çªç¤ 仿夏. |
| | | // æå æ»åè é¾å¸å·± è¡ç¤ç« å°è çªè, èç¹è¯çç¢ çå¿« é
è´°ç¼ çªèç»° è¤ä¾©çªç¤ 仿夏. |
| | | extern unsigned char lock_auto(char op1); |
| | | extern unsigned char lock_func0(unsigned char op1, unsigned char op2); |
| | | extern unsigned char lock_func1(unsigned char op1, unsigned char op2); |
| | |
| | | #ifdef __cplusplus |
| | | } |
| | | #endif |
| | | // çåé æ¼æå®ç¾åº å¯ä½ çªè æ¥æ« åº |
| | | // çåé æ¼æå®ç¾åº å¯ä½ çªè æ¥æ« åº |
| | | |
| | | CWorker_UpdateLicense::CWorker_UpdateLicense(int nIndex, IWorkerUpdateLicense2Parent *pIWUL2P, DWORD dwTick) |
| | | : m_nIndex(nIndex), m_pIWUL2P(pIWUL2P), m_dwTick(dwTick) |
| | |
| | | { |
| | | if (m_bUpdate) return FALSE; |
| | | |
| | | //Read è¶é¥é 积己 |
| | | //Read è¶é¥é 积己 |
| | | m_bUpdate = TRUE; |
| | | AfxBeginThread(CWorker_UpdateLicense::UpdateLicense,(LPVOID)(this)); |
| | | |
| | |
| | | |
| | | void CWorker_UpdateLicense::Update_License() |
| | | { |
| | | ////////////////////// USB侩 çåé å
«è¤é£å ç«ç´¯ |
| | | ////////////////////// USB侩 çåé å
«è¤é£å ç«ç´¯ |
| | | DWORD64 dwTick = GetTickCount64(); |
| | | |
| | | m_sStatus.Reset(); |
| | |
| | | m_sStatus.expTime = tmpTime; |
| | | return; |
| | | |
| | | m_sStatus.nKeyStatus = LicenseKey_NotConnected; // æ¥·æ¬ æå³ |
| | | m_sStatus.nUsbID = lock_init_usb(8); // æ¥·æ¬ çå |
| | | m_sStatus.nKeyStatus = LicenseKey_NotConnected; // æ¥·æ¬ æå³ |
| | | m_sStatus.nUsbID = lock_init_usb(8); // æ¥·æ¬ çå |
| | | if (0 == m_sStatus.nUsbID) |
| | | { |
| | | m_pIWUL2P->IWUL2P_LicenceStatus(m_nIndex, m_sStatus); |
| | | return; |
| | | } |
| | | |
| | | m_sStatus.nKeyStatus = LicenseKey_NotCertified; // ç¢å æå³ |
| | | if (0 != lock_check()) // ç¢å çå |
| | | m_sStatus.nKeyStatus = LicenseKey_NotCertified; // ç¢å æå³ |
| | | if (0 != lock_check()) // ç¢å çå |
| | | { |
| | | m_pIWUL2P->IWUL2P_LicenceStatus(m_nIndex, m_sStatus); |
| | | return; |
| | |
| | | } |
| | | m_sStatus.strSerialNo = szTemp; |
| | | |
| | | m_sStatus.nKeyStatus = LicenseKey_NotActivated; // åå·±æ³ æå³ |
| | | m_sStatus.nKeyStatus = LicenseKey_NotActivated; // åå·±æ³ æå³ |
| | | |
| | | // TIME üũ |
| | | // TIME çå |
| | | int pMemData[16] = { 0 }; |
| | | CString strTemp; |
| | | for (int i = 0; i < 16; i++) |
| | |
| | | |
| | | if (spanTime.GetTotalSeconds() > 0) |
| | | { |
| | | m_sStatus.nKeyStatus = LicenseKey_Activated; // åå·±æ³å³ |
| | | m_sStatus.nKeyStatus = LicenseKey_Activated; // åå·±æ³å³ |
| | | m_pIWUL2P->IWUL2P_LicenceStatus(m_nIndex, m_sStatus); |
| | | return; |
| | | } |
| | |
| | | #pragma once |
| | | #pragma once |
| | | |
| | | enum LicenseKey_Status { |
| | | LicenseKey_NotConnected = 0, // æ¥·æ¬ æå³ |
| | | LicenseKey_NotCertified, // ç¢å æå³ |
| | | LicenseKey_NotActivated, // åèæµ·æè®° æå³ |
| | | LicenseKey_Activated // åèæµ·æè®° å³ |
| | | LicenseKey_NotConnected = 0, // æ¥·æ¬ æå³ |
| | | LicenseKey_NotCertified, // ç¢å æå³ |
| | | LicenseKey_NotActivated, // åèæµ·æè®° æå³ |
| | | LicenseKey_Activated // åèæµ·æè®° å³ |
| | | }; |
| | | |
| | | struct SLicenseStatus |
| | |
| | | #include "StdAfx.h" |
| | | #include "StdAfx.h" |
| | | #include "LicenseChecker.h" |
| | | |
| | | |
| | |
| | | #pragma once |
| | | #pragma once |
| | | #include "Worker_UpdateLicense.h" |
| | | |
| | | class CLicenseChecker : public IWorkerUpdateLicense2Parent |
| | |
| | | // ExternLightControl.cpp: implementation of the CExternLightControl class. |
| | | // ExternLightControl.cpp: implementation of the CExternLightControl class. |
| | | // |
| | | ////////////////////////////////////////////////////////////////////// |
| | | |
| | |
| | | // ExternLightControl.h: interface for the CExternLightControl class. |
| | | // ExternLightControl.h: interface for the CExternLightControl class. |
| | | // |
| | | ////////////////////////////////////////////////////////////////////// |
| | | |
| | |
| | | |
| | |  |
| | | #include "stdafx.h" |
| | | #include "ExternLightControlAKPNV.h" |
| | | |
| | |
| | | |
| | |  |
| | | #pragma once |
| | | |
| | | #if _MSC_VER > 1000 |
| | |
| | | |
| | |  |
| | | #include "stdafx.h" |
| | | #include "ExternLightControlLCP.h" |
| | | |
| | |
| | | |
| | |  |
| | | #pragma once |
| | | |
| | | #if _MSC_VER > 1000 |
| | |
| | | |
| | |  |
| | | #include "StdAfx.h" |
| | | #include "ExternLightControlLCP.h" |
| | | #include "ExternLightControlAKPNV.h" |
| | |
| | | if(pLingControl->OpenControl(pLight->m_nPort) == TRUE) |
| | | { |
| | | g_pLog->DisplayMessage(_T("Light controller %s connection success : Port[%d]"),strMsg,pLight->m_nPort); |
| | | //TRACE("ç¼ç %s æ¥·æ¬ å·±å : Port[%d]\n",strMsg,pLight->m_nPort); |
| | | //TRACE("ç¼ç %s æ¥·æ¬ å·±å : Port[%d]\n",strMsg,pLight->m_nPort); |
| | | nOldPort = pLight->m_nPort; |
| | | } |
| | | else |
| | | { |
| | | g_pLog->DisplayMessage(_T("Light controller %s connection fail : Port[%d]"),strMsg,pLight->m_nPort); |
| | | //TRACE("ç¼ç %s æ¥·æ¬ è§è© : Port[%d]\n",strMsg,pLight->m_nPort); |
| | | //TRACE("ç¼ç %s æ¥·æ¬ è§è© : Port[%d]\n",strMsg,pLight->m_nPort); |
| | | } |
| | | |
| | | m_vecLightControl.push_back(pLingControl); |
| | |
| | | #pragma once |
| | | #pragma once |
| | | |
| | | #include <vector> |
| | | #include "ExternLightControl.h" |
| | |
| | | |
| | | protected: |
| | | std::vector<CExternLightControl *> m_vecLightControl; |
| | | //CConfig m_ConfigLightValue; // é¥ç«ä¹ä¿è¾ å
åºçªç£... ç¼ç 汲沥è¼é ææ
çªç»° Config File |
| | | //CConfig m_ConfigLightValue; // é¥ç«ä¹ä¿è¾ å
åºçªç£... ç¼ç 汲沥è¼é ææ
çªç»° Config File |
| | | CWnd *m_pParents; |
| | | CHardwareSettings *m_pHardwareSetting; |
| | | |
| | |
| | | |
| | | // MainFrm.cpp : CMainFrame åªè´°è¶ç¼ 夿³
|
| | |  |
| | | // MainFrm.cpp : CMainFrame åªè´°è¶ç¼ 夿³
|
| | | // |
| | | |
| | | #include "stdafx.h" |
| | |
| | | ON_WM_GETMINMAXINFO() |
| | | END_MESSAGE_MAP() |
| | | |
| | | // CMainFrame 积己/å®¶æ |
| | | // CMainFrame 积己/å®¶æ |
| | | |
| | | CMainFrame::CMainFrame() |
| | | { |
| | |
| | | return TRUE; |
| | | } |
| | | |
| | | // CMainFrame çç«ç¤ è´¸åºæ |
| | | // CMainFrame çç«ç¤ è´¸åºæ |
| | | void CMainFrame::OnGetMinMaxInfo(MINMAXINFO* lpMMI) |
| | | { |
| | | // TODO: å¯æä¿ çç«ç¤ è´¸åºæ å
éç« ç å æ£º/èç»° æå¤¯è¼é é¾å
é¦èªä¿. |
| | | // TODO: å¯æä¿ çç«ç¤ è´¸åºæ å
éç« ç å æ£º/èç»° æå¤¯è¼é é¾å
é¦èªä¿. |
| | | //CFrameWndEx::OnGetMinMaxInfo(lpMMI); |
| | | |
| | | lpMMI->ptMinTrackSize.x = TOTAL_WINDOW_SIZE_X; |
| | |
| | | lpMMI->ptMaxTrackSize.y = TOTAL_WINDOW_SIZE_Y; |
| | | } |
| | | |
| | | // CMainFrame æ³çª |
| | | // CMainFrame æ³çª |
| | | |
| | | #ifdef _DEBUG |
| | | void CMainFrame::AssertValid() const |
| | |
| | | #endif //_DEBUG |
| | | |
| | | |
| | | // CMainFrame çç«ç¤ è´¸åºæ |
| | | // CMainFrame çç«ç¤ è´¸åºæ |
| | | void CMainFrame::SetView(CEdgeInspector_AppView *pView) |
| | | { |
| | | m_pView = pView; |
| | |
| | | if (PathFileExists(strExePath) && PathFileExists(strConfigPath)) { |
| | | LPCTSTR pszExeName = PathFindFileName(strExePath); |
| | | |
| | | // 廿 .exeï¼å¹¶ææ»è¿ç¨ |
| | | // 廿 .exeï¼å¹¶ææ»è¿ç¨ |
| | | TCHAR szNameWithoutExt[MAX_PATH] = { 0 }; |
| | | _tcscpy_s(szNameWithoutExt, pszExeName); |
| | | PathRemoveExtension(szNameWithoutExt); |
| | |
| | | if (PathFileExists(strExePath) && PathFileExists(strConfigPath)) { |
| | | LPCTSTR pszExeName = PathFindFileName(strExePath); |
| | | |
| | | // 廿 .exeï¼å¹¶ææ»è¿ç¨ |
| | | // 廿 .exeï¼å¹¶ææ»è¿ç¨ |
| | | TCHAR szNameWithoutExt[MAX_PATH] = { 0 }; |
| | | _tcscpy_s(szNameWithoutExt, pszExeName); |
| | | PathRemoveExtension(szNameWithoutExt); |
| | |
| | | { |
| | | m_strReserveRecipe.Empty(); |
| | | |
| | | if(!IsScanNow()) // å
«è¤ å |
| | | if(!IsScanNow()) // å
«è¤ å |
| | | { |
| | | if(LoadGlassRecipe(strRecipe,TRUE) == TRUE) |
| | | { |
| | |
| | | g_pBase->m_eProcessMode = PROC_MODE_SIMULATION_ONESIDE; |
| | | m_eManualInspectSide = eDim; |
| | | |
| | | // çç«èº éæ¾ |
| | | // çç«èº éæ¾ |
| | | //return TRUE; |
| | | |
| | | AfxBeginThread(ManualInspectProcess,this); |
| | |
| | | |
| | | // MainFrm.h : CMainFrame åªè´°è¶ç¼ ç¢ç£å
¶æè¶ |
| | |  |
| | | // MainFrm.h : CMainFrame åªè´°è¶ç¼ ç¢ç£å
¶æè¶ |
| | | // |
| | | |
| | | #pragma once |
| | |
| | | , public IDisplyMessage2Parent |
| | | { |
| | | |
| | | protected: // serializationä¿è¾ç¶ ç¶ç¸ç»¢ç¬¼èªä¿. |
| | | protected: // serializationä¿è¾ç¶ ç¶ç¸ç»¢ç¬¼èªä¿. |
| | | CMainFrame(); |
| | | DECLARE_DYNCREATE(CMainFrame) |
| | | |
| | | // æ¼å·±æ¶èªä¿. |
| | | // æ¼å·±æ¶èªä¿. |
| | | public: |
| | | |
| | | // ç´¯è¯æ¶èªä¿. |
| | | // ç´¯è¯æ¶èªä¿. |
| | | public: |
| | | |
| | | // çæ²¥ç¼æ¶èªä¿. |
| | | // çæ²¥ç¼æ¶èªä¿. |
| | | public: |
| | | virtual BOOL PreCreateWindow(CREATESTRUCT& cs); |
| | | |
| | | // 夿³
æ¶èªä¿. |
| | | // 夿³
æ¶èªä¿. |
| | | public: |
| | | virtual ~CMainFrame(); |
| | | #ifdef _DEBUG |
| | |
| | | void SetRegistryRcpName(CString strRecipe); |
| | | void ApplyViewRecipeSettingss(); |
| | | |
| | | // 积己ç çç«ç¤ ç çªè |
| | | // 积己ç çç«ç¤ ç çªè |
| | | protected: |
| | | afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); |
| | | afx_msg void OnGetMinMaxInfo(MINMAXINFO* lpMMI); |
| | |
| | | #pragma once |
| | | #pragma once |
| | | |
| | | #include "mil.h" |
| | | |
| | |
| | | { |
| | | int nJobIndex; |
| | | int nSKipFrame; |
| | | int status; // æ³
ç ææ... // M_STOP , M_START , M_FREE_START |
| | | int nCount; // 佬篮 æ¼ç¢è... |
| | | int nIndex; // æåºç¤ æ»æ¬º ç¢é¸è¶ |
| | | int status; // æ³
ç ææ... // M_STOP , M_START , M_FREE_START |
| | | int nCount; // 佬篮 æ¼ç¢è... |
| | | int nIndex; // æåºç¤ æ»æ¬º ç¢é¸è¶ |
| | | int nDisplayFrame; |
| | | int nResetFrame; |
| | | }DIGSTATUS, *PDIGSTATUS; |
| | |
| | | #include "StdAfx.h" |
| | | #include "StdAfx.h" |
| | | #include "Control_Interface.h" |
| | | #include "Config.h" |
| | | #include "SharedMemoryDefine.h" |
| | |
| | | { |
| | | m_bConnect = FALSE; |
| | | |
| | | //4k åæç¼ åè¡ çèåº é¢è 积己 |
| | | //4k åæç¼ åè¡ çèåº é¢è 积己 |
| | | m_hMap = ::CreateFileMapping(INVALID_HANDLE_VALUE,NULL,PAGE_READWRITE |
| | | , 0, SHARED_MEMORY_SIZE, _T("MX_COMPONENT_SHARED_MEMORY")); |
| | | |
| | | //ç¶è æåº ç§¯å·±ç æçå ä¹ä¿æ æåº Connectorå ç´¯æ¼ å.. |
| | | //ç¶è æåº ç§¯å·±ç æçå ä¹ä¿æ æåº Connectorå ç´¯æ¼ å.. |
| | | if (::GetLastError() == ERROR_ALREADY_EXISTS) |
| | | { |
| | | //æåº ç§¯å·±ç æçå ä¹ä¿æ 积己æ é
èªæ¼ å·é¹æ èº è§é |
| | | //æåº ç§¯å·±ç æçå ä¹ä¿æ 积己æ é
èªæ¼ å·é¹æ èº è§é |
| | | m_hMap = ::OpenFileMapping(FILE_MAP_ALL_ACCESS,FALSE,_T("MX_COMPONENT_SHARED_MEMORY")); |
| | | } |
| | | else//ç¶è ç§¯å·±ç æçå ç»ä¿æ æ²¥æ æ¼ç´¯çªç¤ è¼ç»°ä¿. |
| | | else//ç¶è ç§¯å·±ç æçå ç»ä¿æ æ²¥æ æ¼ç´¯çªç¤ è¼ç»°ä¿. |
| | | g_pLog->DisplayMessage(_T("Error : No defect PLCConnector program.")); |
| | | |
| | | if (m_hMap == NULL) |
| | |
| | | return FALSE; |
| | | } |
| | | |
| | | //åè¡çèåº çä¿ |
| | | //åè¡çèåº çä¿ |
| | | m_pSharedMemory = (char*)::MapViewOfFile(m_hMap, FILE_MAP_ALL_ACCESS, 0, 0, SHARED_MEMORY_SIZE); |
| | | |
| | | if (m_pSharedMemory == NULL) |
| | |
| | | return FALSE; |
| | | } |
| | | |
| | | //0æ èº æª¬ææ³ |
| | | //0æ èº æª¬ææ³ |
| | | ZeroMemory(m_pSharedMemory,SHARED_MEMORY_SIZE); |
| | | |
| | | m_bConnect = TRUE; |
| | |
| | | else |
| | | memset(m_pSharedMemory+iAddr, 0x00, nWORDSize); |
| | | |
| | | //èçµ è¼é ç²åµ æç¯® 饶 PLCConnectorä¿é¸ PLC æå®¶ä¿ è¼é 婿¡£åº èé¾ç« çè¾°ä¿. |
| | | //èçµ è¼é ç²åµ æç¯® 饶 PLCConnectorä¿é¸ PLC æå®¶ä¿ è¼é 婿¡£åº èé¾ç« çè¾°ä¿. |
| | | m_pSharedMemory[iStartAddr] = 1; |
| | | |
| | | return true; |
| | |
| | | iAddr+=4; |
| | | memcpy(m_pSharedMemory+iAddr, WriteData, nWORDSize*2); |
| | | |
| | | //èçµ è¼é ç²åµ æç¯® 饶 PLCConnectorä¿é¸ PLC æå®¶ä¿ è¼é 婿¡£åº èé¾ç« çè¾°ä¿. |
| | | //èçµ è¼é ç²åµ æç¯® 饶 PLCConnectorä¿é¸ PLC æå®¶ä¿ è¼é 婿¡£åº èé¾ç« çè¾°ä¿. |
| | | m_pSharedMemory[iStartAddr] = 1; |
| | | return true; |
| | | } |
| | |
| | | iAddr+=2; |
| | | memcpy(m_pSharedMemory+iAddr, &msecTimer, 4); |
| | | |
| | | //èçµ è¼é ç²åµ æç¯® 饶 PLCConnectorä¿é¸ PLC æå®¶ä¿ è¼é 婿¡£åº èé¾ç« çè¾°ä¿. |
| | | //èçµ è¼é ç²åµ æç¯® 饶 PLCConnectorä¿é¸ PLC æå®¶ä¿ è¼é 婿¡£åº èé¾ç« çè¾°ä¿. |
| | | m_pSharedMemory[iStartAddr] = 1; |
| | | return true; |
| | | } |
| | |
| | | iAddr+=2; |
| | | memcpy(m_pSharedMemory+iAddr, &msecTimer, 4); |
| | | |
| | | //èçµ è¼é ç²åµ æç¯® 饶 PLCConnectorä¿é¸ PLC æå®¶ä¿ è¼é 婿¡£åº èé¾ç« çè¾°ä¿. |
| | | //èçµ è¼é ç²åµ æç¯® 饶 PLCConnectorä¿é¸ PLC æå®¶ä¿ è¼é 婿¡£åº èé¾ç« çè¾°ä¿. |
| | | m_pSharedMemory[iStartAddr] = 1; |
| | | return true; |
| | | } |
| | |
| | | return TRUE; |
| | | } |
| | | |
| | | // è¶é£å
-> 16æ³è |
| | | // è¶é£å
-> 16æ³è |
| | | BOOL CControl_Interface::StrToHex(CHAR* pchData, CHAR* pchDataSrc, INT nLength, BOOL bWordReverse) |
| | | { |
| | | //static UCHAR saucHex[] = "0123456789ABCDEF"; |
| | |
| | | if ( strlength > 6) strlength = 6; |
| | | |
| | | if( nWORDSize > 1000) nWORDSize = 1000; |
| | | //åè¡ çèåºä¿ æ±å¹
åæç£ç« ä½¬æ¡£åº èé¾ç« çè¾°ä¿. |
| | | //åè¡ çèåºä¿ æ±å¹
åæç£ç« ä½¬æ¡£åº èé¾ç« çè¾°ä¿. |
| | | ZeroMemory(m_pSharedMemory + PLC_READ_LONGDATA_ADDRESS_1, (PLC_READ_LONGDATA_LENGTH_1)-(PLC_READ_LONGDATA_ADDRESS_1)); |
| | | memcpy(m_pSharedMemory+PLC_READ_LONGDATA_ADDRESS_1, strAddress,strlength*sizeof(TCHAR)); |
| | | memcpy(m_pSharedMemory+PLC_READ_LONGDATA_LENGTH_1, &nWORDSize,2); |
| | | memset(m_pSharedMemory+PLC_READ_LONGDATA_SIGNAL_1, 0x01, 1); |
| | | |
| | | //åæç£ç« ä¿ ä½¬ç» åè¡çèåº å©é éé³ç¤ æä¿èµ´ä¿. |
| | | //åæç£ç« ä¿ ä½¬ç» åè¡çèåº å©é éé³ç¤ æä¿èµ´ä¿. |
| | | ::WaitForSingleObject(m_ReadEvent,2000); |
| | | |
| | | //è¯ä¸°å ç»æ 秦寸 è¼é ä¿ç« 佬绢æ¯ä¿. |
| | | //è¯ä¸°å ç»æ 秦寸 è¼é ä¿ç« 佬绢æ¯ä¿. |
| | | //pData = m_pSharedMemory+PLC_READ_LONGDATA_VALUE; |
| | | |
| | | memcpy(pData, m_pSharedMemory + PLC_READ_LONGDATA_VALUE_1, nWORDSize * 2); |
| | |
| | | #pragma once |
| | | #pragma once |
| | | |
| | | #include "Thread_ControlIF.h" |
| | | #include "TransDataManager.h" |
| | |
| | | char *m_pSharedMemory; |
| | | ST_PLC_RECIVE_01 m_Rcv01; |
| | | ST_PLC_SEND_01 m_Send01,m_SentBack01; |
| | | int m_nSignal; //Signal æ¶ä»¿ |
| | | int m_nLongSignal; //Signal æ¶ä»¿ |
| | | int m_nSignal; //Signal æ¶ä»¿ |
| | | int m_nLongSignal; //Signal æ¶ä»¿ |
| | | CEvent m_ReadEvent; |
| | | double m_dTickPrevTime; |
| | | |
| | |
| | | #include "StdAfx.h" |
| | | #include "StdAfx.h" |
| | | #include "Control_Interface_New.h" |
| | | #include "Config.h" |
| | | #include "SharedMemoryDefine.h" |
| | |
| | | { |
| | | m_bConnect = FALSE; |
| | | |
| | | //4k åæç¼ åè¡ çèåº é¢è 积己 |
| | | //4k åæç¼ åè¡ çèåº é¢è 积己 |
| | | m_hMap = ::CreateFileMapping(INVALID_HANDLE_VALUE,NULL,PAGE_READWRITE |
| | | , 0, SHARED_MEMORY_SIZE, _T("MX_COMPONENT_SHARED_MEMORY")); |
| | | |
| | | //ç¶è æåº ç§¯å·±ç æçå ä¹ä¿æ æåº Connectorå ç´¯æ¼ å.. |
| | | //ç¶è æåº ç§¯å·±ç æçå ä¹ä¿æ æåº Connectorå ç´¯æ¼ å.. |
| | | if (::GetLastError() == ERROR_ALREADY_EXISTS) |
| | | { |
| | | //æåº ç§¯å·±ç æçå ä¹ä¿æ 积己æ é
èªæ¼ å·é¹æ èº è§é |
| | | //æåº ç§¯å·±ç æçå ä¹ä¿æ 积己æ é
èªæ¼ å·é¹æ èº è§é |
| | | m_hMap = ::OpenFileMapping(FILE_MAP_ALL_ACCESS,FALSE,_T("MX_COMPONENT_SHARED_MEMORY")); |
| | | } |
| | | else//ç¶è ç§¯å·±ç æçå ç»ä¿æ æ²¥æ æ¼ç´¯çªç¤ è¼ç»°ä¿. |
| | | else//ç¶è ç§¯å·±ç æçå ç»ä¿æ æ²¥æ æ¼ç´¯çªç¤ è¼ç»°ä¿. |
| | | g_pLog->DisplayMessage(_T("Error : No defect PLCConnector program.")); |
| | | |
| | | if (m_hMap == NULL) |
| | |
| | | return FALSE; |
| | | } |
| | | |
| | | //åè¡çèåº çä¿ |
| | | //åè¡çèåº çä¿ |
| | | m_pSharedMemory = (char*)::MapViewOfFile(m_hMap, FILE_MAP_ALL_ACCESS, 0, 0, SHARED_MEMORY_SIZE); |
| | | |
| | | if (m_pSharedMemory == NULL) |
| | |
| | | return FALSE; |
| | | } |
| | | |
| | | //0æ èº æª¬ææ³ |
| | | //0æ èº æª¬ææ³ |
| | | ZeroMemory(m_pSharedMemory,SHARED_MEMORY_SIZE); |
| | | |
| | | m_bConnect = TRUE; |
| | |
| | | iAddr+=4; |
| | | memcpy(m_pSharedMemory+iAddr, WriteData, nWORDSize*2); |
| | | |
| | | //èçµ è¼é ç²åµ æç¯® 饶 PLCConnectorä¿é¸ PLC æå®¶ä¿ è¼é 婿¡£åº èé¾ç« çè¾°ä¿. |
| | | //èçµ è¼é ç²åµ æç¯® 饶 PLCConnectorä¿é¸ PLC æå®¶ä¿ è¼é 婿¡£åº èé¾ç« çè¾°ä¿. |
| | | m_pSharedMemory[iStartAddr] = 1; |
| | | return true; |
| | | } |
| | |
| | | break; |
| | | } |
| | | |
| | | //åè¡ çèåºä¿ æ±å¹
åæç£ç« ä½¬æ¡£åº èé¾ç« çè¾°ä¿. |
| | | //åè¡ çèåºä¿ æ±å¹
åæç£ç« ä½¬æ¡£åº èé¾ç« çè¾°ä¿. |
| | | ZeroMemory(m_pSharedMemory+nAddress,(nLength)-(nAddress)); |
| | | memcpy(m_pSharedMemory+nAddress, strAddress,strlength*sizeof(TCHAR)); |
| | | memcpy(m_pSharedMemory+nLength, &nWORDSize,2); |
| | | memset(m_pSharedMemory+nSignal, 0x01, 1); |
| | | |
| | | //åæç£ç« ä¿ ä½¬ç» åè¡çèåº å©é éé³ç¤ æä¿èµ´ä¿. |
| | | //åæç£ç« ä¿ ä½¬ç» åè¡çèåº å©é éé³ç¤ æä¿èµ´ä¿. |
| | | ::WaitForSingleObject(m_ReadEvent,2000); |
| | | |
| | | //è¯ä¸°å ç»æ 秦寸 è¼é ä¿ç« 佬绢æ¯ä¿. |
| | | //è¯ä¸°å ç»æ 秦寸 è¼é ä¿ç« 佬绢æ¯ä¿. |
| | | //pData = m_pSharedMemory+PLC_READ_LONGDATA_VALUE; |
| | | |
| | | memcpy(pData, m_pSharedMemory+nValue, nWORDSize*2); |
| | |
| | | return FALSE; |
| | | } |
| | | |
| | | // è¶é£å
-> 16æ³è |
| | | // è¶é£å
-> 16æ³è |
| | | BOOL CControl_Interface_New::StrToHex(CHAR* pchData, CHAR* pchDataSrc, INT nLength, BOOL bWordReverse) |
| | | { |
| | | //static UCHAR saucHex[] = "0123456789ABCDEF"; |
| | |
| | | #pragma once |
| | | #pragma once |
| | | |
| | | #include "Thread_ControlIF.h" |
| | | #include "TransDataManager.h" |
| | | #include "BICommon.h" |
| | | |
| | | // MINI LED EI, NOTCH (çå
) |
| | | // MINI LED EI, NOTCH (çå
) |
| | | // #define MINI_LED_PLC_ADDR_SENDSIGNAL 2129 |
| | | // #define MINI_LED_PLC_TRASFERDATA_ADDR 2000 |
| | | // #define MINI_LED_PLC_ADDR_GLASS_JUDEMENT 2100 |
| | | // #define MINI_LED_PLC_ADDR_PROFILE_JUDEMENT 4300 |
| | | |
| | | // EI, NOTCH, RCUT (æç²® BF) |
| | | // EI, NOTCH, RCUT (æç²® BF) |
| | | #if MINI_LED |
| | | #define EI_PLC_ADDR_SENDSIGNAL 2129 |
| | | #define EI_PLC_TRASFERDATA_ADDR 2000 |
| | |
| | | #pragma once |
| | | #pragma once |
| | | |
| | | #include "ThreadControl.h" |
| | | #include "DefectStorage.h" |
| | |
| | | // 0. Start Line |
| | | BOOL CheckStartLineFrame(DimensionDir eDim,int iFrame); |
| | | BOOL FindGlassStartLine(DimensionDir emDim, stFrameIndex stFrame); |
| | | BOOL MakeNotchArea(DimensionDir emDim); // ç«ç´¯æ¥é è«æ æ Notch 康å¼é åºåº ç¶ç¸ç»¢ åç»°ä¿. |
| | | BOOL MakeNotchArea(DimensionDir emDim); // ç«ç´¯æ¥é è«æ æ Notch 康å¼é åºåº ç¶ç¸ç»¢ åç»°ä¿. |
| | | |
| | | // 1. Process Frame |
| | | BOOL ProcessFrame(int iThread,DimensionDir emDim, stFrameIndex stFrame); |
| | |
| | | // 12. Exception Area Process |
| | | BOOL ExceptionArea_Process(int iThread,DimensionDir emDim, stFrameIndex stFrame); |
| | | |
| | | //13. è§è§åè½ |
| | | //13. è§è§åè½ |
| | | void FinallyVisionProc(DimensionDir eDim); |
| | | |
| | | protected: |
| | |
| | | |
| | |  |
| | | #include "StdAfx.h" |
| | | #include "ThreadControl.h" |
| | | |
| | |
| | | m_nWorkingThread++; |
| | | LeaveCriticalSection(&m_csWorkingEnd); |
| | | |
| | | Sleep(1);// çªç»° èæ ç»æ æ OnThreadEndAll æ éé¥é 俺è ç¶æ é¾å
çª è ä¹ä¿. |
| | | Sleep(1);// çªç»° èæ ç»æ æ OnThreadEndAll æ éé¥é 俺è ç¶æ é¾å
çª è ä¹ä¿. |
| | | |
| | | if(m_pThreadWorker) |
| | | return m_pThreadWorker->OnThreadRun(iThread, pInspectThread); |
| | |
| | | { |
| | | Sleep(1); |
| | | count++; |
| | | if(ms > 0) // æªæç«å åèæ ä¹æ æ. |
| | | if(ms > 0) // æªæç«å åèæ ä¹æ æ. |
| | | { |
| | | if(count > ms) |
| | | return FALSE; // æªæç«å æ¼æ æ²¥æ è¾ä¸° ç»çªç» åºç. |
| | | return FALSE; // æªæç«å æ¼æ æ²¥æ è¾ä¸° ç»çªç» åºç. |
| | | } |
| | | } |
| | | return TRUE; // æ²¥æ è¾ä¸° ç¬ç¢. |
| | | return TRUE; // æ²¥æ è¾ä¸° ç¬ç¢. |
| | | } |
| | | |
| | | BOOL CInspectThread::InitInstance() |
| | |
| | | #pragma once |
| | | #pragma once |
| | | |
| | | #define MAX_THREAD 1 |
| | | |
| | |
| | | virtual ~CInspectThread(); |
| | | void SetWorker(IThreadWorker *pWorker){m_pWorker= pWorker;} |
| | | |
| | | BOOL StartThreadLoop(int iThread); // 檬æ |
| | | BOOL StartThreadLoop(int iThread); // 檬æ |
| | | void StartThreadWork(){m_bWorking= TRUE;} |
| | | |
| | | void StopThread(); |
| | |
| | | |
| | | class CThreadControl : IThreadWorker |
| | | { |
| | | int m_nThreadLoop; // 积己ç Thread Count |
| | | int m_nWorkingThread; // æ¼ç´¯[ç´¯è¯]é ç«ç´¯è Thread Count |
| | | int m_nThreadLoop; // 积己ç Thread Count |
| | | int m_nWorkingThread; // æ¼ç´¯[ç´¯è¯]é ç«ç´¯è Thread Count |
| | | CInspectThread *m_pThread; |
| | | |
| | | IThreadWorker *m_pThreadWorker; |
| | |
| | | |
| | | public: |
| | | |
| | | // 1. Thread ç£çç¼ ç§¯å·±è å®¶æä¿ å
å¯. |
| | | // 1. Thread ç£çç¼ ç§¯å·±è å®¶æä¿ å
å¯. |
| | | int InitThreadControl(int nThread, IThreadWorker* pThreadWorker); |
| | | BOOL ReleaseThreadControl(); |
| | | |
| | | // 2. Thread Loop æä¿è¾ ç´¯è¯ç¼ ç¤ç« å¯ä½ç¶ ç§é£è´¹ |
| | | // 2. Thread Loop æä¿è¾ ç´¯è¯ç¼ ç¤ç« å¯ä½ç¶ ç§é£è´¹ |
| | | int StartThreadControl(); |
| | | void StopThreadControl(); |
| | | |
| | |
| | | #include "StdAfx.h" |
| | | #include "StdAfx.h" |
| | | #include "GlassRecipe.h" |
| | | |
| | | ////////////////////////////////////////////////////////////////////////// |
| | |
| | | #pragma once |
| | | #pragma once |
| | | |
| | | #include "Config.h" |
| | | #include "cv.h" |
| | |
| | | |
| | | typedef struct tagJUDGEEDGE |
| | | { |
| | | BOOL bError; //ä¿ç¾ å¯ä½.. |
| | | int nRefernce; // æé |
| | | int nTolPlus; // +å¾ä¾©å·ç |
| | | int nTolMinus; // -å¾ä¾©å·ç |
| | | int nSlant; //è¤æ¥ |
| | | BOOL bError; //ä¿ç¾ å¯ä½.. |
| | | int nRefernce; // æé |
| | | int nTolPlus; // +å¾ä¾©å·ç |
| | | int nTolMinus; // -å¾ä¾©å·ç |
| | | int nSlant; //è¤æ¥ |
| | | }JUDGEEDGE, *PJUDGEEDGE; |
| | | |
| | | typedef struct tagUserDefectArea |
| | |
| | | typedef struct tagEXECPTION_AREA |
| | | { |
| | | int nAreaType; |
| | | CRect rc; // åº·å¼ å°æ¹ (Mark çç¢) |
| | | SIZE szErrSize; // æ 康å¼ä¿è¾ å©ä¾©çª Size |
| | | int nAppDefect; // å©ä¾©çª Defect è¾å¹
|
| | | int nDetectLimitedArea; // è¤ä¾©ç£ 汲沥 ROI è¤ä¾© è¡å
¬ |
| | | CRect rc; // åº·å¼ å°æ¹ (Mark çç¢) |
| | | SIZE szErrSize; // æ 康å¼ä¿è¾ å©ä¾©çª Size |
| | | int nAppDefect; // å©ä¾©çª Defect è¾å¹
|
| | | int nDetectLimitedArea; // è¤ä¾©ç£ 汲沥 ROI è¤ä¾© è¡å
¬ |
| | | |
| | | void Init() |
| | | { |
| | |
| | | |
| | | |
| | | public: |
| | | TCHAR m_strRecipeName[MAX_STRING_LENGTH]; // é¥ç«ä¹ ææ. |
| | | TCHAR m_strRecipeFileName[MAX_STRING_LENGTH]; // é¥ä¹ç« é¢èç |
| | | TCHAR m_strRecipeFileNameBackUp[MAX_STRING_LENGTH]; // é¥ä¹ç« é¢èç |
| | | TCHAR m_strRecipeName[MAX_STRING_LENGTH]; // é¥ç«ä¹ ææ. |
| | | TCHAR m_strRecipeFileName[MAX_STRING_LENGTH]; // é¥ä¹ç« é¢èç |
| | | TCHAR m_strRecipeFileNameBackUp[MAX_STRING_LENGTH]; // é¥ä¹ç« é¢èç |
| | | int m_nSoftRevision; |
| | | |
| | | CString m_strComment; // Comment |
| | |
| | | BOOL WriteRecipe(CConfig *pFile, int nSideIdx, int nNotchIdx); |
| | | |
| | | public: |
| | | int m_nGlassStartLine_pxl; // Notch æ®¿åº ä¸ é Glass Start Line.. |
| | | CPoint m_ptTopMarkPos; // Notch æ®¿åº ä¸ é Top Align Mark.. |
| | | CPoint m_ptBotMarkPos; // Notch æ®¿åº ä¸ é Bot Align Mark.. |
| | | int m_nGlassStartLine_pxl; // Notch æ®¿åº ä¸ é Glass Start Line.. |
| | | CPoint m_ptTopMarkPos; // Notch æ®¿åº ä¸ é Top Align Mark.. |
| | | CPoint m_ptBotMarkPos; // Notch æ®¿åº ä¸ é Bot Align Mark.. |
| | | |
| | | BOOL m_bNotch_Use; |
| | | CRect m_rtNotch_Area_pxl; |
| | |
| | | // Notch Circle |
| | | int m_nNotch_Circle_Count; |
| | | BOOL m_bNotch_Circle_Use[MAX_SIDE_NOTCH_CIRCLE_COUNT]; |
| | | CPoint m_ptNotch_Circle_TopMarkPos[MAX_SIDE_NOTCH_CIRCLE_COUNT]; // Notch Circle æ®¿åº ä¸ é Top Align Mark.. |
| | | CPoint m_ptNotch_Circle_BotMarkPos[MAX_SIDE_NOTCH_CIRCLE_COUNT]; // Notch Circle æ®¿åº ä¸ é Bot Align Mark.. |
| | | CPoint m_ptNotch_Circle_TopMarkPos[MAX_SIDE_NOTCH_CIRCLE_COUNT]; // Notch Circle æ®¿åº ä¸ é Top Align Mark.. |
| | | CPoint m_ptNotch_Circle_BotMarkPos[MAX_SIDE_NOTCH_CIRCLE_COUNT]; // Notch Circle æ®¿åº ä¸ é Bot Align Mark.. |
| | | CRect m_rtNotch_Circle_Area_pxl[MAX_SIDE_NOTCH_CIRCLE_COUNT]; |
| | | double m_dNotch_Circle_Spec_Radius_um[MAX_SIDE_NOTCH_CIRCLE_COUNT]; |
| | | double m_dNotch_Circle_Spec_Radius_Min_um[MAX_SIDE_NOTCH_CIRCLE_COUNT]; |
| | |
| | | BOOL WriteRecipe(CConfig *pFile, int nSideIdx); |
| | | |
| | | public: |
| | | int m_nSidePanelSize_um; // Scan æç¼ æèº è§æ°¢ åæ |
| | | int m_nSidePanelSize_um; // Scan æç¼ æèº è§æ°¢ åæ |
| | | int m_nFindStartEndLine_X_pxl; // Start/End Find Pos X |
| | | int m_nFindStartEndLine_Threshold; |
| | | int m_nSideLineThreshold; |
| | |
| | | #include "StdAfx.h" |
| | | #include "StdAfx.h" |
| | | #include "HardwareSettings.h" |
| | | |
| | | ////////////////////////////////////////////////////////////////////////// |
| | |
| | | #pragma once |
| | | #pragma once |
| | | |
| | | #include "Config.h" |
| | | #include "Global_Define.h" |
| | | |
| | | #define HARDWARE_SETTING_PATH _T("c:\\EdgeInspector_App\\Config\\HardwareSetting.cfg") // cfg ç«è¾ çèºæ±²æ²¥ |
| | | #define HARDWARE_SETTING_PATH _T("c:\\EdgeInspector_App\\Config\\HardwareSetting.cfg") // cfg ç«è¾ çèºæ±²æ²¥ |
| | | #define HARDWARE_SETTING_BACKUP_DIR_PATH _T("c:\\EdgeInspector_App\\Config\\Backup") |
| | | #define KEY_BASIC _T("Software\\EdgeInspector_App\\BASIC\\") // é¥ç¤è¶é£åº ç«è¾ çèºæ±²æ²¥ |
| | | #define KEY_BASIC _T("Software\\EdgeInspector_App\\BASIC\\") // é¥ç¤è¶é£åº ç«è¾ çèºæ±²æ²¥ |
| | | #define MAX_CNC_COUNT 6 |
| | | #define MAX_NCUT_STAGE_COUNT 12 |
| | | #define MAX_CCUT_STAGE_COUNT 1 |
| | |
| | | #include "StdAfx.h" |
| | | #include "StdAfx.h" |
| | | #include "Side_Data.h" |
| | | |
| | | |
| | |
| | | #pragma once |
| | | #pragma once |
| | | #include "Global_Define.h" |
| | | |
| | | // å¼¥æª æ©é¥ç 160, 1æ©é¥ç 1024, 256æ èº å±åºè¾ å
«è¤çªæ 1æ©é¥çä¿ 4 = 640俺 沥档 |
| | | // å¼¥æª æ©é¥ç 160, 1æ©é¥ç 1024, 256æ èº å±åºè¾ å
«è¤çªæ 1æ©é¥çä¿ 4 = 640俺 沥档 |
| | | #define MAX_INSPECT_AREA_LIST 1024 |
| | | |
| | | class CSide_Data |
| | |
| | | double m_dPixelSizeX; |
| | | double m_dPixelSizeY; |
| | | |
| | | BOOL m_bInspection_Complete; // å
«è¤ è¯ä¸° ç¬ç¢ |
| | | BOOL m_bInspection_Complete; // å
«è¤ è¯ä¸° ç¬ç¢ |
| | | |
| | | // Start Line |
| | | BOOL m_bFindGlassStartLine; |
| | |
| | | int m_nGlassStartFrame; |
| | | |
| | | // Pre End Line |
| | | int m_nPreGlassEndLine; // ææç»ç»° End Line |
| | | int m_nPreGlassEndLine; // ææç»ç»° End Line |
| | | int m_nPreGlassEndFrame; |
| | | |
| | | // End Line |
| | |
| | | int m_nBotMarkToEdge_X_pxl; |
| | | int m_nBotMarkToEdge_Y_pxl; |
| | | |
| | | // Scan Starté åºåº æéç§¦è¾ éç£.. |
| | | // Scan Starté åºåº æéç§¦è¾ éç£.. |
| | | double m_dCamResolutionX; |
| | | double m_dCamResolutionY; |
| | | |
| | | // Frame å è«ç¯® Side Line... |
| | | // Frame å è«ç¯® Side Line... |
| | | double m_nSideLineFrame[MAX_IMAGE_FRAME]; // Frame Side Line |
| | | double m_nSide_Chamfer_LineFrame[MAX_IMAGE_FRAME]; // Frame Side Line |
| | | |
| | |
| | | int m_nSideInspectAreaCount[MAX_IMAGE_FRAME]; |
| | | CRect m_rtSideInspectArea[MAX_IMAGE_FRAME][MAX_SIDE_INSPECT_AREA_COUNT]; |
| | | |
| | | CRect m_rtInspectArea_InsType[MAX_SIDE_INSPECT_TYPE][MAX_IMAGE_FRAME]; // å
«è¤ åº·å¼ |
| | | CRect m_rtInspectArea_InsType[MAX_SIDE_INSPECT_TYPE][MAX_IMAGE_FRAME]; // å
«è¤ åº·å¼ |
| | | int m_nSideFilterLine_InsType[MAX_SIDE_INSPECT_TYPE][MAX_IMAGE_FRAME]; // Side Filter Line |
| | | |
| | | // Measure Dimension |
| | |
| | | int m_nNgDefectCount; |
| | | |
| | | // Thread Processing.. |
| | | BOOL m_nFrameThreadProc[MAX_IMAGE_FRAME]; // Threadå ç¤å±å Frameé çåçªç£.. |
| | | BOOL m_nFrameThreadProc[MAX_IMAGE_FRAME]; // Threadå ç¤å±å Frameé çåçªç£.. |
| | | CCriticalSection m_csFrameThread; |
| | | |
| | | }; |
| | |
| | | #include "StdAfx.h" |
| | | #include "StdAfx.h" |
| | | #include "PriorityThread.h" |
| | | |
| | | #ifdef _DEBUG |
| | |
| | | #pragma once |
| | | #pragma once |
| | | |
| | | #include "WorkThreadPool.h" |
| | | |
| | |
| | | // ProcPADThread.cpp : implementation file |
| | | // ProcPADThread.cpp : implementation file |
| | | // |
| | | |
| | | #include "StdAfx.h" |
| | |
| | | { |
| | | BOOL bReturn = TRUE; |
| | | |
| | | // Thread 积己 饶 Thread èé |
| | | // Thread 积己 饶 Thread èé |
| | | bReturn = CreateTimerThread(this); |
| | | |
| | | return bReturn; |
| | |
| | | SendCheckMSG.dwTickEnd = GetTickCount(); |
| | | SendCheckMSG.dwDuration = SendCheckMSG.dwTickEnd - SendCheckMSG.dwTickStart; |
| | | |
| | | if(pStats->IsPostProcStart() == TRUE) // Post Processå ç«ç´¯ç»èæ æ äºä¿ æå èä¿. |
| | | if(pStats->IsPostProcStart() == TRUE) // Post Processå ç«ç´¯ç»èæ æ äºä¿ æå èä¿. |
| | | { |
| | | it->bDelete = TRUE; |
| | | continue; |
| | |
| | | #pragma once |
| | | #pragma once |
| | | |
| | | #if _MSC_VER > 1000 |
| | | #pragma once |
| | |
| | | #include "StdAfx.h" |
| | | #include "StdAfx.h" |
| | | #include "Thread_ControlIF.h" |
| | | |
| | | #ifdef _DEBUG |
| | |
| | | { |
| | | BOOL bReturn = TRUE; |
| | | |
| | | // Thread 积己 饶 Thread èé |
| | | // Thread 积己 饶 Thread èé |
| | | bReturn = CreateTimerThread(this); |
| | | |
| | | return bReturn; |
| | |
| | | #pragma once |
| | | #pragma once |
| | | |
| | | #include "TimerThreadPool.h" |
| | | |
| | |
| | | // ProcPADThread.cpp : implementation file |
| | | // ProcPADThread.cpp : implementation file |
| | | // |
| | | |
| | | #include "StdAfx.h" |
| | |
| | | { |
| | | BOOL bReturn = TRUE; |
| | | |
| | | // Thread 积己 饶 Thread èé |
| | | // Thread 积己 饶 Thread èé |
| | | bReturn = CreateTimerThread(this); |
| | | |
| | | return bReturn; |
| | |
| | | #pragma once |
| | | #pragma once |
| | | |
| | | #if _MSC_VER > 1000 |
| | | #pragma once |
| | |
| | | #include "StdAfx.h" |
| | | #include "StdAfx.h" |
| | | #include "Thread_ViewRefresh.h" |
| | | |
| | | |
| | |
| | | { |
| | | BOOL bReturn = TRUE; |
| | | |
| | | // Thread 积己 饶 Thread èé |
| | | // Thread 积己 饶 Thread èé |
| | | bReturn = CreateTimerThread(this); |
| | | |
| | | return bReturn; |
| | |
| | | #pragma once |
| | | #pragma once |
| | | |
| | | #include "TimerThreadPool.h" |
| | | #include "Global_Define.h" |
| | |
| | | #include "StdAfx.h" |
| | | #include "StdAfx.h" |
| | | #include "TriggerControl_Mvsol.h" |
| | | |
| | | CTriggerControl_Mvsol::CTriggerControl_Mvsol(void) |
| | |
| | | return (m_hTriggerControl == NULL) ? FALSE : TRUE; |
| | | } |
| | | |
| | | // é£åºè0é
ç²æ¾ç¼ æµå
æ¹ æ¶ä»¿é 0é
æ èº éæ |
| | | // é£åºè0é
ç²æ¾ç¼ æµå
æ¹ æ¶ä»¿é 0é
æ èº éæ |
| | | // SND : 02 57 00 00 00 74 00 80 00 4B 03 |
| | | // ACK : 02 77 00 00 00 74 00 80 00 6B 03 |
| | | // é£åºè1é
ç²æ¾ç¼ æµå
æ¹ æ¶ä»¿é 0é
æ èº éæ |
| | | // é£åºè1é
ç²æ¾ç¼ æµå
æ¹ æ¶ä»¿é 0é
æ èº éæ |
| | | // SND : 02 57 00 01 00 74 00 80 00 4C 03 |
| | | // ACK : 02 77 00 01 00 74 00 80 00 6C 03 |
| | | // é£åºè2é
ç²æ¾ç¼ æµå
æ¹ æ¶ä»¿é 0é
æ èº éæ |
| | | // é£åºè2é
ç²æ¾ç¼ æµå
æ¹ æ¶ä»¿é 0é
æ èº éæ |
| | | // SND : 02 57 00 7D 22 00 74 00 80 00 4D 03 |
| | | // ACK : 02 77 00 7D 22 00 74 00 80 00 6D 03 |
| | | // é£åºè3é
ç²æ¾ç¼ æµå
æ¹ æ¶ä»¿é 0é
æ èº éæ |
| | | // é£åºè3é
ç²æ¾ç¼ æµå
æ¹ æ¶ä»¿é 0é
æ èº éæ |
| | | // SND : 02 57 00 7D 23 00 74 00 80 00 4E 03 |
| | | // ACK : 02 77 00 7D 23 00 74 00 80 00 6E 03 |
| | | |
| | | // é£åºè0é
ç²æ¾ç¼ æµå
æ¹ æ¶ä»¿é 1é
æ èº éæ |
| | | // é£åºè0é
ç²æ¾ç¼ æµå
æ¹ æ¶ä»¿é 1é
æ èº éæ |
| | | // SND : 02 57 00 00 10 74 00 80 00 5B 03 |
| | | // ACK : 02 77 00 00 10 74 00 80 00 7B 03 |
| | | // é£åºè1é
ç²æ¾ç¼ æµå
æ¹ æ¶ä»¿é 1é
æ èº éæ |
| | | // é£åºè1é
ç²æ¾ç¼ æµå
æ¹ æ¶ä»¿é 1é
æ èº éæ |
| | | // SND : 02 57 00 01 10 74 00 80 00 5C 03 |
| | | // ACK : 02 77 00 00 10 74 00 80 00 7B 03 |
| | | // é£åºè2é
ç²æ¾ç¼ æµå
æ¹ æ¶ä»¿é 1é
æ èº éæ |
| | | // é£åºè2é
ç²æ¾ç¼ æµå
æ¹ æ¶ä»¿é 1é
æ èº éæ |
| | | // SND : 02 57 00 7D 22 10 74 00 80 00 5D 03 |
| | | // ACK : 02 77 00 7D 22 10 74 00 80 00 7D 5D 03 |
| | | // é£åºè3é
ç²æ¾ç¼ æµå
æ¹ æ¶ä»¿é 1é
æ èº éæ |
| | | // é£åºè3é
ç²æ¾ç¼ æµå
æ¹ æ¶ä»¿é 1é
æ èº éæ |
| | | // SND : 02 57 00 7D 23 10 74 00 80 00 5E 03 |
| | | // ACK : 02 77 00 7D 23 10 74 00 80 00 7E 03 |
| | | |
| | |
| | | #pragma once |
| | | #pragma once |
| | | |
| | | class CTriggerControl_Mvsol |
| | | { |
| | |
| | | #include "StdAfx.h" |
| | | #include "StdAfx.h" |
| | | #include "DisplayMessage.h" |
| | | |
| | | CDisplayMessage::CDisplayMessage(void) |
| | |
| | | |
| | | BOOL CDisplayMessage::MakeLogFile() |
| | | { |
| | | // Log è´¸åº |
| | | // Log è´¸åº |
| | | if (m_strLogPath.IsEmpty()) |
| | | return FALSE; |
| | | |
| | |
| | | // DisplayMessage.h: interface for the CDisplayMessage class. |
| | | // DisplayMessage.h: interface for the CDisplayMessage class. |
| | | // |
| | | ////////////////////////////////////////////////////////////////////// |
| | | |
| | |
| | | |
| | |  |
| | | #include "StdAfx.h" |
| | | #include "General_Draw.h" |
| | | #include "Server_MemDC.h" |
| | |
| | | #if !defined(__GENERALDRAW_INCLUDED__) |
| | | #if !defined(__GENERALDRAW_INCLUDED__) |
| | | #define __GENERALDRAW_INCLUDED__ |
| | | |
| | | ////////////////////////////////////////////////////////////////////////// |
| | |
| | | CreateFont(&m_Font[EN_ITEMFONT],14,_T("Arial")); |
| | | CreateFont(&m_Font[EN_DATAFONT],12,_T("Arial")); |
| | | CreateFont(&m_Font[EN_BUTTONFONT],24,_T("Arial")); |
| | | CreateFont(&m_Font[EN_HANFONT],12,_T("å¥è¦ç")); |
| | | CreateFont(&m_Font[EN_HANFONT],12,_T("å¥è¦ç")); |
| | | CreateFont(&m_Font[EN_LARGEFONT],48,_T("Arial")); |
| | | CreateFont(&m_Font[EN_MIDDLEFONT],35,_T("Arial")); |
| | | } |
| | |
| | | // MImageStatic.cpp : implementation file |
| | | // MImageStatic.cpp : implementation file |
| | | // |
| | | |
| | | #include "stdafx.h" |
| | |
| | | |
| | | void CMImageStatic::ResetImageStatic() |
| | | { |
| | | // æ¬çª æåºç¤ æ»æ¬ºç« æª¬ææ³. |
| | | // æ¬çª æåºç¤ æ»æ¬ºç« æª¬ææ³. |
| | | ZeroMemory(m_ImageBuf, DEFECTIMAGE_WIDTH * DEFECTIMAGE_HEIGHT + 1); |
| | | m_bSetImage = FALSE; |
| | | m_rectDefect = CRect(0,0,0,0); |
| | |
| | | #if !defined(AFX_HMIMAGESTATIC_H__D74697CD_885E_4E7C_A9EA_2A57C3F51B4A__INCLUDED_) |
| | | #if !defined(AFX_HMIMAGESTATIC_H__D74697CD_885E_4E7C_A9EA_2A57C3F51B4A__INCLUDED_) |
| | | #define AFX_HMIMAGESTATIC_H__D74697CD_885E_4E7C_A9EA_2A57C3F51B4A__INCLUDED_ |
| | | |
| | | #if _MSC_VER > 1000 |
| | |
| | | |
| | | // Attributes |
| | | public: |
| | | UCHAR m_ImageBuf[DEFECTIMAGE_WIDTH * DEFECTIMAGE_HEIGHT + 1]; // æ¬çª æåºç¤ç« çå¯æç»° æ»æ¬º. |
| | | UCHAR m_ImageBuf[DEFECTIMAGE_WIDTH * DEFECTIMAGE_HEIGHT + 1]; // æ¬çª æåºç¤ç« çå¯æç»° æ»æ¬º. |
| | | BYTE m_BitmapInfo[sizeof(BITMAPINFOHEADER)+256*sizeof(RGBQUAD)]; |
| | | BOOL m_bSetImage; |
| | | void ResetImageStatic(); |
| | |
| | | #pragma once |
| | | #pragma once |
| | | |
| | | class CPixelPtr |
| | | { |
| | |
| | | #if !defined(CControlMemDC__INCLUDED_) |
| | | #if !defined(CControlMemDC__INCLUDED_) |
| | | #define CControlMemDC__INCLUDED_ |
| | | |
| | | #if _MSC_VER > 1000 |
| | |
| | | ////////////////////////////////////////////////////////////////////////////////////// |
| | | ////////////////////////////////////////////////////////////////////////////////////// |
| | | // Singleton.h: interface for the Singleton class. |
| | | ////////////////////////////////////////////////////////////////////////////////////// |
| | | // ex) sample |
| | |
| | | |
| | | /*--------------------------------------------------------------------------- |
| | | |
| | | # é¢èç : Singleton.h |
| | | # æ±² ç : interface for the Singleton template class. |
| | | # é´ ä»¿ : |
| | | # å ç» : |
| | | # é¢èç : Singleton.h |
| | | # æ±² ç : interface for the Singleton template class. |
| | | # é´ ä»¿ : |
| | | # å ç» : |
| | | |
| | | ---------------------------------------------------------------------------*/ |
| | | |
| | |
| | | |
| | | /*--------------------------------------------------------------------------- |
| | | |
| | | # åªè´°è¶ ç : Singleton |
| | | # ä½èåªè´°è¶ : ç»æ¾ |
| | | # æ¼ç¼åªè´°è¶ : ç»æ¾ |
| | | # å
åºæ°çç£ : Voidhoon |
| | | # æ±² ç : |
| | | # å½ è : |
| | | # é´ ä»¿ : |
| | | # å·© å ç¢ : |
| | | # åªè´°è¶ ç : Singleton |
| | | # ä½èåªè´°è¶ : ç»æ¾ |
| | | # æ¼ç¼åªè´°è¶ : ç»æ¾ |
| | | # å
åºæ°çç£ : Voidhoon |
| | | # æ±² ç : |
| | | # å½ è : |
| | | # é´ ä»¿ : |
| | | # å·© å ç¢ : |
| | | |
| | | ---------------------------------------------------------------------------*/ |
| | | |
| | |
| | | // =========================================================================== |
| | | // =========================================================================== |
| | | // File Splash.cpp |
| | | // Desc The implementation file for the CSplash class. |
| | | // =========================================================================== |
| | |
| | | // =========================================================================== |
| | | // =========================================================================== |
| | | // File Splash.h |
| | | // Desc The interface of the CSplash class |
| | | // =========================================================================== |
| | |
| | | // Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++ |
| | | // Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++ |
| | | |
| | | // NOTE: Do not modify the contents of this file. If this class is regenerated by |
| | | // Microsoft Visual C++, your modifications will be overwritten. |
| | |
| | | #if !defined(AFX_BTNENH_H__56F13D02_8CDD_42E1_9A73_46B206613CA4__INCLUDED_) |
| | | #if !defined(AFX_BTNENH_H__56F13D02_8CDD_42E1_9A73_46B206613CA4__INCLUDED_) |
| | | #define AFX_BTNENH_H__56F13D02_8CDD_42E1_9A73_46B206613CA4__INCLUDED_ |
| | | |
| | | #if _MSC_VER > 1000 |
| | |
| | | // Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++ |
| | | // Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++ |
| | | |
| | | // NOTE: Do not modify the contents of this file. If this class is regenerated by |
| | | // Microsoft Visual C++, your modifications will be overwritten. |
| | |
| | | #if !defined(AFX_CELLSMANAGER_H__519A1760_5ECF_4E09_ADF7_27E85FC5E0F8__INCLUDED_) |
| | | #if !defined(AFX_CELLSMANAGER_H__519A1760_5ECF_4E09_ADF7_27E85FC5E0F8__INCLUDED_) |
| | | #define AFX_CELLSMANAGER_H__519A1760_5ECF_4E09_ADF7_27E85FC5E0F8__INCLUDED_ |
| | | |
| | | #if _MSC_VER > 1000 |
| | |
| | | // Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++ |
| | | // Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++ |
| | | |
| | | // NOTE: Do not modify the contents of this file. If this class is regenerated by |
| | | // Microsoft Visual C++, your modifications will be overwritten. |
| | |
| | | #if !defined(AFX_FONT_H__680D290B_7A37_47D6_8E9B_300045E3AE85__INCLUDED_) |
| | | #if !defined(AFX_FONT_H__680D290B_7A37_47D6_8E9B_300045E3AE85__INCLUDED_) |
| | | #define AFX_FONT_H__680D290B_7A37_47D6_8E9B_300045E3AE85__INCLUDED_ |
| | | |
| | | #if _MSC_VER > 1000 |
| | |
| | | // Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++ |
| | | // Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++ |
| | | |
| | | // NOTE: Do not modify the contents of this file. If this class is regenerated by |
| | | // Microsoft Visual C++, your modifications will be overwritten. |
| | |
| | | #if !defined(AFX_SURFACECOLOR_H__C6425A9A_E45A_4DD6_BB82_0603E9663A09__INCLUDED_) |
| | | #if !defined(AFX_SURFACECOLOR_H__C6425A9A_E45A_4DD6_BB82_0603E9663A09__INCLUDED_) |
| | | #define AFX_SURFACECOLOR_H__C6425A9A_E45A_4DD6_BB82_0603E9663A09__INCLUDED_ |
| | | |
| | | #if _MSC_VER > 1000 |
| | |
| | | // Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++ |
| | | // Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++ |
| | | |
| | | // NOTE: Do not modify the contents of this file. If this class is regenerated by |
| | | // Microsoft Visual C++, your modifications will be overwritten. |
| | |
| | | #if !defined(AFX_TEXTDESCRIPTOR_H__8439099C_F0E9_45BA_9D40_FCE6F4946E85__INCLUDED_) |
| | | #if !defined(AFX_TEXTDESCRIPTOR_H__8439099C_F0E9_45BA_9D40_FCE6F4946E85__INCLUDED_) |
| | | #define AFX_TEXTDESCRIPTOR_H__8439099C_F0E9_45BA_9D40_FCE6F4946E85__INCLUDED_ |
| | | |
| | | #if _MSC_VER > 1000 |
| | |
| | | // Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++ |
| | | // Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++ |
| | | |
| | | // NOTE: Do not modify the contents of this file. If this class is regenerated by |
| | | // Microsoft Visual C++, your modifications will be overwritten. |
| | |
| | | #if !defined(AFX_TEXTURE_H__AF25E66F_E258_4096_BA2D_3E2E9DB88B3D__INCLUDED_) |
| | | #if !defined(AFX_TEXTURE_H__AF25E66F_E258_4096_BA2D_3E2E9DB88B3D__INCLUDED_) |
| | | #define AFX_TEXTURE_H__AF25E66F_E258_4096_BA2D_3E2E9DB88B3D__INCLUDED_ |
| | | |
| | | #if _MSC_VER > 1000 |
| | |
| | | // DlgLogin.cpp : implementation file |
| | | // DlgLogin.cpp : implementation file |
| | | // |
| | | |
| | | #include "stdafx.h" |
| | |
| | | #pragma once |
| | | #pragma once |
| | | ///////////////////////////////////////////////////////////////////////////// |
| | | // CDlgLogin dialog |
| | | #include "EdgeInspector_App.h" |
| | |
| | | #include "stdafx.h" |
| | | #include "stdafx.h" |
| | | #include "EdgeImageViewer.h" |
| | | |
| | | // CEdgeImageViewer |
| | |
| | | { |
| | | CMenu menu; |
| | | CMenu popMenu; |
| | | menu.CreateMenu(); // å¼¥æå° çæª çæ¥ |
| | | popMenu.CreatePopupMenu(); // æè¯çæ¥ |
| | | menu.CreateMenu(); // å¼¥æå° çæª çæ¥ |
| | | popMenu.CreatePopupMenu(); // æè¯çæ¥ |
| | | |
| | | popMenu.AppendMenu(MF_SEPARATOR); |
| | | popMenu.AppendMenu(MF_STRING, ID_MODE_USER_SELECT, _T("User Select (Mark/Manual Measure)")); |
| | |
| | | if(bAllCheck) |
| | | popMenu.CheckMenuItem(ID_MODE_VIEW_DEFECT_ALL,MF_CHECKED); |
| | | |
| | | // ç§åè¶é£ çæ¥ é¾å
|
| | | // ç§åè¶é£ çæ¥ é¾å
|
| | | CRect rect; |
| | | GetWindowRect(rect); |
| | | int nX = rect.left + point.x; |
| | |
| | | void CEdgeImageViewer::OnPaint() |
| | | { |
| | | CPaintDC dc(this); // device context for painting |
| | | // TODO: å¯æä¿ çç«ç¤ è´¸åºæ å
éç« ç åé¦èªä¿. |
| | | // å¼åºæ çç«ç¤ä¿ æªç§¦è¾ç»° CStatic::OnPaint()é(ç«) é¾å
çªç¤ ä»ç»ç«å·. |
| | | // TODO: å¯æä¿ çç«ç¤ è´¸åºæ å
éç« ç åé¦èªä¿. |
| | | // å¼åºæ çç«ç¤ä¿ æªç§¦è¾ç»° CStatic::OnPaint()é(ç«) é¾å
çªç¤ ä»ç»ç«å·. |
| | | UpdateView(); |
| | | } |
| | | |
| | |
| | | // 1. Draw Buffer Image |
| | | UpdateView_Image(&memDC); |
| | | |
| | | //2. æ¾ç¤ºè§è§ææ |
| | | //2. æ¾ç¤ºè§è§ææ |
| | | UpdateView_VisionResult(&memDC); |
| | | |
| | | |
| | |
| | | for (int i = 0; i < nCount; i++) { |
| | | DispVisionResult inf = pSideData->m_vDispVisionResult[i]; |
| | | int nType = inf.nType; |
| | | if (0 == nType) { //ç¹ |
| | | if (0 == nType) { //ç¹ |
| | | CRect rtMarkPos_pxl = CRect(inf.pointX-31, inf.pointY-31, inf.pointX + 31, inf.pointY + 31); |
| | | CRect rtMarkPos_wnd = GetWndPos(rtMarkPos_pxl); |
| | | CPoint ptMarkPos_wnd = rtMarkPos_wnd.CenterPoint(); |
| | |
| | | memDC->LineTo(ptMarkPos_wnd.x - 8, ptMarkPos_wnd.y + 8); |
| | | } |
| | | } |
| | | else if (1 == nType) { //ç©å½¢ |
| | | else if (1 == nType) { //ç©å½¢ |
| | | CRect rtMarkPos_pxl = CRect(inf.rectX1, inf.rectY1, inf.rectX2, inf.rectY2); |
| | | CRect rtMarkSearchPos_wnd = GetWndPos(rtMarkPos_pxl); |
| | | if (4 == inf.eVision) { |
| | |
| | | memDC->Rectangle(rtMarkSearchPos_wnd); |
| | | } |
| | | } |
| | | else if (2 == nType) { //Ô² |
| | | else if (2 == nType) { //å |
| | | CRect rtMarkPos_pxl = CRect(inf.circleX - inf.circleRadius, inf.circleY - inf.circleRadius, inf.circleX + inf.circleRadius, inf.circleY + inf.circleRadius); |
| | | CRect rtMarkSearchPos_wnd = GetWndPos(rtMarkPos_pxl); |
| | | memDC->SelectObject(&pen); |
| | |
| | | memDC->Ellipse(rtMarkSearchPos_wnd); |
| | | } |
| | | } |
| | | else if (3 == nType) { //ç´çº¿ |
| | | else if (3 == nType) { //ç´çº¿ |
| | | CRect rtMarkPos_pxl = CRect(inf.rectX1 - 31, inf.rectY1 - 31, inf.rectX1 + 31, inf.rectY1 + 31); |
| | | CRect rtMarkPos_wnd = GetWndPos(rtMarkPos_pxl); |
| | | CPoint pt0 = rtMarkPos_wnd.CenterPoint(); |
| | |
| | | UpdateView_MousePoint(&memDC); |
| | | |
| | | #if HALCON_VISION_KEY |
| | | //17. æ¾ç¤ºvision Rsult |
| | | //17. æ¾ç¤ºvision Rsult |
| | | UpdateView_VisionResult(&memDC); |
| | | #endif // HALCON_VISION_KEY |
| | | |
| | |
| | | if(m_ptMousePos_Pxl.y < 0 || m_nTotalHeight <= m_ptMousePos_Pxl.y) |
| | | return; |
| | | |
| | | int nYPos = m_ptMousePos_Pxl.y - m_ptDisplayStart_pxl.y; // Recipe Viewä¿è¾ Scroll ä¸ é æ»æ¬º å°æ¹ç« å®å;;; |
| | | int nYPos = m_ptMousePos_Pxl.y - m_ptDisplayStart_pxl.y; // Recipe Viewä¿è¾ Scroll ä¸ é æ»æ¬º å°æ¹ç« å®å;;; |
| | | |
| | | int nPos = (nYPos * m_nFrameWidth) + m_ptMousePos_Pxl.x; |
| | | |
| | |
| | | memDC->TextOut(10, m_rtWnd.Height() - 45, strTemp); |
| | | |
| | | #if HALCON_VISION_KEY |
| | | if ((0 != m_ptMouseDown.x || 0 != m_ptMouseDown.y) && BlVision_GetVisionRecipe()->getVisionSetOpen()) { //é¼ æ æ¹å |
| | | if ((0 != m_ptMouseDown.x || 0 != m_ptMouseDown.y) && BlVision_GetVisionRecipe()->getVisionSetOpen()) { //é¼ æ æ¹å |
| | | strTemp.Format(_T("(%d / %d)"), m_ptMouseDown.x, m_ptMouseDown.y); |
| | | memDC->TextOut(10, m_rtWnd.Height() - 25, strTemp); |
| | | |
| | |
| | | |
| | | void CEdgeImageViewer::UpdateView_InspectArea(CDC* memDC) |
| | | { |
| | | if(m_pBuffer == NULL || memDC == NULL || m_pGlassData == NULL) |
| | | if (m_pBuffer == NULL || memDC == NULL || m_pGlassData == NULL) { |
| | | return; |
| | | } |
| | | |
| | | if(m_MenuStatus[MODE_VIEW_INSPECT_AREA] == FALSE) |
| | | if (m_MenuStatus[MODE_VIEW_INSPECT_AREA] == FALSE) { |
| | | return; |
| | | } |
| | | |
| | | CPen pen_SideLine(PS_DASH, 1, RGB(255,127,39)); |
| | | CPen pen_ChamferLine(PS_DASH, 1, RGB(255,255,0)); |
| | |
| | | |
| | | CRect rcTmp,rtRealPos; |
| | | int nFilterLine; |
| | | int nChamferLine; |
| | | |
| | | for(int nFrameIdx = 0; nFrameIdx < MAX_IMAGE_FRAME; nFrameIdx++) |
| | | { |
| | | for(int nFrameIdx = 0; nFrameIdx < MAX_IMAGE_FRAME; nFrameIdx++) { |
| | | CRect rtArea_Inspect = m_pGlassData->GetSideData((DimensionDir) m_nSideIdx)->m_rtInspectArea[nFrameIdx]; |
| | | int nSideLine = m_pGlassData->GetSideData((DimensionDir) m_nSideIdx)->m_nSideLineFrame[nFrameIdx]; |
| | | int nSideChamferLine = m_pGlassData->GetSideData((DimensionDir) m_nSideIdx)->m_nSide_Chamfer_LineFrame[nFrameIdx]; |
| | | int nSideLine = (int)m_pGlassData->GetSideData((DimensionDir) m_nSideIdx)->m_nSideLineFrame[nFrameIdx]; |
| | | int nSideChamferLine = (int)m_pGlassData->GetSideData((DimensionDir) m_nSideIdx)->m_nSide_Chamfer_LineFrame[nFrameIdx]; |
| | | |
| | | // Side Line |
| | | rtRealPos = rtArea_Inspect; |
| | | nFilterLine = nSideLine; |
| | | |
| | | if(0 < nFilterLine) |
| | | { |
| | | if(0 < nFilterLine) { |
| | | memDC->SelectObject(&pen_SideLine); |
| | | memDC->MoveTo(int((nFilterLine - m_ptDisplayStart_pxl.x ) * m_dZoom) , int((rtRealPos.top - m_ptDisplayStart_pxl.y) * m_dZoom)); |
| | | memDC->LineTo(int((nFilterLine - m_ptDisplayStart_pxl.x ) * m_dZoom) , int((rtRealPos.bottom - m_ptDisplayStart_pxl.y) * m_dZoom)); |
| | | } |
| | | |
| | | if(0 < nSideChamferLine) |
| | | { |
| | | if(0 < nSideChamferLine) { |
| | | memDC->SelectObject(&pen_ChamferLine); |
| | | memDC->MoveTo(int((nSideChamferLine - m_ptDisplayStart_pxl.x ) * m_dZoom) , int((rtRealPos.top - m_ptDisplayStart_pxl.y) * m_dZoom)); |
| | | memDC->LineTo(int((nSideChamferLine - m_ptDisplayStart_pxl.x ) * m_dZoom) , int((rtRealPos.bottom - m_ptDisplayStart_pxl.y) * m_dZoom)); |
| | | } |
| | | |
| | | for(int nInsType = 0; nInsType < MAX_SIDE_INSPECT_TYPE; nInsType++) |
| | | { |
| | | for(int nInsType = 0; nInsType < MAX_SIDE_INSPECT_TYPE; nInsType++) { |
| | | CRect rtArea = m_pGlassData->GetSideData((DimensionDir) m_nSideIdx)->m_rtInspectArea_InsType[nInsType][nFrameIdx]; |
| | | int nFilterLine = m_pGlassData->GetSideData((DimensionDir) m_nSideIdx)->m_nSideFilterLine_InsType[nInsType][nFrameIdx]; |
| | | |
| | | rtRealPos = rtArea; |
| | | nFilterLine = nFilterLine; |
| | | |
| | | if(rtRealPos.IsRectEmpty() != TRUE && rtRealPos.IsRectNull() != TRUE) |
| | | { |
| | | if(rtRealPos.IsRectEmpty() != TRUE && rtRealPos.IsRectNull() != TRUE) { |
| | | rcTmp.left = int((rtRealPos.left - m_ptDisplayStart_pxl.x ) * m_dZoom); |
| | | rcTmp.right = int((rtRealPos.right - m_ptDisplayStart_pxl.x ) * m_dZoom); |
| | | rcTmp.top = int((rtRealPos.top - m_ptDisplayStart_pxl.y) * m_dZoom); |
| | | rcTmp.bottom = int((rtRealPos.bottom - m_ptDisplayStart_pxl.y) * m_dZoom); |
| | | |
| | | if(rcTmp.top < 0 && rcTmp.bottom > 0 || rcTmp.top > 0 && rcTmp.top < m_rtWnd.bottom +1 || rcTmp.bottom > 0 && rcTmp.bottom < m_rtWnd.bottom +1) |
| | | { |
| | | if(rcTmp.top < 0 && rcTmp.bottom > 0 || rcTmp.top > 0 && rcTmp.top < m_rtWnd.bottom +1 || rcTmp.bottom > 0 && rcTmp.bottom < m_rtWnd.bottom +1) { |
| | | memDC->SelectObject(&pen_Green); |
| | | memDC->MoveTo(int((rtRealPos.left - m_ptDisplayStart_pxl.x ) * m_dZoom) , int((rtRealPos.top - m_ptDisplayStart_pxl.y) * m_dZoom)); |
| | | memDC->LineTo(int((rtRealPos.right - m_ptDisplayStart_pxl.x ) * m_dZoom) , int((rtRealPos.top - m_ptDisplayStart_pxl.y) * m_dZoom)); |
| | |
| | | memDC->LineTo(int((rtRealPos.left - m_ptDisplayStart_pxl.x ) * m_dZoom) , int((rtRealPos.top - m_ptDisplayStart_pxl.y) * m_dZoom)); |
| | | } |
| | | |
| | | if(0 < nFilterLine) |
| | | { |
| | | if(0 < nFilterLine) { |
| | | memDC->SelectObject(&pen_FilterLine); |
| | | memDC->MoveTo(int((nFilterLine - m_ptDisplayStart_pxl.x ) * m_dZoom) , int((rtRealPos.top - m_ptDisplayStart_pxl.y) * m_dZoom)); |
| | | memDC->LineTo(int((nFilterLine - m_ptDisplayStart_pxl.x ) * m_dZoom) , int((rtRealPos.bottom - m_ptDisplayStart_pxl.y) * m_dZoom)); |
| | |
| | | rtCircle.bottom = rtCircle.top + (nDistanceY_wnd * 2); |
| | | memDC->Arc(rtCircle, CPoint(rtCircle.left, rtCircle.CenterPoint().y), CPoint(rtCircle.left, rtCircle.CenterPoint().y)); |
| | | |
| | | /* åº·å¼ æç¼ 1/4 çç¶ çæç» é
悂.. |
| | | /* åº·å¼ æç¼ 1/4 çç¶ çæç» é
悂.. |
| | | if((ptEnd_Wnd.x < ptStart_Wnd.x && ptEnd_Wnd.y < ptStart_Wnd.y) || (ptEnd_Wnd.x > ptStart_Wnd.x && ptEnd_Wnd.y > ptStart_Wnd.y)) |
| | | memDC->Arc(rtCircle, CPoint(rtCircle.CenterPoint().x, ptEnd_Wnd.y), CPoint(ptEnd_Wnd.x, rtCircle.CenterPoint().y)); |
| | | else |
| | |
| | | for(int nX = m_ptMousePos_Pxl.x -8; nX < m_ptMousePos_Pxl.x + 8 ; nX++) |
| | | { |
| | | int nX_pxl = nX; |
| | | int nY_pxl = nY - m_ptDisplayStart_pxl.y; // Recipe Viewä¿è¾ Scroll ä¸ é æ»æ¬º å°æ¹ç« å®å;;; |
| | | int nY_pxl = nY - m_ptDisplayStart_pxl.y; // Recipe Viewä¿è¾ Scroll ä¸ é æ»æ¬º å°æ¹ç« å®å;;; |
| | | |
| | | if(nX_pxl < 0 || m_nFrameWidth <= nX_pxl) |
| | | continue; |
| | |
| | | for(int nX = m_ptMousePos_Pxl.x -8; nX < m_ptMousePos_Pxl.x + 8 ; nX++) |
| | | { |
| | | int nX_pxl = nX; |
| | | int nY_pxl = nY - m_ptDisplayStart_pxl.y; // Recipe Viewä¿è¾ Scroll ä¸ é æ»æ¬º å°æ¹ç« å®å;;; |
| | | int nY_pxl = nY - m_ptDisplayStart_pxl.y; // Recipe Viewä¿è¾ Scroll ä¸ é æ»æ¬º å°æ¹ç« å®å;;; |
| | | |
| | | if(nX_pxl < 0 || m_nFrameWidth <= nX_pxl) |
| | | continue; |
| | |
| | | #if HALCON_VISION_KEY |
| | | void CEdgeImageViewer::OnLButtonUp(UINT nFlags, CPoint point) |
| | | { |
| | | // TODO: 卿¤æ·»å æ¶æ¯å¤çç¨åºä»£ç å/æè°ç¨é»è®¤å¼ |
| | | // TODO: 卿¤æ·»å æ¶æ¯å¤çç¨åºä»£ç å/æè°ç¨é»è®¤å¼ |
| | | m_isMouseDown = FALSE; |
| | | |
| | | CWnd::OnLButtonUp(nFlags, point); |
| | |
| | | #pragma once |
| | | #pragma once |
| | | #include <bitset> |
| | | #include "Global_Define.h" |
| | | #include "cv.h" |
| | |
| | | double m_dPixelSizeY; // Resolution Y |
| | | |
| | | double m_dZoom; |
| | | bitset<MAX_DISPLAY_SET> m_MenuStatus; // æ³æ èé ææ |
| | | EdgeViewer_ManualMeasure m_ManualMeasureStatus; // èæ¼ èæ²¥ ææ |
| | | bitset<MAX_DISPLAY_SET> m_MenuStatus; // æ³æ èé ææ |
| | | EdgeViewer_ManualMeasure m_ManualMeasureStatus; // èæ¼ èæ²¥ ææ |
| | | |
| | | CPoint m_ptDisplayStart_pxl; // Viewç¼ 0,0 ç¼ Pxl å°æ¹ |
| | | CPoint m_ptMousePos_Wnd; // Wndç¼ ä»å¿«è¶ å°æ¹ |
| | | CPoint m_ptMousePos_Pxl; // Pixelç¼ ä»å¿«è¶ å°æ¹ |
| | | CPoint m_ptDisplayStart_pxl; // Viewç¼ 0,0 ç¼ Pxl å°æ¹ |
| | | CPoint m_ptMousePos_Wnd; // Wndç¼ ä»å¿«è¶ å°æ¹ |
| | | CPoint m_ptMousePos_Pxl; // Pixelç¼ ä»å¿«è¶ å°æ¹ |
| | | |
| | | |
| | | public: |
| | |
| | | SIZE m_szImg; |
| | | SIZE m_szMark; |
| | | MANUAL_MEASURE m_ManualMeausre; |
| | | CPoint m_ptMouseSaved; // Profile Save æç·ç« è¤ä¾© |
| | | CPoint m_ptMouseSaved; // Profile Save æç·ç« è¤ä¾© |
| | | |
| | | IViewInterface2Parent *m_pI2M; |
| | | |
| | | CRect m_rcROI; // æ³
å çå¯ç¤ç» ä¹ç»° åº·å¼ |
| | | CRect m_rcROI; // æ³
å çå¯ç¤ç» ä¹ç»° åº·å¼ |
| | | CFont m_sideFont; |
| | | CImage m_ImageMagnify; |
| | | EXECPTION_AREA m_refMark; |
| | |
| | | CGlassRecipe* m_pRecipe; |
| | | |
| | | public: |
| | | CPoint m_ptMouseCurrent; // æ³
ç ä»å¿«è¶ è°
é |
| | | CPoint m_ptMouseCurrent; // æ³
ç ä»å¿«è¶ è°
é |
| | | EXECPTION_AREA *m_pTracker; |
| | | CRect m_WndRect; |
| | | POINT m_ptOrg; // åç æåºç¤ä¿è¾ Display ç«ç´¯ è°
é |
| | | POINT m_ptOrg; // åç æåºç¤ä¿è¾ Display ç«ç´¯ è°
é |
| | | |
| | | int m_nModeTrackerVCR; |
| | | CPoint m_ptOldMouseVCR; |
| | |
| | | // FrameImg.cpp : 夿³
é¢èæ¶èªä¿. |
| | | // FrameImg.cpp : 夿³
é¢èæ¶èªä¿. |
| | | // |
| | | |
| | | #include "stdafx.h" |
| | |
| | | |
| | | |
| | | WCHAR wStr[MAX_PATH]; |
| | | FontFamily fontFamily(L"å¥è¦ç"); |
| | | FontFamily fontFamily(L"å¥è¦ç"); |
| | | Font font(&fontFamily,11, FontStyleBold ); |
| | | |
| | | swprintf(wStr, L"%d[%d,%d]",m_Image.GetPixel(m_ptCur.x + m_nScrStartX,m_ptCur.y) & 0xff,m_ptCur.x + m_nScrStartX,m_ptCur.y); |
| | |
| | | void CFrameImg::OnPaint() |
| | | { |
| | | CPaintDC dc(this); // device context for painting |
| | | // TODO: å¯æä¿ çç«ç¤ è´¸åºæ å
éç« ç åé¦èªä¿. |
| | | // å¼åºæ çç«ç¤ä¿ æªç§¦è¾ç»° CStatic::OnPaint()é(ç«) é¾å
çªç¤ ä»ç»ç«å·. |
| | | // TODO: å¯æä¿ çç«ç¤ è´¸åºæ å
éç« ç åé¦èªä¿. |
| | | // å¼åºæ çç«ç¤ä¿ æªç§¦è¾ç»° CStatic::OnPaint()é(ç«) é¾å
çªç¤ ä»ç»ç«å·. |
| | | ViewUpdate(); |
| | | } |
| | | |
| | |
| | | dc.SetTextColor(RGB(0,0,255)); |
| | | |
| | | dc.TextOut(120,3,strTmp); |
| | | // TFT CF Lineé å¼èµ´ä¿. |
| | | // TFT CF Lineé å¼èµ´ä¿. |
| | | |
| | | szROI.cx = CHKMIN(int(m_WndRect.Width() / m_dZoom), m_szImg.cx); |
| | | szROI.cy = int(m_WndRect.Height() / m_dZoom); |
| | |
| | | dc.MoveTo(x,y-7); |
| | | dc.LineTo(x,y+7); |
| | | |
| | | // Cornerç« å¼èµ´ä¿. |
| | | // Cornerç« å¼èµ´ä¿. |
| | | DrawCorner(dc,ptMark); |
| | | |
| | | //Defecté å¼èµ´ä¿. |
| | | //Defecté å¼èµ´ä¿. |
| | | DrawDefect(dc); |
| | | |
| | | // å
«è¤ 康å¼é å¼èµ´ä¿ |
| | | // å
«è¤ 康å¼é å¼èµ´ä¿ |
| | | //DrawInspectArea(dc); |
| | | |
| | | DrawMeasureLine(dc,ptMark); |
| | |
| | | int nValue; |
| | | |
| | | int nTx = (int)(x * m_dZoom) - 40; |
| | | if(m_nSide < 4) // æä½ |
| | | if(m_nSide < 4) // æä½ |
| | | { |
| | | // CF LINE |
| | | dc.MoveTo((int)((pInsResult->nGrindframe[0][nFrameIndex]- m_ptOrg.x) * m_dZoom) , m_ptMouseCurrent.y); |
| | |
| | | //strTmp.Format("GRIND : %d um",nValue); |
| | | dc.TextOut( nTx ,m_ptMouseCurrent.y + 30,strTmp); |
| | | } |
| | | else // çªä½ |
| | | else // çªä½ |
| | | { |
| | | // TFT LINE |
| | | dc.MoveTo((int)((pInsResult->nGrindframe[0][nFrameIndex]- m_ptOrg.x) * m_dZoom) , m_ptMouseCurrent.y); |
| | |
| | | |
| | | GetResolution(dResH,dResV); |
| | | |
| | | // ä»åç« å¼èµ´ä¿. |
| | | // ä»åç« å¼èµ´ä¿. |
| | | dc.SelectObject(&pen2); |
| | | |
| | | if(bMark[0]) |
| | |
| | | #pragma once |
| | | #pragma once |
| | | |
| | | |
| | | // CFrameImg |
| | |
| | | SIZE m_szImg; |
| | | SIZE m_szMark; |
| | | MANUAL_MEASURE m_ManualMeausre; |
| | | CPoint m_ptMouseSaved; // Profile Save æç·ç« è¤ä¾© |
| | | CPoint m_ptMouseSaved; // Profile Save æç·ç« è¤ä¾© |
| | | |
| | | IViewInterface2Parent *m_pI2M; |
| | | bitset<MAX_DISPLAY_MODE> m_bitModeDisplay; // æ³æ èé bit |
| | | CRect m_rcROI; // æ³
å çå¯ç¤ç» ä¹ç»° åº·å¼ |
| | | bitset<MAX_DISPLAY_MODE> m_bitModeDisplay; // æ³æ èé bit |
| | | CRect m_rcROI; // æ³
å çå¯ç¤ç» ä¹ç»° åº·å¼ |
| | | CFont m_sideFont; |
| | | CImage m_ImageMagnify; |
| | | EXECPTION_AREA m_refMark; |
| | |
| | | CGlassRecipe* m_pRecipe; |
| | | |
| | | public: |
| | | CPoint m_ptMouseCurrent; // æ³
ç ä»å¿«è¶ è°
é |
| | | CPoint m_ptMouseCurrent; // æ³
ç ä»å¿«è¶ è°
é |
| | | EXECPTION_AREA *m_pTracker; |
| | | CRect m_WndRect; |
| | | POINT m_ptOrg; // åç æåºç¤ä¿è¾ Display ç«ç´¯ è°
é |
| | | POINT m_ptOrg; // åç æåºç¤ä¿è¾ Display ç«ç´¯ è°
é |
| | | |
| | | int m_nModeTrackerVCR; |
| | | CPoint m_ptOldMouseVCR; |
| | |
| | | // ImgDefect.cpp : 夿³
é¢èæ¶èªä¿. |
| | | // ImgDefect.cpp : 夿³
é¢èæ¶èªä¿. |
| | | // |
| | | |
| | | #include "stdafx.h" |
| | |
| | | |
| | | |
| | | |
| | | // CImgDefect çç«ç¤ è´¸åºææ¶èªä¿. |
| | | // CImgDefect çç«ç¤ è´¸åºææ¶èªä¿. |
| | | |
| | | |
| | | BOOL CImgDefect::Create(RECT const & rect, CWnd * pParentWnd /*= 0*/) |
| | |
| | | void CImgDefect::OnPaint() |
| | | { |
| | | CPaintDC dc(this); // device context for painting |
| | | // TODO: å¯æä¿ çç«ç¤ è´¸åºæ å
éç« ç åé¦èªä¿. |
| | | // å¼åºæ çç«ç¤ä¿ æªç§¦è¾ç»° CWnd::OnPaint()é(ç«) é¾å
çªç¤ ä»ç»ç«å·. |
| | | // TODO: å¯æä¿ çç«ç¤ è´¸åºæ å
éç« ç åé¦èªä¿. |
| | | // å¼åºæ çç«ç¤ä¿ æªç§¦è¾ç»° CWnd::OnPaint()é(ç«) é¾å
çªç¤ ä»ç»ç«å·. |
| | | |
| | | CDC *pDC = GetDC(); |
| | | |
| | |
| | | DrawManualMeasure(memDC); |
| | | } |
| | | } |
| | | else // è§ Size Mode |
| | | else // è§ Size Mode |
| | | { |
| | | rc.right = m_img.GetWidth(); |
| | | rc.bottom = m_img.GetHeight(); |
| | |
| | | #pragma once |
| | | #pragma once |
| | | |
| | | // CImgDefect |
| | | |
| | |
| | | int m_nMode; |
| | | BOOL m_bMeasure; |
| | | int m_nTurn; |
| | | int m_nTextPos; // 0: Text å
仿 æçª 1: left Top, 2: rigt top, 3: left bottom, 4: right bottom |
| | | int m_nTextPos; // 0: Text å
仿 æçª 1: left Top, 2: rigt top, 3: left bottom, 4: right bottom |
| | | CString m_strTextInfo; |
| | | double m_dPx,m_dPy; |
| | | public: |
| | |
| | | // ImgListView.cpp : implementation file |
| | | // ImgListView.cpp : implementation file |
| | | // |
| | | |
| | | #include "stdafx.h" |
| | |
| | | { |
| | | m_bProcesing = 0; |
| | | m_bSelect = 0; |
| | | _stprintf(m_Path,_T("%s%s"),strFilePath,strFileName); |
| | | _stprintf_s(m_Path, MAX_PATH, _T("%s%s"), strFilePath, strFileName); |
| | | m_bValid = m_Img.Load(m_Path); |
| | | m_rcImg = CRect(0,0,100,100); |
| | | } |
| | |
| | | void CPotoItem::Draw(CDC *pDC, CRect rcClient, CRect rcChange) |
| | | { |
| | | //------------------------------------------------------ |
| | | // æ²¥è¤é¿å± åæç« ç±ç»° çèåºDC 积己( MemDC ) |
| | | // æ²¥è¤é¿å± åæç« ç±ç»° çèåºDC 积己( MemDC ) |
| | | //------------------------------------------------------ |
| | | |
| | | CDC MemDC; |
| | |
| | | MemBitmap.CreateCompatibleBitmap( pDC , rcChange.Width() , rcChange.Height() ); |
| | | CBitmap * pOldBitmap = (CBitmap *)MemDC.SelectObject( &MemBitmap ); |
| | | |
| | | // ç¡
ç ç£¨çªæ |
| | | // ç¡
ç ç£¨çªæ |
| | | CRect rcMemDC(0, 0, rcChange.Width(), rcChange.Height()); |
| | | |
| | | if(m_bSelect) |
| | |
| | | |
| | | if(m_bProcesing) |
| | | DrawRect(&MemDC,RGB(255,0,0),rcMemDC); |
| | | // å¯å½ç¯® åèº æèº 5 |
| | | // Text å éå¯é¾ åå 25 |
| | | // å¯å½ç¯® åèº æèº 5 |
| | | // Text å éå¯é¾ åå 25 |
| | | CRect rcImg (5, 5, rcChange.Width()-5, rcChange.Height()-ITEM_TEXT); |
| | | m_Img.Draw(MemDC.GetSafeHdc(), rcImg); |
| | | DrawText(&MemDC,RGB(0,0,255)); |
| | |
| | | int mode = pDC->SetBkMode( TRANSPARENT ); |
| | | int modeText = pDC->SetTextColor( color ); |
| | | //----------------------------------------------------------- |
| | | // æåºç¤çé æ³æä¿ å
仿èä¿. |
| | | // File Nameæ 15ç£ ææ ç»æ ~~ èº ç»µè· |
| | | // æåºç¤çé æ³æä¿ å
仿èä¿. |
| | | // File Nameæ 15ç£ ææ ç»æ ~~ èº ç»µè· |
| | | //----------------------------------------------------------- |
| | | CString strtmp; |
| | | // if(m_strName.GetLength() > 15) |
| | |
| | | MemDC.CreateCompatibleDC( &dc ); |
| | | MemBitmap.CreateCompatibleBitmap( &dc , rect.Width() , rect.Height() ); |
| | | pOldBitmap = (CBitmap *)MemDC.SelectObject( &MemBitmap ); |
| | | MemDC.FillRect( &rect , &m_BgBrush ); // ç¡
ç祸æ èº å¿«æ¥ ç£¨ç§¦æç»... |
| | | MemDC.FillRect( &rect , &m_BgBrush ); // ç¡
ç祸æ èº å¿«æ¥ ç£¨ç§¦æç»... |
| | | MemDC.SetWindowOrg( ptScroll.x , ptScroll.y ); // SetWindowOrg() |
| | | |
| | | |
| | |
| | | |
| | | if( !tmpRc.IntersectRect( pImgItem->m_rcImg , rcInvalid ) ) |
| | | { |
| | | //è¾èº è¬æ¹ç»° ä½çæ ç»ä¿ç»° å·´é å±é¸¥è¾°ä¿. |
| | | //æº æ³
ç é
æè¢ç¯® æ³æä¿ ä¿ç« å¼åºç¤ è¼ç»°ä¿. |
| | | //è¾èº è¬æ¹ç»° ä½çæ ç»ä¿ç»° å·´é å±é¸¥è¾°ä¿. |
| | | //æº æ³
ç é
æè¢ç¯® æ³æä¿ ä¿ç« å¼åºç¤ è¼ç»°ä¿. |
| | | continue; |
| | | } |
| | | pImgItem->Draw(&MemDC,rcInvalid,pImgItem->m_rcImg); |
| | |
| | | void CImgListView::OnLButtonDown(UINT nFlags, CPoint point) |
| | | { |
| | | CPoint ptScroll(point); |
| | | ptScroll += GetScrollPosition(); // è¶åè´¹ç è°
éç« æ¹ç§¦æç»... |
| | | ptScroll += GetScrollPosition(); // è¶åè´¹ç è°
éç« æ¹ç§¦æç»... |
| | | |
| | | if(SelectItemChk(ptScroll)) |
| | | Invalidate(FALSE);//Invalidate(); |
| | |
| | | |
| | | BOOL CImgListView::OnEraseBkgnd(CDC* pDC) |
| | | { |
| | | // TODO: å¯æä¿ çç«ç¤ è´¸åºæ å
éç« ç å æ£º/èç»° æå¤¯è¼é é¾å
é¦èªä¿. |
| | | // TODO: å¯æä¿ çç«ç¤ è´¸åºæ å
éç« ç å æ£º/èç»° æå¤¯è¼é é¾å
é¦èªä¿. |
| | | CRect rect ; |
| | | GetClientRect(&rect); |
| | | pDC->FillRect(rect, &m_BgBrush); |
| | |
| | | CPoint ptScroll = GetScrollPosition(); |
| | | pDC->SetWindowOrg(ptScroll.x,ptScroll.y); |
| | | //---------------------------------------------------- |
| | | // Invalidate ç 康å¼ç¼ è°
éç« ç¨ åº è°
éæèº 彿³çªæ |
| | | // å°ç§¦è¾ æç»¢æ¯ä¿. |
| | | // Invalidate ç 康å¼ç¼ è°
éç« ç¨ åº è°
éæèº 彿³çªæ |
| | | // å°ç§¦è¾ æç»¢æ¯ä¿. |
| | | //---------------------------------------------------- |
| | | CRect rcInvalid; |
| | | GetClientRect(rcInvalid); |
| | |
| | | tmpRc = pImgItem->m_rcImg; |
| | | if( !tmpRc.IntersectRect( pImgItem->m_rcImg , rcInvalid ) ) |
| | | { |
| | | //è¾èº è¬æ¹ç»° ä½çæ ç»ä¿ç»° å·´é å±é¸¥è¾°ä¿. |
| | | //æº æ³
ç é
æè¢ç¯® æ³æä¿ ä¿ç« å¼åºç¤ è¼ç»°ä¿. |
| | | //è¾èº è¬æ¹ç»° ä½çæ ç»ä¿ç»° å·´é å±é¸¥è¾°ä¿. |
| | | //æº æ³
ç é
æè¢ç¯® æ³æä¿ ä¿ç« å¼åºç¤ è¼ç»°ä¿. |
| | | continue; |
| | | } |
| | | pImgItem->Draw(&MemDC,rcInvalid,pImgItem->m_rcImg); |
| | |
| | | |
| | | void CImgListView::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) |
| | | { |
| | | // TODO: å¯æä¿ çç«ç¤ è´¸åºæ å
éç« ç å æ£º/èç»° æå¤¯è¼é é¾å
é¦èªä¿. |
| | | // TODO: å¯æä¿ çç«ç¤ è´¸åºæ å
éç« ç å æ£º/èç»° æå¤¯è¼é é¾å
é¦èªä¿. |
| | | //UpdateView(); |
| | | CScrollView::OnVScroll(nSBCode, nPos, pScrollBar); |
| | | } |
| | |
| | | #if !defined(AFX_IMGLISTVIEW_H__C0DD00C1_EEA9_4E84_BB03_8DE83B2DEDEA__INCLUDED_) |
| | | #if !defined(AFX_IMGLISTVIEW_H__C0DD00C1_EEA9_4E84_BB03_8DE83B2DEDEA__INCLUDED_) |
| | | #define AFX_IMGLISTVIEW_H__C0DD00C1_EEA9_4E84_BB03_8DE83B2DEDEA__INCLUDED_ |
| | | |
| | | #if _MSC_VER > 1000 |
| | |
| | | |
| | | #define LEFT_MARJIN 15 |
| | | #define TOP_MARJIN 15 |
| | | #define ITEM_WIDTH 190 // 380 // è¼æ å®å·®ç»¢å
· çªéª¨èº defineæå± constç»° 绢å¡åºç¤ è¼ç»°ä¿. |
| | | #define ITEM_WIDTH 190 // 380 // è¼æ å®å·®ç»¢å
· çªéª¨èº defineæå± constç»° 绢å¡åºç¤ è¼ç»°ä¿. |
| | | #define ITEM_HEIGHT 160 // 320 // |
| | | #define ITEM_TEXT 22 // é
æè¢ä¿ æªè èç£ èæ |
| | | #define ITEM_ROW_MARJIN 15 // é
æè¢è é
æè¢ç¼ åèºè¤æ |
| | | #define ITEM_COL_MARJIN 20 // é
æè¢è é
æè¢ç¼ æèºè¤æ |
| | | #define ITEM_TEXT 22 // é
æè¢ä¿ æªè èç£ èæ |
| | | #define ITEM_ROW_MARJIN 15 // é
æè¢è é
æè¢ç¼ åèºè¤æ |
| | | #define ITEM_COL_MARJIN 20 // é
æè¢è é
æè¢ç¼ æèºè¤æ |
| | | |
| | | class CPotoItem |
| | | { |
| | |
| | | |
| | | CImage m_Img; |
| | | CRect m_rcImg; |
| | | BOOL m_bSelect; // æ¥ç¶ ç»èç»°å |
| | | BOOL m_bValid; // æçç¼ ç²®çå·± |
| | | BOOL m_bProcesing; // è´¸åºåç¢å |
| | | BOOL m_bSelect; // æ¥ç¶ ç»èç»°å |
| | | BOOL m_bValid; // æçç¼ ç²®çå·± |
| | | BOOL m_bProcesing; // è´¸åºåç¢å |
| | | TCHAR m_Path[MAX_PATH]; |
| | | |
| | | CRect GetRect() { return m_rcImg; } |
| | |
| | | |
| | | public: |
| | | IMG_MAP m_ImgMap; |
| | | int m_nHItem; // æèºèº å²ä¿ºå å
仿æ çªå·´ç¢å? |
| | | int m_nHItem; // æèºèº å²ä¿ºå å
仿æ çªå·´ç¢å? |
| | | int m_nHItemOld; |
| | | int m_nAddItem; // 佬绢ç¸ç¢ é
æè¢ç¼ éè®è |
| | | CBrush m_BgBrush; // ç¡
çBrush |
| | | int m_nAddItem; // 佬绢ç¸ç¢ é
æè¢ç¼ éè®è |
| | | CBrush m_BgBrush; // ç¡
çBrush |
| | | CImage* m_pSelImg; |
| | | CPotoItem *m_pSelectItem; |
| | | public: |
| | |
| | | // Dlg_LampControl.cpp : 夿³
é¢èæ¶èªä¿. |
| | | // Dlg_LampControl.cpp : 夿³
é¢èæ¶èªä¿. |
| | | // |
| | | |
| | | #include "stdafx.h" |
| | |
| | | #include "Global_Define.h" |
| | | |
| | | |
| | | // CViewLampControl æªæ³ æç£æ¶èªä¿. |
| | | // CViewLampControl æªæ³ æç£æ¶èªä¿. |
| | | |
| | | IMPLEMENT_DYNAMIC(CViewLampControl, CDialog) |
| | | |
| | |
| | | } |
| | | |
| | | return TRUE; // return TRUE unless you set the focus to a control |
| | | // æå¯: OCX å å·± å
¶æç¤ç»° FALSEç« é¦å¸ç§¦å
· é¦èªä¿. |
| | | // æå¯: OCX å å·± å
¶æç¤ç»° FALSEç« é¦å¸ç§¦å
· é¦èªä¿. |
| | | } |
| | | |
| | | void CViewLampControl::ClickChkLampOnOffButton() |
| | |
| | | void CViewLampControl::OnNMCustomdrawSlider2(NMHDR *pNMHDR, LRESULT *pResult) |
| | | { |
| | | LPNMCUSTOMDRAW pNMCD = reinterpret_cast<LPNMCUSTOMDRAW>(pNMHDR); |
| | | // TODO: å¯æä¿ ç§é£è´¹ è
è¦ è´¸åºæ å
éç« ç åé¦èªä¿. |
| | | // TODO: å¯æä¿ ç§é£è´¹ è
è¦ è´¸åºæ å
éç« ç åé¦èªä¿. |
| | | |
| | | LampValueUpdate(1,IDC_EDIT_LAMP_VALUE_2); |
| | | *pResult = 0; |
| | |
| | | void CViewLampControl::OnNMCustomdrawSlider3(NMHDR *pNMHDR, LRESULT *pResult) |
| | | { |
| | | LPNMCUSTOMDRAW pNMCD = reinterpret_cast<LPNMCUSTOMDRAW>(pNMHDR); |
| | | // TODO: å¯æä¿ ç§é£è´¹ è
è¦ è´¸åºæ å
éç« ç åé¦èªä¿. |
| | | // TODO: å¯æä¿ ç§é£è´¹ è
è¦ è´¸åºæ å
éç« ç åé¦èªä¿. |
| | | |
| | | LampValueUpdate(2,IDC_EDIT_LAMP_VALUE_3); |
| | | |
| | |
| | | #pragma once |
| | | #pragma once |
| | | #include "afxcmn.h" |
| | | #include "EdgeInspector_App.h" |
| | | #include "Global_Define.h" |
| | |
| | | #include "GlassRecipe.h" |
| | | #include "HardwareSettings.h" |
| | | #include "Glass_Data.h" |
| | | // CViewLampControl æªæ³ æç£æ¶èªä¿. |
| | | // CViewLampControl æªæ³ æç£æ¶èªä¿. |
| | | |
| | | #define UM_LIGHT_APPLY_RECIPE (WM_USER + 4001) |
| | | |
| | |
| | | DECLARE_DYNAMIC(CViewLampControl) |
| | | |
| | | public: |
| | | CViewLampControl(CWnd* pParent = NULL); // éé ç§¯å·±ç£æ¶èªä¿. |
| | | CViewLampControl(CWnd* pParent = NULL); // éé ç§¯å·±ç£æ¶èªä¿. |
| | | virtual ~CViewLampControl(); |
| | | |
| | | // æªæ³ æç£ åæç£æ¶èªä¿. |
| | | // æªæ³ æç£ åæç£æ¶èªä¿. |
| | | enum { IDD = IDD_DLG_LAMP_CONTROL }; |
| | | |
| | | protected: |
| | | virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV ç¤çæ¶èªä¿. |
| | | virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV ç¤çæ¶èªä¿. |
| | | void ClickChkLampOnOffButton(); |
| | | void ClickChkCloseButton(); |
| | | DECLARE_MESSAGE_MAP() |
| | |
| | | // ViewDefect.cpp : 夿³
é¢èæ¶èªä¿. |
| | | // ViewDefect.cpp : 夿³
é¢èæ¶èªä¿. |
| | | // |
| | | |
| | | #include "stdafx.h" |
| | |
| | | #include "afxdialogex.h" |
| | | #include "Global_Define.h" |
| | | |
| | | // CViewDefect æªæ³ æç£æ¶èªä¿. |
| | | // CViewDefect æªæ³ æç£æ¶èªä¿. |
| | | |
| | | #define GRID_FIX_COLOR RGB(144,200,246) |
| | | #define GRID_COLOR RGB(242,242,242) |
| | |
| | | return TRUE; |
| | | } |
| | | |
| | | // CViewDefect çç«ç¤ è´¸åºææ¶èªä¿. |
| | | // CViewDefect çç«ç¤ è´¸åºææ¶èªä¿. |
| | | void CViewMain_Defect::SetRecipe(CHardwareSettings *pHW) |
| | | { |
| | | m_pHardware = pHW; |
| | |
| | | |
| | | if(m_pSelDefect->m_strSaveImagePath.IsEmpty() == TRUE || m_pSelDefect->m_bJudge_NG == FALSE) |
| | | { |
| | | // Bufferä¿è¾ æåºç¤ åå»å·é¸ çªç»°å·´æ¡£.. |
| | | // Bufferä¿è¾ æåºç¤ åå»å·é¸ çªç»°å·´æ¡£.. |
| | | |
| | | } |
| | | else |
| | |
| | | |
| | | void CViewMain_Defect::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) |
| | | { |
| | | // TODO: å¯æä¿ çç«ç¤ è´¸åºæ å
éç« ç å æ£º/èç»° æå¤¯è¼é é¾å
é¦èªä¿. |
| | | // TODO: å¯æä¿ çç«ç¤ è´¸åºæ å
éç« ç å æ£º/èç»° æå¤¯è¼é é¾å
é¦èªä¿. |
| | | SCROLLINFO si; |
| | | si.fMask = SIF_ALL; |
| | | m_ctrlScrollH.GetScrollInfo(&si, SIF_ALL); |
| | |
| | | lf.lfItalic = 0; |
| | | lf.lfHeight = 14; |
| | | lf.lfWeight = FW_BOLD; |
| | | _tcscpy(lf.lfFaceName, _T("Arial")); |
| | | _tcscpy_s(lf.lfFaceName, LF_FACESIZE, _T("Arial")); |
| | | |
| | | m_GrdDefect.GetDefaultCell(TRUE, FALSE)->SetFont(&lf); |
| | | m_GrdDefect.GetDefaultCell(FALSE, TRUE)->SetFont(&lf); |
| | |
| | | #pragma once |
| | | #pragma once |
| | | |
| | | #include "Global_Define.h" |
| | | #include "GridCtrl.h" |
| | |
| | | typedef std::vector<CDefect*> LISTDefect; |
| | | typedef std::vector<CDefect*>::iterator LISTDefectit; |
| | | |
| | | // CViewDefect æªæ³ æç£æ¶èªä¿. |
| | | // CViewDefect æªæ³ æç£æ¶èªä¿. |
| | | |
| | | class CViewMain_Defect : public CDialogEx |
| | | { |
| | | DECLARE_DYNAMIC(CViewMain_Defect) |
| | | |
| | | public: |
| | | CViewMain_Defect(CWnd* pParent = NULL); // éé ç§¯å·±ç£æ¶èªä¿. |
| | | CViewMain_Defect(CWnd* pParent = NULL); // éé ç§¯å·±ç£æ¶èªä¿. |
| | | virtual ~CViewMain_Defect(); |
| | | |
| | | // æªæ³ æç£ åæç£æ¶èªä¿. |
| | | // æªæ³ æç£ åæç£æ¶èªä¿. |
| | | enum { IDD = IDD_MAIN_VIEW_DEFECT }; |
| | | |
| | | protected: |
| | | virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV ç¤çæ¶èªä¿. |
| | | virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV ç¤çæ¶èªä¿. |
| | | virtual BOOL OnInitDialog(void); |
| | | virtual BOOL PreTranslateMessage(MSG* pMsg); |
| | | afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar); |
| | |
| | | // ViewHWSetting.cpp : 夿³
é¢èæ¶èªä¿. |
| | | // ViewHWSetting.cpp : 夿³
é¢èæ¶èªä¿. |
| | | // |
| | | |
| | | #include "stdafx.h" |
| | |
| | | #include "Global_Define.h" |
| | | #include "NewCellTypes\GridCellCombo.h" |
| | | |
| | | // CViewHWSetting æªæ³ æç£æ¶èªä¿. |
| | | // CViewHWSetting æªæ³ æç£æ¶èªä¿. |
| | | extern BOOL g_bUse_SaveAllDMP; |
| | | const int LIGHT_COLUMN_COUNT = 4; |
| | | const TCHAR* LIGHT_COLUMN_ITEM[LIGHT_COLUMN_COUNT] = {_T("ID"),_T("Type"),_T("Port&IP"),_T("Maker")}; |
| | |
| | | |
| | | return TRUE; |
| | | } |
| | | // CViewHWSetting çç«ç¤ è´¸åºææ¶èªä¿. |
| | | // CViewHWSetting çç«ç¤ è´¸åºææ¶èªä¿. |
| | | |
| | | |
| | | void CViewMain_HWSetting::Init_LightGrid() |
| | |
| | | lf.lfItalic = 0; |
| | | lf.lfHeight = 14; |
| | | lf.lfWeight = FW_BOLD; |
| | | _tcscpy(lf.lfFaceName, _T("Arial")); |
| | | _tcscpy_s(lf.lfFaceName, LF_FACESIZE, _T("Arial")); |
| | | |
| | | m_LightGrid.GetDefaultCell(TRUE, FALSE)->SetFont(&lf); |
| | | m_LightGrid.GetDefaultCell(FALSE, TRUE)->SetFont(&lf); |
| | |
| | | lf.lfItalic = 0; |
| | | lf.lfHeight = 14; |
| | | lf.lfWeight = FW_BOLD; |
| | | _tcscpy(lf.lfFaceName, _T("Arial")); |
| | | _tcscpy_s(lf.lfFaceName, LF_FACESIZE, _T("Arial")); |
| | | |
| | | m_CameraGrid.GetDefaultCell(TRUE, FALSE)->SetFont(&lf); |
| | | m_CameraGrid.GetDefaultCell(FALSE, TRUE)->SetFont(&lf); |
| | |
| | | #pragma once |
| | | #pragma once |
| | | |
| | | #include "btnenh.h" |
| | | #include "General_Draw.h" |
| | |
| | | #include "HardwareSettings.h" |
| | | #include "DlgLicenseInfo.h" |
| | | |
| | | // CViewHWSetting æªæ³ æç£æ¶èªä¿. |
| | | // CViewHWSetting æªæ³ æç£æ¶èªä¿. |
| | | |
| | | class CHardwareSettings; |
| | | class CViewMain_HWSetting : public CDialogEx |
| | |
| | | DECLARE_DYNAMIC(CViewMain_HWSetting) |
| | | |
| | | public: |
| | | CViewMain_HWSetting(CWnd* pParent = NULL); // éé ç§¯å·±ç£æ¶èªä¿. |
| | | CViewMain_HWSetting(CWnd* pParent = NULL); // éé ç§¯å·±ç£æ¶èªä¿. |
| | | virtual ~CViewMain_HWSetting(); |
| | | |
| | | // æªæ³ æç£ åæç£æ¶èªä¿. |
| | | // æªæ³ æç£ åæç£æ¶èªä¿. |
| | | enum { IDD = IDD_MAIN_VIEW_HWSETTING }; |
| | | |
| | | protected: |
| | | virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV ç¤çæ¶èªä¿. |
| | | virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV ç¤çæ¶èªä¿. |
| | | virtual BOOL OnInitDialog(); |
| | | virtual BOOL PreTranslateMessage(MSG* pMsg); |
| | | afx_msg void OnPaint(); |
| | |
| | | // ViewLiveCam.cpp : 夿³
é¢èæ¶èªä¿. |
| | | // ViewLiveCam.cpp : 夿³
é¢èæ¶èªä¿. |
| | | // |
| | | |
| | | #include "stdafx.h" |
| | |
| | | #include "afxdialogex.h" |
| | | #include "Global_Define.h" |
| | | |
| | | // CViewLiveCam æªæ³ æç£æ¶èªä¿. |
| | | // CViewLiveCam æªæ³ æç£æ¶èªä¿. |
| | | |
| | | IMPLEMENT_DYNAMIC(CViewMain_LiveCam, CDialogEx) |
| | | |
| | |
| | | ON_EVENT(CViewMain_LiveCam, IDC_BTN_CAM_SNAP, DISPID_CLICK, CViewMain_LiveCam::OnBnClickedBtnCamSnap, VTS_NONE) |
| | | END_EVENTSINK_MAP() |
| | | |
| | | // CViewLiveCam çç«ç¤ è´¸åºææ¶èªä¿. |
| | | // CViewLiveCam çç«ç¤ è´¸åºææ¶èªä¿. |
| | | int CViewMain_LiveCam::GetIndex(int nSide) |
| | | { |
| | | int nIndex = 0; |
| | |
| | | |
| | | void CViewMain_LiveCam::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) |
| | | { |
| | | // TODO: å¯æä¿ çç«ç¤ è´¸åºæ å
éç« ç å æ£º/èç»° æå¤¯è¼é é¾å
é¦èªä¿. |
| | | // TODO: å¯æä¿ çç«ç¤ è´¸åºæ å
éç« ç å æ£º/èç»° æå¤¯è¼é é¾å
é¦èªä¿. |
| | | |
| | | int nIndex; |
| | | |
| | |
| | | #pragma once |
| | | #pragma once |
| | | |
| | | #include "FrameImg.h" |
| | | // CViewLiveCam æªæ³ æç£æ¶èªä¿. |
| | | // CViewLiveCam æªæ³ æç£æ¶èªä¿. |
| | | |
| | | class CHardwareSettings; |
| | | class CGlass_Data; |
| | |
| | | DECLARE_DYNAMIC(CViewMain_LiveCam) |
| | | |
| | | public: |
| | | CViewMain_LiveCam(CWnd* pParent = NULL); // éé ç§¯å·±ç£æ¶èªä¿. |
| | | CViewMain_LiveCam(CWnd* pParent = NULL); // éé ç§¯å·±ç£æ¶èªä¿. |
| | | virtual ~CViewMain_LiveCam(); |
| | | |
| | | // æªæ³ æç£ åæç£æ¶èªä¿. |
| | | // æªæ³ æç£ åæç£æ¶èªä¿. |
| | | enum { IDD = IDD_MAIN_VIEW_LIVECAM }; |
| | | |
| | | protected: |
| | | virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV ç¤çæ¶èªä¿. |
| | | virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV ç¤çæ¶èªä¿. |
| | | virtual BOOL OnInitDialog(); |
| | | virtual BOOL PreTranslateMessage(MSG* pMsg); |
| | | afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar); |
| | |
| | | // ViewScanImage.cpp : 夿³
é¢èæ¶èªä¿. |
| | | // ViewScanImage.cpp : 夿³
é¢èæ¶èªä¿. |
| | | // |
| | | |
| | | #include "stdafx.h" |
| | |
| | | |
| | | }; |
| | | |
| | | // CViewScanImage æªæ³ æç£æ¶èªä¿. |
| | | // CViewScanImage æªæ³ æç£æ¶èªä¿. |
| | | |
| | | IMPLEMENT_DYNAMIC(CViewMain_ScanImage, CDialogEx) |
| | | |
| | |
| | | END_EVENTSINK_MAP() |
| | | |
| | | |
| | | // CViewScanImage çç«ç¤ è´¸åºææ¶èªä¿. |
| | | // CViewScanImage çç«ç¤ è´¸åºææ¶èªä¿. |
| | | BOOL CViewMain_ScanImage::OnInitDialog() |
| | | { |
| | | UpdateData(FALSE); |
| | |
| | | |
| | | void CViewMain_ScanImage::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) |
| | | { |
| | | // TODO: å¯æä¿ çç«ç¤ è´¸åºæ å
éç« ç å æ£º/èç»° æå¤¯è¼é é¾å
é¦èªä¿. |
| | | // TODO: å¯æä¿ çç«ç¤ è´¸åºæ å
éç« ç å æ£º/èç»° æå¤¯è¼é é¾å
é¦èªä¿. |
| | | if(!pScrollBar) |
| | | { |
| | | return CDialogEx::OnHScroll(nSBCode, nPos, pScrollBar); |
| | |
| | | #pragma once |
| | | #pragma once |
| | | |
| | | //#include "FrameImg.h" |
| | | #include "EdgeImageViewer.h" |
| | | #include "afxcmn.h" |
| | | // CViewScanImage æªæ³ æç£æ¶èªä¿. |
| | | // CViewScanImage æªæ³ æç£æ¶èªä¿. |
| | | |
| | | class CHardwareSettings; |
| | | class CGlass_Data; |
| | |
| | | DECLARE_DYNAMIC(CViewMain_ScanImage) |
| | | |
| | | public: |
| | | CViewMain_ScanImage(CWnd* pParent = NULL); // éé ç§¯å·±ç£æ¶èªä¿. |
| | | CViewMain_ScanImage(CWnd* pParent = NULL); // éé ç§¯å·±ç£æ¶èªä¿. |
| | | virtual ~CViewMain_ScanImage(); |
| | | |
| | | // æªæ³ æç£ åæç£æ¶èªä¿. |
| | | // æªæ³ æç£ åæç£æ¶èªä¿. |
| | | enum { IDD = IDD_MAIN_VIEW_SCANIMAGE }; |
| | | |
| | | protected: |
| | | virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV ç¤çæ¶èªä¿. |
| | | virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV ç¤çæ¶èªä¿. |
| | | virtual BOOL OnInitDialog(); |
| | | virtual BOOL PreTranslateMessage(MSG* pMsg); |
| | | afx_msg void OnPaint(); |
| | |
| | | // ViewMainStatus.cpp : 夿³
é¢èæ¶èªä¿. |
| | | // ViewMainStatus.cpp : 夿³
é¢èæ¶èªä¿. |
| | | // |
| | | |
| | | #include "stdafx.h" |
| | |
| | | #include "afxdialogex.h" |
| | | |
| | | |
| | | // CViewMainStatus æªæ³ æç£æ¶èªä¿. |
| | | // CViewMainStatus æªæ³ æç£æ¶èªä¿. |
| | | |
| | | IMPLEMENT_DYNAMIC(CViewMain_Status, CDialogEx) |
| | | |
| | |
| | | END_MESSAGE_MAP() |
| | | |
| | | |
| | | // CViewMainStatus çç«ç¤ è´¸åºææ¶èªä¿. |
| | | // CViewMainStatus çç«ç¤ è´¸åºææ¶èªä¿. |
| | | |
| | | BOOL CViewMain_Status::OnInitDialog(void) |
| | | { |
| | |
| | | #pragma once |
| | | #pragma once |
| | | #include "resource.h" |
| | | #include "Global_Define.h" |
| | | #include "StatusMonitor.h" |
| | |
| | | DECLARE_DYNAMIC(CViewMain_Status) |
| | | |
| | | public: |
| | | CViewMain_Status(CWnd* pParent = NULL); // éé ç§¯å·±ç£æ¶èªä¿. |
| | | CViewMain_Status(CWnd* pParent = NULL); // éé ç§¯å·±ç£æ¶èªä¿. |
| | | virtual ~CViewMain_Status(); |
| | | |
| | | // æªæ³ æç£ åæç£æ¶èªä¿. |
| | | // æªæ³ æç£ åæç£æ¶èªä¿. |
| | | enum { IDD = IDD_MAIN_VIEW_STATUS }; |
| | | |
| | | protected: |
| | | virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV ç¤çæ¶èªä¿. |
| | | virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV ç¤çæ¶èªä¿. |
| | | virtual BOOL OnInitDialog(void); |
| | | virtual BOOL PreTranslateMessage(MSG* pMsg); |
| | | |
| | |
| | | |
| | |  |
| | | #include "stdafx.h" |
| | | #include "ViewPPIDNew.h" |
| | | |
| | | |
| | | // CViewPPIDNew æªæ³ æç£æ¶èªä¿. |
| | | // CViewPPIDNew æªæ³ æç£æ¶èªä¿. |
| | | |
| | | IMPLEMENT_DYNAMIC(CViewPPIDNew, CDialog) |
| | | |
| | |
| | | ON_EVENT(CViewPPIDNew, IDC_BTN_PPIDNEW_CANCEL, DISPID_CLICK, CViewPPIDNew::ClickBtnPpidnewCancel, VTS_NONE) |
| | | END_EVENTSINK_MAP() |
| | | |
| | | // CViewPPIDNew çç«ç¤ è´¸åºææ¶èªä¿. |
| | | // CViewPPIDNew çç«ç¤ è´¸åºææ¶èªä¿. |
| | | |
| | | BOOL CViewPPIDNew::OnInitDialog() |
| | | { |
| | |
| | | #pragma once |
| | | #pragma once |
| | | |
| | | #include "EdgeInspector_App.h" |
| | | #include "General_Draw.h" |
| | | // CViewPPIDNew æªæ³ æç£æ¶èªä¿. |
| | | // CViewPPIDNew æªæ³ æç£æ¶èªä¿. |
| | | |
| | | class CViewPPIDNew : public CDialog |
| | | { |
| | | DECLARE_DYNAMIC(CViewPPIDNew) |
| | | |
| | | public: |
| | | CViewPPIDNew(CWnd* pParent = NULL); // éé ç§¯å·±ç£æ¶èªä¿. |
| | | CViewPPIDNew(CWnd* pParent = NULL); // éé ç§¯å·±ç£æ¶èªä¿. |
| | | virtual ~CViewPPIDNew(); |
| | | |
| | | // æªæ³ æç£ åæç£æ¶èªä¿. |
| | | // æªæ³ æç£ åæç£æ¶èªä¿. |
| | | enum { IDD = IDD_DLG_PPID_NEW }; |
| | | |
| | | protected: |
| | | virtual BOOL OnInitDialog(); |
| | | virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV ç¤çæ¶èªä¿. |
| | | virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV ç¤çæ¶èªä¿. |
| | | DECLARE_MESSAGE_MAP() |
| | | |
| | | public: |
| | |
| | | |
| | |  |
| | | #include "stdafx.h" |
| | | #include "ViewRecipeList.h" |
| | | #include "ViewRecipeNew.h" |
| | |
| | | const TCHAR* PPIDLIST_COLUMN_ITEM[PPIDLIST_COLUMN_COUNT] = {_T("No"),_T("PLC Index"),_T("Recipe")}; |
| | | const int PPIDLIST_COLUMN_WIDHT[PPIDLIST_COLUMN_COUNT] = {50,130,145}; |
| | | |
| | | // CViewRecipeList æªæ³ æç£æ¶èªä¿. |
| | | // CViewRecipeList æªæ³ æç£æ¶èªä¿. |
| | | |
| | | IMPLEMENT_DYNAMIC(CViewRecipeList, CDialogEx) |
| | | |
| | |
| | | finder.Close(); |
| | | } |
| | | |
| | | // CViewRecipeList çç«ç¤ è´¸åºææ¶èªä¿. |
| | | // CViewRecipeList çç«ç¤ è´¸åºææ¶èªä¿. |
| | | |
| | | void CViewRecipeList::OnShowWindow(BOOL bShow, UINT nStatus) |
| | | { |
| | |
| | | lf.lfItalic = 0; |
| | | lf.lfHeight = 14; |
| | | lf.lfWeight = FW_BOLD; |
| | | _tcscpy(lf.lfFaceName, _T("Arial")); |
| | | _tcscpy_s(lf.lfFaceName, LF_FACESIZE, _T("Arial")); |
| | | |
| | | m_ListRecipe.GetDefaultCell(TRUE, FALSE)->SetFont(&lf); |
| | | m_ListRecipe.GetDefaultCell(FALSE, TRUE)->SetFont(&lf); |
| | |
| | | lf.lfItalic = 0; |
| | | lf.lfHeight = 14; |
| | | lf.lfWeight = FW_BOLD; |
| | | _tcscpy(lf.lfFaceName, _T("Arial")); |
| | | _tcscpy_s(lf.lfFaceName, LF_FACESIZE, _T("Arial")); |
| | | |
| | | m_ListPPID.GetDefaultCell(TRUE, FALSE)->SetFont(&lf); |
| | | m_ListPPID.GetDefaultCell(FALSE, TRUE)->SetFont(&lf); |
| | |
| | | #pragma once |
| | | #pragma once |
| | | |
| | | #include "General_Draw.h" |
| | | |
| | |
| | | #include "HardwareSettings.h" |
| | | #include "Glass_Data.h" |
| | | |
| | | // CViewRecipeList æªæ³ æç£æ¶èªä¿. |
| | | // CViewRecipeList æªæ³ æç£æ¶èªä¿. |
| | | |
| | | #define UM_SELECT_RECIPE (WM_USER + 1001) |
| | | |
| | |
| | | DECLARE_DYNAMIC(CViewRecipeList) |
| | | |
| | | public: |
| | | CViewRecipeList(CWnd* pParent = NULL); // éé ç§¯å·±ç£æ¶èªä¿. |
| | | CViewRecipeList(CWnd* pParent = NULL); // éé ç§¯å·±ç£æ¶èªä¿. |
| | | virtual ~CViewRecipeList(); |
| | | |
| | | // æªæ³ æç£ åæç£æ¶èªä¿. |
| | | // æªæ³ æç£ åæç£æ¶èªä¿. |
| | | enum { IDD = IDD_DLG_RECIPE_LIST }; |
| | | |
| | | protected: |
| | | virtual BOOL OnInitDialog(); |
| | | virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV ç¤çæ¶èªä¿. |
| | | virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV ç¤çæ¶èªä¿. |
| | | |
| | | afx_msg void OnShowWindow(BOOL bShow, UINT nStatus); |
| | | afx_msg void OnBnClickedButListNewrecipe(); |
| | |
| | | // |
| | | // |
| | | |
| | | #include "stdafx.h" |
| | | #include "ViewRecipeNew.h" |
| | | |
| | | |
| | | // CViewRecipeNew æªæ³ æç£æ¶èªä¿. |
| | | // CViewRecipeNew æªæ³ æç£æ¶èªä¿. |
| | | |
| | | IMPLEMENT_DYNAMIC(CViewRecipeNew, CDialog) |
| | | |
| | |
| | | ON_EVENT(CViewRecipeNew, IDC_BTN_RECIPENEW_OK, DISPID_CLICK, CViewRecipeNew::ClickBtnRecipenewOk, VTS_NONE) |
| | | ON_EVENT(CViewRecipeNew, IDC_BTN_RECIPENEW_CANCEL, DISPID_CLICK, CViewRecipeNew::ClickBtnRecipenewCancel, VTS_NONE) |
| | | END_EVENTSINK_MAP() |
| | | // CViewRecipeNew çç«ç¤ è´¸åºææ¶èªä¿. |
| | | // CViewRecipeNew çç«ç¤ è´¸åºææ¶èªä¿. |
| | | |
| | | BOOL CViewRecipeNew::OnInitDialog() |
| | | { |
| | |
| | | #pragma once |
| | | #pragma once |
| | | |
| | | #include "EdgeInspector_App.h" |
| | | #include "General_Draw.h" |
| | |
| | | DECLARE_DYNAMIC(CViewRecipeNew) |
| | | |
| | | public: |
| | | CViewRecipeNew(CWnd* pParent = NULL); // éé ç§¯å·±ç£æ¶èªä¿. |
| | | CViewRecipeNew(CWnd* pParent = NULL); // éé ç§¯å·±ç£æ¶èªä¿. |
| | | virtual ~CViewRecipeNew(); |
| | | |
| | | // æªæ³ æç£ åæç£æ¶èªä¿. |
| | | // æªæ³ æç£ åæç£æ¶èªä¿. |
| | | enum { IDD = IDD_DLG_RECIPE_NEW }; |
| | | |
| | | protected: |
| | | virtual BOOL OnInitDialog(); |
| | | virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV ç¤çæ¶èªä¿. |
| | | virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV ç¤çæ¶èªä¿. |
| | | afx_msg void OnPaint(); |
| | | afx_msg void OnShowWindow(BOOL bShow, UINT nStatus); |
| | | DECLARE_MESSAGE_MAP() |
| | |
| | | // ViewMainInformation.cpp : 夿³
é¢èæ¶èªä¿. |
| | | // ViewMainInformation.cpp : 夿³
é¢èæ¶èªä¿. |
| | | // |
| | | |
| | | #include "stdafx.h" |
| | |
| | | #include "afxdialogex.h" |
| | | |
| | | |
| | | // CViewMainInformation æªæ³ æç£æ¶èªä¿. |
| | | // CViewMainInformation æªæ³ æç£æ¶èªä¿. |
| | | |
| | | IMPLEMENT_DYNAMIC(CViewMain_Information, CDialogEx) |
| | | |
| | |
| | | { |
| | | CString strText; |
| | | |
| | | strText.Format(_T("%d"), g_pStatus->m_pTransData->m_nUnitNo);//ç ç£¨é¨ |
| | | strText.Format(_T("%d"), g_pStatus->m_pTransData->m_nUnitNo);//ç ç£¨é¨ |
| | | SetDlgItemText(IDC_STATIC_INSINFO_UNITNO, strText); |
| | | |
| | | strText.Format(_T("%d"), g_pStatus->m_pTransData->m_nEqpNo);//ç 磨段 |
| | | strText.Format(_T("%d"), g_pStatus->m_pTransData->m_nEqpNo);//ç 磨段 |
| | | SetDlgItemText(IDC_STATIC_INSINFO_EQPNO, strText); |
| | | |
| | | strText.Format(_T("%d"), g_pStatus->m_pTransData->m_nisGrind);//ç ç£¨æ£ |
| | | strText.Format(_T("%d"), g_pStatus->m_pTransData->m_nisGrind);//ç ç£¨æ£ |
| | | SetDlgItemText(IDC_STATIC_INSINFO_ISGRIND, strText); |
| | | |
| | | strText.Format(_T("%d"), g_pStatus->m_pTransData->m_nRoughPadLayer);//ç 磨æ£ä½¿ç¨å¯¿å½ |
| | | strText.Format(_T("%d"), g_pStatus->m_pTransData->m_nRoughPadLayer);//ç 磨æ£ä½¿ç¨å¯¿å½ |
| | | SetDlgItemText(IDC_STATIC_INSINFO_GLASS_ID, strText); |
| | | |
| | | strText.Format(_T("%d"), g_pStatus->m_pTransData->m_nHandNumber);//Stage No |
| | |
| | | #pragma once |
| | | #pragma once |
| | | #include "GridCtrl.h" |
| | | |
| | | // CViewMainInformation æªæ³ æç£æ¶èªä¿. |
| | | // CViewMainInformation æªæ³ æç£æ¶èªä¿. |
| | | |
| | | class CViewMain_Information : public CDialogEx |
| | | { |
| | | DECLARE_DYNAMIC(CViewMain_Information) |
| | | |
| | | public: |
| | | CViewMain_Information(CWnd* pParent = NULL); // éé ç§¯å·±ç£æ¶èªä¿. |
| | | CViewMain_Information(CWnd* pParent = NULL); // éé ç§¯å·±ç£æ¶èªä¿. |
| | | virtual ~CViewMain_Information(); |
| | | |
| | | // æªæ³ æç£ åæç£æ¶èªä¿. |
| | | // æªæ³ æç£ åæç£æ¶èªä¿. |
| | | enum { IDD = IDD_MAIN_VIEW_INFORMATION }; |
| | | |
| | | protected: |
| | | virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV ç¤çæ¶èªä¿. |
| | | virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV ç¤çæ¶èªä¿. |
| | | virtual BOOL OnInitDialog(); |
| | | virtual BOOL PreTranslateMessage(MSG* pMsg); |
| | | |
| | |
| | | // ViewLedRecipeSetting.cpp : 夿³
é¢èæ¶èªä¿. |
| | | // ViewLedRecipeSetting.cpp : 夿³
é¢èæ¶èªä¿. |
| | | // |
| | | |
| | | #include "stdafx.h" |
| | |
| | | #include "ViewLampControl.h" |
| | | #include "DlgLogin.h" |
| | | #include "Global_Define.h" |
| | | // CViewLedRecipeSetting æªæ³ æç£æ¶èªä¿. |
| | | // CViewLedRecipeSetting æªæ³ æç£æ¶èªä¿. |
| | | |
| | | IMPLEMENT_DYNAMIC(CViewMain_Recipe, CDialogEx) |
| | | |
| | |
| | | END_MESSAGE_MAP() |
| | | |
| | | |
| | | // CViewLedRecipeSetting çç«ç¤ è´¸åºææ¶èªä¿. |
| | | // CViewLedRecipeSetting çç«ç¤ è´¸åºææ¶èªä¿. |
| | | BEGIN_EVENTSINK_MAP(CViewMain_Recipe, CDialogEx) |
| | | ON_EVENT(CViewMain_Recipe, IDC_BTN_IMG_LOAD, DISPID_CLICK, CViewMain_Recipe::ClickImgLoadButton, VTS_NONE) |
| | | ON_EVENT(CViewMain_Recipe, IDC_BTN_IMG_SAVE, DISPID_CLICK, CViewMain_Recipe::ClickImgSaveButton, VTS_NONE) |
| | |
| | | #if HALCON_VISION_KEY |
| | | void CViewMain_Recipe::onMsgVisionEvent(int code, int eDir) { |
| | | /* code */ |
| | | if (1 == code) { //è·ååºåæ°æ® |
| | | if (1 == code) { //è·ååºåæ°æ® |
| | | m_pThis->SetFrameRegion(); |
| | | } |
| | | else if (2 == code) { //è·åææ |
| | | else if (2 == code) { //è·åææ |
| | | m_pThis->DispAllResult(); |
| | | } |
| | | } |
| | |
| | | |
| | | tickCount = GetTickCount(); |
| | | |
| | | // æ¥ç¶ç Recipe èæ²¥. |
| | | // æ¥ç¶ç Recipe èæ²¥. |
| | | if (m_pDlgRecipe->WriteRecipeFile() == FALSE) |
| | | { |
| | | AfxMessageBox(_T("Save Fail"), MB_OK | MB_ICONERROR); |
| | |
| | | |
| | | void CViewMain_Recipe::DeleteVectorList() |
| | | { |
| | | // Vector æå |
| | | // Vector æå |
| | | LinkList* pList = NULL; |
| | | for (VectorLinkListIt it = m_VectorLinkList.begin(); it != m_VectorLinkList.end(); it++) |
| | | { |
| | |
| | | { |
| | | if(strRecipe.IsEmpty() == TRUE) |
| | | { |
| | | //AfxMessageBox("Recipe Nameæ ç»å¼èªä¿."); |
| | | //AfxMessageBox("Recipe Nameæ ç»å¼èªä¿."); |
| | | return FALSE; |
| | | } |
| | | |
| | |
| | | { |
| | | CPaintDC dc(this); |
| | | |
| | | DrawMarkImage(); // æ æè 秦æå
·ç¶ è´¸æ¾ä¿ ä»å æåºç¤å å¼å¦¨é¾é³.. |
| | | DrawMarkImage(); // æ æè 秦æå
·ç¶ è´¸æ¾ä¿ ä»å æåºç¤å å¼å¦¨é¾é³.. |
| | | } |
| | | |
| | | void CViewMain_Recipe::ClickButtonOpenExceptionSettingView() |
| | |
| | | |
| | | void CViewMain_Recipe::ClickButtonVisionSetting() |
| | | { |
| | | // TODO: 卿¤å¤æ·»å æ¶æ¯å¤çç¨åºä»£ç |
| | | // TODO: 卿¤å¤æ·»å æ¶æ¯å¤çç¨åºä»£ç |
| | | #if HALCON_VISION_KEY |
| | | IVisionRecipe* pInstance = BlVision_GetVisionRecipe(); |
| | | if (!pInstance->getVisionUse()) { |
| | |
| | | #pragma once |
| | | #pragma once |
| | | |
| | | #include "btnenh.h" |
| | | #include "General_Draw.h" |
| | |
| | | #include "ViewLampControl.h" |
| | | #include "ViewRecipeList.h" |
| | | |
| | | // CViewLedRecipeSetting æªæ³ æç£æ¶èªä¿. |
| | | // CViewLedRecipeSetting æªæ³ æç£æ¶èªä¿. |
| | | |
| | | class CViewMain_Recipe : public CDialogEx |
| | | { |
| | | DECLARE_DYNAMIC(CViewMain_Recipe) |
| | | |
| | | public: |
| | | CViewMain_Recipe(CWnd* pParent = NULL); // éé ç§¯å·±ç£æ¶èªä¿. |
| | | CViewMain_Recipe(CWnd* pParent = NULL); // éé ç§¯å·±ç£æ¶èªä¿. |
| | | virtual ~CViewMain_Recipe(); |
| | | |
| | | // æªæ³ æç£ åæç£æ¶èªä¿. |
| | | // æªæ³ æç£ åæç£æ¶èªä¿. |
| | | enum { IDD = IDD_MAIN_VIEW_RECIPE }; |
| | | |
| | | protected: |
| | | virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV ç¤çæ¶èªä¿. |
| | | virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV ç¤çæ¶èªä¿. |
| | | virtual BOOL OnInitDialog(); |
| | | virtual BOOL PreTranslateMessage(MSG* pMsg); |
| | | LRESULT OnProcessStatus(WPARAM wParam, LPARAM lParam); |
| | |
| | | #include "StdAfx.h" |
| | | #include "StdAfx.h" |
| | | #include "ThreadPool.h" |
| | | |
| | | ThreadPool::ThreadPool(size_t thread_count) : m_stop(false) { |
| | |
| | | #ifndef THREADPOOL_H |
| | | #ifndef THREADPOOL_H |
| | | #define THREADPOOL_H |
| | | |
| | | #include <vector> |
| | |
| | | explicit ThreadPool(size_t thread_count); |
| | | ~ThreadPool(); |
| | | |
| | | // æäº¤ä»»å¡ |
| | | // æäº¤ä»»å¡ |
| | | template<class F> |
| | | void enqueue(F&& task) { |
| | | { |
| | |
| | | #include "stdafx.h" |
| | | #include "stdafx.h" |
| | | #include "WebSocketClient.h" |
| | | |
| | | //WebSocketClient::WebSocketClient() : m_connected(false), m_reconnect(true), m_close_done(false), m_message_received(false), m_heartbeat_interval(5) { |
| | | // // æ¸
é¤ä¹åç客æ·ç«¯é
ç½®å¹¶éæ°åå§å |
| | | // // æ¸
é¤ä¹åç客æ·ç«¯é
ç½®å¹¶éæ°åå§å |
| | | // m_client.clear_access_channels(websocketpp::log::alevel::all); |
| | | // m_client.clear_error_channels(websocketpp::log::elevel::all); |
| | | // m_client.init_asio(); |
| | | // |
| | | // // 设置äºä»¶åè° |
| | | // // 设置äºä»¶åè° |
| | | // m_client.set_open_handler([this](websocketpp::connection_hdl hdl) { on_open(hdl); }); |
| | | // m_client.set_message_handler([this](websocketpp::connection_hdl hdl, message_ptr msg) { on_message(hdl, msg); }); |
| | | // m_client.set_close_handler([this](websocketpp::connection_hdl hdl) { on_close(hdl); }); |
| | |
| | | // m_client.clear_access_channels(websocketpp::log::alevel::all); |
| | | // m_client.clear_error_channels(websocketpp::log::elevel::all); |
| | | // |
| | | // std::lock_guard<std::mutex> lock(m_mutex); // ä¿æ¤å
±äº«èµæº |
| | | // std::lock_guard<std::mutex> lock(m_mutex); // ä¿æ¤å
±äº«èµæº |
| | | // auto con = m_client.get_connection(uri, ec); |
| | | // |
| | | // if (ec) { |
| | |
| | | // m_client.connect(con); |
| | | // } |
| | | // |
| | | // // å¯å¨å·¥ä½çº¿ç¨ |
| | | // // å¯å¨å·¥ä½çº¿ç¨ |
| | | // m_thread = std::thread(&WebSocketClient::run, this); |
| | | //} |
| | | // |
| | |
| | | // std::string message = m_message_queue.front(); |
| | | // m_message_queue.pop(); |
| | | // |
| | | // send(message); // åéæ¶æ¯ |
| | | // send(message); // åéæ¶æ¯ |
| | | // |
| | | // set_busy(false); // 设置为空é²ç¶æï¼å¹¶å¤çä¸ä¸ä¸ª |
| | | // set_busy(false); // 设置为空é²ç¶æï¼å¹¶å¤çä¸ä¸ä¸ª |
| | | // process_next_message(); |
| | | // } |
| | | //} |
| | |
| | | // std::vector<char> binary_data = m_binary_queue.front(); |
| | | // m_binary_queue.pop(); |
| | | // |
| | | // send_binary(binary_data); // åéäºè¿å¶æ°æ® |
| | | // send_binary(binary_data); // åéäºè¿å¶æ°æ® |
| | | // |
| | | // set_busy(false); // 设置为空é²ç¶æï¼å¹¶å¤çä¸ä¸ä¸ª |
| | | // set_busy(false); // 设置为空é²ç¶æï¼å¹¶å¤çä¸ä¸ä¸ª |
| | | // process_next_binary(); |
| | | // } |
| | | //} |
| | |
| | | // m_message_received = false; |
| | | // |
| | | // if (m_connected.load()) { |
| | | // // åéæ¶æ¯ |
| | | // // åéæ¶æ¯ |
| | | // websocketpp::lib::error_code ec; |
| | | // m_client.send(m_hdl, message, websocketpp::frame::opcode::text, ec); |
| | | // if (ec) { |
| | |
| | | // return false; |
| | | // } |
| | | // |
| | | // // çå¾
æ¶æ¯æè¶
æ¶ |
| | | // // çå¾
æ¶æ¯æè¶
æ¶ |
| | | // if (m_cv.wait_for(lock, std::chrono::milliseconds(timeout_ms), [this]() { return m_message_received; })) { |
| | | // std::cout << "Server response received." << std::endl; |
| | | // return true; |
| | |
| | | // m_message_received = false; |
| | | // |
| | | // if (m_connected.load()) { |
| | | // // åéæ¶æ¯ |
| | | // // åéæ¶æ¯ |
| | | // websocketpp::lib::error_code ec; |
| | | // m_client.send(m_hdl, binary_data.data(), binary_data.size(), websocketpp::frame::opcode::binary, ec); |
| | | // if (ec) { |
| | |
| | | // return false; |
| | | // } |
| | | // |
| | | // // çå¾
æ¶æ¯æè¶
æ¶ |
| | | // // çå¾
æ¶æ¯æè¶
æ¶ |
| | | // if (m_cv.wait_for(lock, std::chrono::milliseconds(timeout_ms), [this]() { return m_message_received; })) { |
| | | // std::cout << "Server response received." << std::endl; |
| | | // return true; |
| | |
| | | // } |
| | | // |
| | | // m_message_received = true; |
| | | // m_cv.notify_one(); // å¤éçå¾
çº¿ç¨ |
| | | // m_cv.notify_one(); // å¤éçå¾
çº¿ç¨ |
| | | //} |
| | | // |
| | | //void WebSocketClient::on_close(connection_hdl hdl) { |
| | | // std::cout << "Connection closed." << std::endl; |
| | | // std::lock_guard<std::mutex> lock(m_mutex); |
| | | // |
| | | // m_hdl.reset(); // æ¸
ç©ºè¿æ¥å¥æ |
| | | // m_hdl.reset(); // æ¸
ç©ºè¿æ¥å¥æ |
| | | // m_connected.store(false); |
| | | // if (m_close_handler) { |
| | | // m_close_handler(); |
| | | // } |
| | | // |
| | | // // 妿éè¦éè¿ |
| | | // // 妿éè¦éè¿ |
| | | // if (m_reconnect.load()) { |
| | | // |
| | | // // 忢å½åè¿è¡çäºä»¶å¾ªç¯ |
| | | // // 忢å½åè¿è¡çäºä»¶å¾ªç¯ |
| | | // //m_client.stop(); |
| | | // //if (m_thread.joinable()) { |
| | | // // m_thread.join(); |
| | | // //} |
| | | // std::cerr << "Connection lost. Attempting to reconnect..." << std::endl; |
| | | // //reconnect(); // å¯å¨éè¿æºå¶ |
| | | // //reconnect(); // å¯å¨éè¿æºå¶ |
| | | // } |
| | | // else { |
| | | // m_cv.notify_one(); |
| | |
| | | #ifndef WEBSOCKETCLIENT_H |
| | | #ifndef WEBSOCKETCLIENT_H |
| | | #define WEBSOCKETCLIENT_H |
| | | |
| | | //#include <websocketpp/config/asio_no_tls_client.hpp> |
| | |
| | | // WebSocketClient(); |
| | | // ~WebSocketClient(); |
| | | // |
| | | // // è¿æ¥å°æå®çURI |
| | | // // è¿æ¥å°æå®çURI |
| | | // void connect(const std::string& uri); |
| | | // |
| | | // // å¢å 客æ·ç«¯çç¶ææ è¯ |
| | | // // å¢å 客æ·ç«¯çç¶ææ è¯ |
| | | // bool is_busy() const; |
| | | // void set_busy(bool busy); |
| | | // |
| | | // // åéææ¬æ¶æ¯ |
| | | // // åéææ¬æ¶æ¯ |
| | | // void send(const std::string& message); |
| | | // |
| | | // // åéäºè¿å¶æ°æ® |
| | | // // åéäºè¿å¶æ°æ® |
| | | // void send_binary(const std::vector<char>& binary_data); |
| | | // |
| | | // // éè¿éååéææ¬æ¶æ¯ |
| | | // // éè¿éååéææ¬æ¶æ¯ |
| | | // void enqueue_message(const std::string& message); |
| | | // |
| | | // // éè¿éååéäºè¿å¶æ°æ® |
| | | // // éè¿éååéäºè¿å¶æ°æ® |
| | | // void enqueue_binary(const std::vector<char>& binary_data); |
| | | // |
| | | // // å¤çä¸ä¸ä¸ªæ¶æ¯ |
| | | // // å¤çä¸ä¸ä¸ªæ¶æ¯ |
| | | // void process_next_message(); |
| | | // void process_next_binary(); |
| | | // |
| | | // // åéææ¬æ¶æ¯å¹¶çå¾
åå¤ |
| | | // // åéææ¬æ¶æ¯å¹¶çå¾
åå¤ |
| | | // bool send_and_wait(const std::string& message, int timeout_ms); |
| | | // |
| | | // // åéäºè¿å¶æ°æ®å¹¶çå¾
åå¤ |
| | | // // åéäºè¿å¶æ°æ®å¹¶çå¾
åå¤ |
| | | // bool send_binary_and_wait(const std::vector<char>& binary_data, int timeout_ms); |
| | | // |
| | | // // å
³éè¿æ¥ |
| | | // // å
³éè¿æ¥ |
| | | // void close(); |
| | | // |
| | | // // 设置åç§åè°å½æ° |
| | | // // 设置åç§åè°å½æ° |
| | | // void set_open_handler(OpenHandler handler); |
| | | // void set_message_handler(MessageHandler handler); |
| | | // void set_close_handler(CloseHandler handler); |
| | | // void set_fail_handler(FailHandler handler); |
| | | // void set_pong_handler(PongHandler handler); |
| | | // |
| | | // // 设置å¿è·³é´éï¼åä½ï¼ç§ï¼ |
| | | // // 设置å¿è·³é´éï¼åä½ï¼ç§ï¼ |
| | | // void set_heartbeat_interval(int interval); |
| | | // |
| | | // // è·åå½åè¿æ¥çURL |
| | | // // è·åå½åè¿æ¥çURL |
| | | // std::string get_current_url(); |
| | | // |
| | | // // æ£æ¥å½åè¿æ¥æ¯å¦ä»ç¶ææ |
| | | // // æ£æ¥å½åè¿æ¥æ¯å¦ä»ç¶ææ |
| | | // bool is_connected() const; |
| | | // |
| | | //private: |
| | | // // WebSocket è¿è¡å½æ° |
| | | // // WebSocket è¿è¡å½æ° |
| | | // void run(); |
| | | // |
| | | // // å¿è·³æ£æ¥å½æ° |
| | | // // å¿è·³æ£æ¥å½æ° |
| | | // void heartbeat(); |
| | | // |
| | | // // åè°å½æ°è§¦åå¨ |
| | | // // åè°å½æ°è§¦åå¨ |
| | | // void on_open(websocketpp::connection_hdl hdl); |
| | | // void on_message(connection_hdl hdl, message_ptr msg); |
| | | // void on_close(websocketpp::connection_hdl hdl); |
| | |
| | | // void on_pong(websocketpp::connection_hdl hdl, const std::string& payload); |
| | | // |
| | | //private: |
| | | // // WebSocket客æ·ç«¯å®ä¾ |
| | | // // WebSocket客æ·ç«¯å®ä¾ |
| | | // client m_client; |
| | | // |
| | | // // WebSocket è¿æ¥å¥æ |
| | | // // WebSocket è¿æ¥å¥æ |
| | | // connection_hdl m_hdl; |
| | | // |
| | | // // 线ç¨ç¸å
³ |
| | | // // 线ç¨ç¸å
³ |
| | | // std::thread m_thread; |
| | | // std::thread m_heartbeat_thread; |
| | | // std::atomic<bool> m_connected; |
| | |
| | | // int m_heartbeat_interval; |
| | | // bool m_message_received; |
| | | // |
| | | // // åééå |
| | | // // åééå |
| | | // std::queue<std::string> m_message_queue; |
| | | // std::queue<std::vector<char>> m_binary_queue; |
| | | // |
| | | // // æ è¯å®¢æ·ç«¯æ¯å¦å¿ç¢ |
| | | // // æ è¯å®¢æ·ç«¯æ¯å¦å¿ç¢ |
| | | // std::atomic<bool> m_busy; |
| | | // |
| | | // // 线ç¨åæ¥ç¸å
³ |
| | | // // 线ç¨åæ¥ç¸å
³ |
| | | // bool m_close_done; |
| | | // std::condition_variable m_cv; |
| | | // |
| | | // // äºæ¥éï¼ç¨äºä¿æ¤å
±äº«èµæº |
| | | // // äºæ¥éï¼ç¨äºä¿æ¤å
±äº«èµæº |
| | | // std::mutex m_mutex; |
| | | // |
| | | // // åè°å½æ° |
| | | // // åè°å½æ° |
| | | // OpenHandler m_open_handler; |
| | | // MessageHandler m_message_handler; |
| | | // CloseHandler m_close_handler; |
| | |
| | | #include "StdAfx.h" |
| | | #include "StdAfx.h" |
| | | #include "WebSocketClientPool.h" |
| | | |
| | | //WebSocketClientPool::WebSocketClientPool(size_t thread_count) : m_thread_pool(thread_count) {} |
| | |
| | | // } |
| | | // } |
| | | // |
| | | // // æ¸
空ä¹åç客æ·ç«¯ï¼ç¡®ä¿æ¯å¹²åçç¶æ |
| | | // // æ¸
空ä¹åç客æ·ç«¯ï¼ç¡®ä¿æ¯å¹²åçç¶æ |
| | | // m_clients.clear(); |
| | | //} |
| | | // |
| | |
| | | //bool WebSocketClientPool::post_to_idle_client(const std::string& message) { |
| | | // for (auto& client : m_clients) { |
| | | // if (client->is_connected()) { |
| | | // // æäº¤åéä»»å¡å°çº¿ç¨æ± |
| | | // // æäº¤åéä»»å¡å°çº¿ç¨æ± |
| | | // m_thread_pool.enqueue([client, message]() { |
| | | // client->set_busy(true); // æ 记为å¿ç¢ |
| | | // client->send(message); // åéæ¶æ¯ |
| | | // client->set_busy(false); // å®æåæ è®°ä¸ºç©ºé² |
| | | // client->set_busy(true); // æ 记为å¿ç¢ |
| | | // client->send(message); // åéæ¶æ¯ |
| | | // client->set_busy(false); // å®æåæ è®°ä¸ºç©ºé² |
| | | // }); |
| | | // return true; // æåæäº¤ä»»å¡ |
| | | // return true; // æåæäº¤ä»»å¡ |
| | | // } |
| | | // } |
| | | // return false; // 没æå¯ç¨å®¢æ·ç«¯ |
| | | // return false; // 没æå¯ç¨å®¢æ·ç«¯ |
| | | //} |
| | | // |
| | | //bool WebSocketClientPool::post_binary_to_idle_client(const std::vector<char>& binary_data) { |
| | | // for (auto& client : m_clients) { |
| | | // if (client->is_connected()) { |
| | | // // æäº¤åéä»»å¡å°çº¿ç¨æ± |
| | | // // æäº¤åéä»»å¡å°çº¿ç¨æ± |
| | | // m_thread_pool.enqueue([client, binary_data]() { |
| | | // client->set_busy(true); // æ 记为å¿ç¢ |
| | | // client->send_binary(binary_data); // åéäºè¿å¶æ°æ® |
| | | // client->set_busy(false); // å®æåæ è®°ä¸ºç©ºé² |
| | | // client->set_busy(true); // æ 记为å¿ç¢ |
| | | // client->send_binary(binary_data); // åéäºè¿å¶æ°æ® |
| | | // client->set_busy(false); // å®æåæ è®°ä¸ºç©ºé² |
| | | // }); |
| | | // return true; // æåæäº¤ä»»å¡ |
| | | // return true; // æåæäº¤ä»»å¡ |
| | | // } |
| | | // } |
| | | // return false; // 没æå¯ç¨å®¢æ·ç«¯ |
| | | // return false; // 没æå¯ç¨å®¢æ·ç«¯ |
| | | //} |
| | | // |
| | | //bool WebSocketClientPool::send_to_idle_client(const std::string& message, int timeout_ms) { |
| | | // for (auto& client : m_clients) { |
| | | // if (!client->is_busy() && client->is_connected()) { |
| | | // // æ è®°ä¸ºå¿ |
| | | // // æ è®°ä¸ºå¿ |
| | | // client->set_busy(true); |
| | | // |
| | | // // 使ç¨çº¿ç¨æ± åéæ¶æ¯ |
| | | // // 使ç¨çº¿ç¨æ± åéæ¶æ¯ |
| | | // m_thread_pool.enqueue([client, message, timeout_ms]() { |
| | | // // åéæ¶æ¯å¹¶çå¾
æå¡å¨åå¤ |
| | | // client->send_and_wait(message, timeout_ms); // 5ç§è¶
æ¶ |
| | | // client->set_busy(false); // æ è®°ä¸ºç©ºé² |
| | | // // åéæ¶æ¯å¹¶çå¾
æå¡å¨åå¤ |
| | | // client->send_and_wait(message, timeout_ms); // 5ç§è¶
æ¶ |
| | | // client->set_busy(false); // æ è®°ä¸ºç©ºé² |
| | | // }); |
| | | // |
| | | // return true; // æååéæ¶æ¯ï¼è¿å true |
| | | // return true; // æååéæ¶æ¯ï¼è¿å true |
| | | // } |
| | | // } |
| | | // return false; // 没æç©ºé²å®¢æ·ç«¯ |
| | | // return false; // 没æç©ºé²å®¢æ·ç«¯ |
| | | //} |
| | | // |
| | | //bool WebSocketClientPool::send_binary_to_idle_client(const std::vector<char>& binary_data, int timeout_ms) { |
| | | // for (auto& client : m_clients) { |
| | | // if (!client->is_busy() && client->is_connected()) { |
| | | // // æ è®°ä¸ºå¿ |
| | | // // æ è®°ä¸ºå¿ |
| | | // client->set_busy(true); |
| | | // |
| | | // // 使ç¨çº¿ç¨æ± åéæ¶æ¯ |
| | | // // 使ç¨çº¿ç¨æ± åéæ¶æ¯ |
| | | // m_thread_pool.enqueue([client, binary_data, timeout_ms]() { |
| | | // // åéæ¶æ¯å¹¶çå¾
æå¡å¨åå¤ |
| | | // // åéæ¶æ¯å¹¶çå¾
æå¡å¨åå¤ |
| | | // client->send_binary_and_wait(binary_data, timeout_ms); |
| | | // client->set_busy(false); // æ è®°ä¸ºç©ºé² |
| | | // client->set_busy(false); // æ è®°ä¸ºç©ºé² |
| | | // }); |
| | | // |
| | | // return true; // æååéæ¶æ¯ï¼è¿å true |
| | | // return true; // æååéæ¶æ¯ï¼è¿å true |
| | | // } |
| | | // } |
| | | // return false; // 没æç©ºé²å®¢æ·ç«¯ |
| | | // return false; // 没æç©ºé²å®¢æ·ç«¯ |
| | | //} |
| | | // |
| | | //bool WebSocketClientPool::send_to_idle_client_and_wait(const std::string& message, int timeout_ms) { |
| | | // for (auto& client : m_clients) { |
| | | // if (!client->is_busy() && client->is_connected()) { |
| | | // client->set_busy(true); // æ è®°ä¸ºå¿ |
| | | // client->set_busy(true); // æ è®°ä¸ºå¿ |
| | | // |
| | | // try { |
| | | // // ç´æ¥å¨å½å线ç¨è°ç¨ send_and_waitï¼é»å¡ç´å°ä»»å¡å®æ |
| | | // // ç´æ¥å¨å½å线ç¨è°ç¨ send_and_waitï¼é»å¡ç´å°ä»»å¡å®æ |
| | | // bool result = client->send_and_wait(message, timeout_ms); |
| | | // client->set_busy(false); // 设置为空é²ç¶æ |
| | | // return result; // è¿åç»æ |
| | | // client->set_busy(false); // 设置为空é²ç¶æ |
| | | // return result; // è¿åç»æ |
| | | // } |
| | | // catch (const std::exception& e) { |
| | | // std::cerr << "Exception during sending: " << e.what() << std::endl; |
| | | // client->set_busy(false); // å³ä½¿åçå¼å¸¸ï¼ä¹è¦é置为æªå¿ç¶æ |
| | | // return false; // åçå¼å¸¸ï¼è¿å失败 |
| | | // client->set_busy(false); // å³ä½¿åçå¼å¸¸ï¼ä¹è¦é置为æªå¿ç¶æ |
| | | // return false; // åçå¼å¸¸ï¼è¿å失败 |
| | | // } |
| | | // } |
| | | // } |
| | | // return false; // 没æç©ºé²å®¢æ·ç«¯ |
| | | // return false; // 没æç©ºé²å®¢æ·ç«¯ |
| | | //} |
| | | // |
| | | //bool WebSocketClientPool::send_binary_to_idle_client_and_wait(const std::vector<char>& binary_data, int timeout_ms) { |
| | | // for (auto& client : m_clients) { |
| | | // if (!client->is_busy() && client->is_connected()) { |
| | | // client->set_busy(true); // æ è®°ä¸ºå¿ |
| | | // client->set_busy(true); // æ è®°ä¸ºå¿ |
| | | // |
| | | // try { |
| | | // // ç´æ¥å¨å½å线ç¨è°ç¨ send_and_waitï¼é»å¡ç´å°ä»»å¡å®æ |
| | | // // ç´æ¥å¨å½å线ç¨è°ç¨ send_and_waitï¼é»å¡ç´å°ä»»å¡å®æ |
| | | // bool result = client->send_binary_and_wait(binary_data, timeout_ms); |
| | | // client->set_busy(false); // 设置为空é²ç¶æ |
| | | // return result; // è¿åç»æ |
| | | // client->set_busy(false); // 设置为空é²ç¶æ |
| | | // return result; // è¿åç»æ |
| | | // } |
| | | // catch (const std::exception& e) { |
| | | // std::cerr << "Exception during sending: " << e.what() << std::endl; |
| | | // client->set_busy(false); // å³ä½¿åçå¼å¸¸ï¼ä¹è¦é置为æªå¿ç¶æ |
| | | // return false; // åçå¼å¸¸ï¼è¿å失败 |
| | | // client->set_busy(false); // å³ä½¿åçå¼å¸¸ï¼ä¹è¦é置为æªå¿ç¶æ |
| | | // return false; // åçå¼å¸¸ï¼è¿å失败 |
| | | // } |
| | | // } |
| | | // } |
| | | // return false; // 没æç©ºé²å®¢æ·ç«¯ |
| | | // return false; // 没æç©ºé²å®¢æ·ç«¯ |
| | | //} |
| | | // |
| | | //bool WebSocketClientPool::send_to_idle_client_with_retry(const std::string& message, int total_timeout_ms, int retry_interval_ms) { |
| | | // auto start_time = std::chrono::steady_clock::now(); |
| | | // |
| | | // while (true) { |
| | | // // æ¥æ¾ç©ºé²å®¢æ·ç«¯ |
| | | // // æ¥æ¾ç©ºé²å®¢æ·ç«¯ |
| | | // for (auto& client : m_clients) { |
| | | // if (!client->is_busy() && client->is_connected()) { |
| | | // // æ è®°ä¸ºå¿ |
| | | // // æ è®°ä¸ºå¿ |
| | | // client->set_busy(true); |
| | | // |
| | | // // 使ç¨çº¿ç¨æ± åéæ¶æ¯ |
| | | // // 使ç¨çº¿ç¨æ± åéæ¶æ¯ |
| | | // m_thread_pool.enqueue([client, message]() { |
| | | // try { |
| | | // // åéæ¶æ¯å¹¶çå¾
æå¡å¨åå¤ |
| | | // client->send_and_wait(message, 5000); // è¿éçè¶
æ¶å¯ä»¥æ ¹æ®éè¦è°æ´ |
| | | // // åéæ¶æ¯å¹¶çå¾
æå¡å¨åå¤ |
| | | // client->send_and_wait(message, 5000); // è¿éçè¶
æ¶å¯ä»¥æ ¹æ®éè¦è°æ´ |
| | | // } |
| | | // catch (const std::exception& e) { |
| | | // std::cerr << "Error sending data: " << e.what() << std::endl; |
| | | // } |
| | | // client->set_busy(false); // æ è®°ä¸ºç©ºé² |
| | | // client->set_busy(false); // æ è®°ä¸ºç©ºé² |
| | | // }); |
| | | // |
| | | // return true; // æååé |
| | | // return true; // æååé |
| | | // } |
| | | // } |
| | | // |
| | | // // 计ç®å·²ä½¿ç¨çæ¶é´ |
| | | // // 计ç®å·²ä½¿ç¨çæ¶é´ |
| | | // auto elapsed_time = std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::steady_clock::now() - start_time).count(); |
| | | // |
| | | // if (elapsed_time >= total_timeout_ms) { |
| | | // std::cerr << "Timeout: failed to send data within the specified timeout of " << total_timeout_ms << " ms." << std::endl; |
| | | // return false; // è¶
æ¶ï¼æ æ³åé |
| | | // return false; // è¶
æ¶ï¼æ æ³åé |
| | | // } |
| | | // |
| | | // // æ²¡ææ¾å°ç©ºé²å®¢æ·ç«¯ï¼çå¾
retry_interval_ms 毫ç§åéè¯ |
| | | // // æ²¡ææ¾å°ç©ºé²å®¢æ·ç«¯ï¼çå¾
retry_interval_ms 毫ç§åéè¯ |
| | | // std::this_thread::sleep_for(std::chrono::milliseconds(retry_interval_ms)); |
| | | // } |
| | | //} |
| | |
| | | // auto start_time = std::chrono::steady_clock::now(); |
| | | // |
| | | // while (true) { |
| | | // // æ¥æ¾ç©ºé²å®¢æ·ç«¯ |
| | | // // æ¥æ¾ç©ºé²å®¢æ·ç«¯ |
| | | // for (auto& client : m_clients) { |
| | | // if (!client->is_busy() && client->is_connected()) { |
| | | // // æ è®°ä¸ºå¿ |
| | | // // æ è®°ä¸ºå¿ |
| | | // client->set_busy(true); |
| | | // |
| | | // // 使ç¨çº¿ç¨æ± åéæ¶æ¯ |
| | | // // 使ç¨çº¿ç¨æ± åéæ¶æ¯ |
| | | // m_thread_pool.enqueue([client, binary_data = std::move(binary_data)]() mutable { |
| | | // try { |
| | | // // åéæ¶æ¯å¹¶çå¾
æå¡å¨åå¤ |
| | | // client->send_binary_and_wait(binary_data, 5000); // è¿éçè¶
æ¶å¯ä»¥æ ¹æ®éè¦è°æ´ |
| | | // // åéæ¶æ¯å¹¶çå¾
æå¡å¨åå¤ |
| | | // client->send_binary_and_wait(binary_data, 5000); // è¿éçè¶
æ¶å¯ä»¥æ ¹æ®éè¦è°æ´ |
| | | // } |
| | | // catch (const std::exception& e) { |
| | | // std::cerr << "Error sending binary data: " << e.what() << std::endl; |
| | | // } |
| | | // client->set_busy(false); // æ è®°ä¸ºç©ºé² |
| | | // client->set_busy(false); // æ è®°ä¸ºç©ºé² |
| | | // }); |
| | | // |
| | | // return true; // æååé |
| | | // return true; // æååé |
| | | // } |
| | | // } |
| | | // |
| | | // // 计ç®å·²ä½¿ç¨çæ¶é´ |
| | | // // 计ç®å·²ä½¿ç¨çæ¶é´ |
| | | // auto elapsed_time = std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::steady_clock::now() - start_time).count(); |
| | | // |
| | | // if (elapsed_time >= total_timeout_ms) { |
| | | // std::cerr << "Timeout: failed to send data within the specified timeout of " << total_timeout_ms << " ms." << std::endl; |
| | | // return false; // è¶
æ¶ï¼æ æ³åé |
| | | // return false; // è¶
æ¶ï¼æ æ³åé |
| | | // } |
| | | // |
| | | // // æ²¡ææ¾å°ç©ºé²å®¢æ·ç«¯ï¼çå¾
retry_interval_ms 毫ç§åéè¯ |
| | | // // æ²¡ææ¾å°ç©ºé²å®¢æ·ç«¯ï¼çå¾
retry_interval_ms 毫ç§åéè¯ |
| | | // std::this_thread::sleep_for(std::chrono::milliseconds(retry_interval_ms)); |
| | | // } |
| | | //} |
| | |
| | | #ifndef WEBSOCKETCLIENTWITHPOOL_H |
| | | #ifndef WEBSOCKETCLIENTWITHPOOL_H |
| | | #define WEBSOCKETCLIENTWITHPOOL_H |
| | | |
| | | //#include "WebSocketClient.h" |
| | |
| | | // explicit WebSocketClientPool(size_t thread_count); |
| | | // ~WebSocketClientPool(); |
| | | // |
| | | // // åå§å客æ·ç«¯ |
| | | // // åå§å客æ·ç«¯ |
| | | // void init_clients(const std::vector<std::string>& uris); |
| | | // |
| | | // // éåºææå®¢æ·ç«¯ |
| | | // // éåºææå®¢æ·ç«¯ |
| | | // void exit_clients(); |
| | | // |
| | | // // 使ç¨çº¿ç¨æ± åéæ¶æ¯ |
| | | // // 使ç¨çº¿ç¨æ± åéæ¶æ¯ |
| | | // void post_to_all(const std::string& message); |
| | | // void post_binary_to_all(const std::vector<char>& binary_data); |
| | | // |
| | | // // 仿± ä¸éæ©ä¸ä¸ªç©ºé²ç客æ·ç«¯è¿è¡åéï¼ä¸éè¦æå¡å¨ååº |
| | | // // 仿± ä¸éæ©ä¸ä¸ªç©ºé²ç客æ·ç«¯è¿è¡åéï¼ä¸éè¦æå¡å¨ååº |
| | | // bool post_to_idle_client(const std::string& message); |
| | | // bool post_binary_to_idle_client(const std::vector<char>& binary_data); |
| | | // |
| | | // // 仿± ä¸éæ©ä¸ä¸ªç©ºé²ç客æ·ç«¯è¿è¡åéï¼å¹¶éè¦æå¡å¨ååº |
| | | // // 仿± ä¸éæ©ä¸ä¸ªç©ºé²ç客æ·ç«¯è¿è¡åéï¼å¹¶éè¦æå¡å¨ååº |
| | | // bool send_to_idle_client(const std::string& message, int timeout_ms); |
| | | // bool send_binary_to_idle_client(const std::vector<char>& binary_data, int timeout_ms); |
| | | // |
| | | // // 仿± ä¸éæ©ä¸ä¸ªç©ºé²ç客æ·ç«¯è¿è¡åéï¼å¹¶çå¾
æå¡å¨ååº |
| | | // // 仿± ä¸éæ©ä¸ä¸ªç©ºé²ç客æ·ç«¯è¿è¡åéï¼å¹¶çå¾
æå¡å¨ååº |
| | | // bool send_to_idle_client_and_wait(const std::string& message, int timeout_ms); |
| | | // bool send_binary_to_idle_client_and_wait(const std::vector<char>& binary_data, int timeout_ms); |
| | | // |
| | | // // 仿± ä¸éæ©ä¸ä¸ªç©ºé²ç客æ·ç«¯è¿è¡åéï¼å¹¶çå¾
æå¡å¨ååºï¼å¦æè¶
æ¶åéè¯ |
| | | // // 仿± ä¸éæ©ä¸ä¸ªç©ºé²ç客æ·ç«¯è¿è¡åéï¼å¹¶çå¾
æå¡å¨ååºï¼å¦æè¶
æ¶åéè¯ |
| | | // bool send_to_idle_client_with_retry(const std::string& message, int total_timeout_ms, int retry_interval_ms); |
| | | // bool send_binary_to_idle_client_with_retry(std::vector<char>&& binary_data, int total_timeout_ms, int retry_interval_ms); |
| | | // |
| | | // // 设置 WebSocket 客æ·ç«¯äºä»¶å¤çç¨åº |
| | | // // 设置 WebSocket 客æ·ç«¯äºä»¶å¤çç¨åº |
| | | // void set_open_handler(WebSocketClient::OpenHandler handler); |
| | | // void set_message_handler(WebSocketClient::MessageHandler handler); |
| | | // void set_close_handler(WebSocketClient::CloseHandler handler); |
| | |
| | | |
| | | // stdafx.cpp : éé å¨çª é¢èç¶ ç¸ç»¢ ä¹ç»° å®¶è¶ é¢èæ¶èªä¿. |
| | | // EdgeInspector_App.pchç»° åºåº åªé¢èç åºæ¹å éèªä¿. |
| | | // stdafx.objä¿ç»° åºåº åªé¢èç å±ä¾¥ æ²¥çå å¨çªéèªä¿. |
| | |  |
| | | // stdafx.cpp : éé å¨çª é¢èç¶ ç¸ç»¢ ä¹ç»° å®¶è¶ é¢èæ¶èªä¿. |
| | | // EdgeInspector_App.pchç»° åºåº åªé¢èç åºæ¹å éèªä¿. |
| | | // stdafx.objä¿ç»° åºåº åªé¢èç å±ä¾¥ æ²¥çå å¨çªéèªä¿. |
| | | |
| | | #include "stdafx.h" |
| | | |
| | |
| | | |
| | | // stdafx.h : ç£æ è¤ä¾©çªç¤ç¶ ç£æ å½çç»ç¤ç»° è¼ç»° |
| | | // éé ç«è¶è¢ å¨çª é¢è 棺 æ©èºçé£ å
访 å¨çª é¢èæ |
| | | // ç¸ç»¢ ä¹ç»° å¨çª é¢èæ¶èªä¿. |
| | |  |
| | | // stdafx.h : ç£æ è¤ä¾©çªç¤ç¶ ç£æ å½çç»ç¤ç»° è¼ç»° |
| | | // éé ç«è¶è¢ å¨çª é¢è 棺 æ©èºçé£ å
访 å¨çª é¢èæ |
| | | // ç¸ç»¢ ä¹ç»° å¨çª é¢èæ¶èªä¿. |
| | | |
| | | #pragma once |
| | | |
| | |
| | | #endif |
| | | |
| | | #ifndef VC_EXTRALEAN |
| | | #define VC_EXTRALEAN // èç¼ è¤ä¾©ç»ç¤ è¼ç»° é´ä¾©ç¯® Windows åºæ¹ä¿è¾ åå¯é¦èªä¿. |
| | | #define VC_EXTRALEAN // èç¼ è¤ä¾©ç»ç¤ è¼ç»° é´ä¾©ç¯® Windows åºæ¹ä¿è¾ åå¯é¦èªä¿. |
| | | #endif |
| | | |
| | | #include "targetver.h" |
| | | |
| | | #define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // èä½ CString 积己ç£ç»° çç«å©æ èº æ¥æ«éèªä¿. |
| | | #define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // èä½ CString 积己ç£ç»° çç«å©æ èº æ¥æ«éèªä¿. |
| | | |
| | | // MFCç¼ åç¹ ä½çè å
¬ç« åç·è çç» çç«ç¤ä¿ æªè è§ææç« 秦åé¦èªä¿. |
| | | // MFCç¼ åç¹ ä½çè å
¬ç« åç·è çç» çç«ç¤ä¿ æªè è§ææç« 秦åé¦èªä¿. |
| | | #define _AFX_ALL_WARNINGS |
| | | |
| | | #include <afxwin.h> // MFC ç´ç¼´ 棺 éé å¤å·± 夸家æ¶èªä¿. |
| | | #include <afxext.h> // MFC ç¬åæ¶èªä¿. |
| | | #include <afxwin.h> // MFC ç´ç¼´ 棺 éé å¤å·± 夸家æ¶èªä¿. |
| | | #include <afxext.h> // MFC ç¬åæ¶èªä¿. |
| | | |
| | | |
| | | #include <afxdisp.h> // MFC ç£æ¼æ³ åªè´°è¶æ¶èªä¿. |
| | | #include <afxdisp.h> // MFC ç£æ¼æ³ åªè´°è¶æ¶èªä¿. |
| | | |
| | | |
| | | |
| | | #ifndef _AFX_NO_OLE_SUPPORT |
| | | #include <afxdtctl.h> // Internet Explorer 4 å侩 ç§é£è´¹ä¿ æªè MFC ç¤çæ¶èªä¿. |
| | | #include <afxdtctl.h> // Internet Explorer 4 å侩 ç§é£è´¹ä¿ æªè MFC ç¤çæ¶èªä¿. |
| | | #endif |
| | | #ifndef _AFX_NO_AFXCMN_SUPPORT |
| | | #include <afxcmn.h> // Windows å侩 ç§é£è´¹ä¿ æªè MFC ç¤çæ¶èªä¿. |
| | | #include <afxcmn.h> // Windows å侩 ç§é£è´¹ä¿ æªè MFC ç¤çæ¶èªä¿. |
| | | #endif // _AFX_NO_AFXCMN_SUPPORT |
| | | |
| | | #include <afxcontrolbars.h> // MFCç¼ åºå¤¯ 棺 ç§é£è´¹ éæª ç¤ç |
| | | #include <afxcontrolbars.h> // MFCç¼ åºå¤¯ 棺 ç§é£è´¹ éæª ç¤ç |
| | | |
| | | |
| | | #include "InspectionBase.h" |
| | |
| | | static UINT g_nSequenceOffColor = RGB(0, 0, 0); |
| | | static UINT g_nSequenceOnColor = RGB(0, 180, 0); |
| | | |
| | | //1. é鿍¡å |
| | | //1. é鿍¡å |
| | | #include "../SDK/BlGrabber/include/FrameBufferController.h" |
| | | #include "../SDK/BlGrabber/include/GrabberControl.h" |
| | | #if _DEBUG |
| | |
| | | #endif |
| | | |
| | | #if HALCON_VISION_KEY |
| | | //2. è§è§æ¥å¿æ¨¡å |
| | | //2. è§è§æ¥å¿æ¨¡å |
| | | #include "../SDK/LogSDK/include/ILogger.h" |
| | | #include "../SDK/LogSDK/include/LogLib.h" |
| | | #if _DEBUG |
| | |
| | | #pragma comment(lib,"../SDK/LogSDK/lib/x64/Release/Log.lib") |
| | | #endif |
| | | |
| | | //3. è§è§æ¾ç¤ºæ¨¡å |
| | | //3. è§è§æ¾ç¤ºæ¨¡å |
| | | #include "../SDK/BaseDisplaySDK/include/typesdef.h" |
| | | #include "../SDK/BaseDisplaySDK/include/BaseVision.h" |
| | | #include "../SDK/BaseDisplaySDK/include/IClsShape.h" |
| | |
| | | #pragma comment(lib,"../SDK/BaseDisplaySDK/lib/x64/Release/BaseDisplay.lib") |
| | | #endif |
| | | |
| | | //4. è§è§å¤ç模å |
| | | //4. è§è§å¤ç模å |
| | | #include "../SDK/BlVisionPro/include/IVisionRecipe.h" |
| | | #include "../SDK/BlVisionPro/include/ISoftVisionApp.h" |
| | | #include "../SDK/BlVisionPro/include/BlVisionLib.h" |
| | |
| | | #endif |
| | | #endif |
| | | |
| | | //5. AI模å |
| | | //5. AI模å |
| | | #include "../SDK/AIClient/include/AiDetectEx.h" |
| | | #if _DEBUG |
| | | #pragma comment (lib, "../SDK/AIClient/lib/AIClientD.lib") |
| | |
| | | #pragma comment (lib, "../SDK/AIClient/lib/AIClient.lib") |
| | | #endif |
| | | |
| | | //6. SISåºå±æ¨¡å |
| | | //6. SISåºå±æ¨¡å |
| | | #ifdef _DEBUG |
| | | #pragma comment(lib, "../SDK/CHThreadPool/lib/x64/Release/CHThreadPoolD.lib") |
| | | #pragma comment(lib, "../SDK/SISControls/lib/x64/Release/SISControlsD.lib") |
| | |
| | | #pragma once |
| | | #pragma once |
| | | |
| | | // å¨çª SDKDDKVer.hç»° è¤ä¾© åç·è Windows æ²éæ±½ å æ»åæ åå è篮 æ²éæ±½é æ²¥ç¼é¦èªä¿. |
| | | // å¨çª SDKDDKVer.hç»° è¤ä¾© åç·è Windows æ²éæ±½ å æ»åæ åå è篮 æ²éæ±½é æ²¥ç¼é¦èªä¿. |
| | | |
| | | // æå Windows æ²éæ±½ä¿ æªç§¦ è§ä¾© æ©èºå¼ä¼é å¼éçªå¦¨ç»° çå¿«ä¿ç»° SDKDDKVer.hç« å¨çªçªæ åä¿ |
| | | // WinSDKVer.hç« å¨çªçªç» _WIN32_WINNT æ¦åèºç« ç¤ççªå¦¨ç»° æ²éæ±½æ èº æ±²æ²¥çªç»ç«å·. |
| | | // æå Windows æ²éæ±½ä¿ æªç§¦ è§ä¾© æ©èºå¼ä¼é å¼éçªå¦¨ç»° çå¿«ä¿ç»° SDKDDKVer.hç« å¨çªçªæ åä¿ |
| | | // WinSDKVer.hç« å¨çªçªç» _WIN32_WINNT æ¦åèºç« ç¤ççªå¦¨ç»° æ²éæ±½æ èº æ±²æ²¥çªç»ç«å·. |
| | | |
| | | #include <SDKDDKVer.h> |