#pragma once #include "CHAutoDrsConnector/AutoDrsConnector.h" #define GLASSID_LENGTH 50 #define CELLID_LENGTH 50 #define IMAGE_NAME_LENGTH 200 #define CONTROL_RESULTDATA_COUNT 650 #define STRING_LENGTH 10 namespace CHSignalControls_Network { class CSignalControlResultData { public: CSignalControlResultData(void) { Reset(); } virtual ~CSignalControlResultData(void) { Reset(); } void Reset() { m_nDefectIndex = 0; m_nCellIndex = 0; m_nReviewType = 0; m_nResultCode = 0; ZeroMemory(m_strCellID, sizeof(char)*CELLID_LENGTH); ZeroMemory(m_strImageName, sizeof(char)*IMAGE_NAME_LENGTH); ZeroMemory(m_strDRSImageName, sizeof(char)*IMAGE_NAME_LENGTH); // // Review Module Motor Position [um] m_nUMMotorPosX = 0; m_nUMMotorPosY = 0; // Review Module Glass Position [um] m_nUMGlassPosX = 0; m_nUMGlassPosY = 0; // inspector info m_nLocation = 0; m_nSubType = 0; m_nUMAreaSize = 0; m_nStackInfo = 0; m_nCameraID = 0; m_nScanIndex = 0; m_nLevelSrcMin = 0; m_nLevelSrcMax = 0; m_nLevelRefMin = 0; m_nLevelRefMax = 0; m_dataAutoDrsResult.Reset(); } BOOL SaveData(FILE *fp) { USES_CONVERSION; if (fp==NULL) return FALSE; _ftprintf_s(fp, _T("%d, %d, %d, %s, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %s, %s, %d, %d, %d, %d, %d, %d, %d, %d, %d, %f, %d, %s, %s, %s, %s, %s, %s\n"), m_nDefectIndex, m_nCellIndex, m_nReviewType, A2W(m_strCellID), m_nUMMotorPosX, m_nUMMotorPosY, m_nUMGlassPosX, m_nUMGlassPosY, m_nLocation, m_nSubType, m_nUMAreaSize, m_nStackInfo, m_nCameraID, m_nScanIndex, m_nLevelSrcMin, m_nLevelSrcMax, m_nLevelRefMin, m_nLevelRefMax, m_nResultCode, A2W(m_strImageName), A2W(m_strDRSImageName), // drs data m_dataAutoDrsResult.nReviewDefectIndex, m_dataAutoDrsResult.nSX, m_dataAutoDrsResult.nSY, m_dataAutoDrsResult.nEX, m_dataAutoDrsResult.nEY, m_dataAutoDrsResult.nFocus, m_dataAutoDrsResult.nBright, m_dataAutoDrsResult.nUniformity, m_dataAutoDrsResult.nWB, m_dataAutoDrsResult.fTilt, m_dataAutoDrsResult.bCopy, A2W(m_dataAutoDrsResult.strImageID), A2W(m_dataAutoDrsResult.strDefectName), A2W(m_dataAutoDrsResult.strDefectCode), A2W(m_dataAutoDrsResult.strDefect1), A2W(m_dataAutoDrsResult.strDefect2), A2W(m_dataAutoDrsResult.strDefect3) ); return TRUE; } // info (server -> module) // point info int m_nDefectIndex; int m_nCellIndex; int m_nReviewType; char m_strCellID[CELLID_LENGTH]; // // Review Module Motor Position [um] int m_nUMMotorPosX; int m_nUMMotorPosY; // Review Module Glass Position [um] int m_nUMGlassPosX; int m_nUMGlassPosY; // inspector info int m_nLocation; int m_nSubType; int m_nUMAreaSize; int m_nStackInfo; int m_nCameraID; int m_nScanIndex; int m_nLevelSrcMin; int m_nLevelSrcMax; int m_nLevelRefMin; int m_nLevelRefMax; // result (module -> server) // point result int m_nResultCode; char m_strImageName[IMAGE_NAME_LENGTH]; char m_strDRSImageName[IMAGE_NAME_LENGTH]; // auto drs result CAutoDrsResultData m_dataAutoDrsResult; }; class CSignalControlProcessorData { public: CSignalControlProcessorData(int nModuleIndex=-1) { Reset(); m_nModuleIndex = nModuleIndex; } virtual ~CSignalControlProcessorData(void) { Reset(); } void Reset() { m_nModuleIndex = -1; m_nPlanIndex = -1; m_nResultDataCount = 0; ZeroMemory(m_strGlassID, sizeof(char)*GLASSID_LENGTH); ZeroMemory(m_ResultData, sizeof(CSignalControlResultData)*CONTROL_RESULTDATA_COUNT); } // getter int GetModuleIndex() const { return m_nModuleIndex; } int GetPlanIndex() const { return m_nPlanIndex; } int GetResultDataCount() const { return m_nResultDataCount; } const char* GetGlassID() const { return m_strGlassID; } CSignalControlResultData* GetResultData(int nIndex) { if (nIndex<0 || nIndex>=m_nResultDataCount) return NULL; return &m_ResultData[nIndex]; } const CSignalControlResultData* GetResultData(int nIndex) const { if (nIndex<0 || nIndex>=m_nResultDataCount) return NULL; return &m_ResultData[nIndex]; } CSignalControlResultData* GetResultDataRank(int nRank) { for(int i =0; i < m_nResultDataCount; i++) { CSignalControlResultData *pRessultData = GetResultData(i); if(pRessultData == NULL) continue; if(pRessultData->m_dataAutoDrsResult.nRankIndex == nRank) { return pRessultData; } } return NULL; } const CSignalControlResultData* GetResultDataRank(int nRank) const { for(int i =0; i < m_nResultDataCount; i++) { const CSignalControlResultData *pRessultData = GetResultData(i); if(pRessultData == NULL) continue; if(pRessultData->m_dataAutoDrsResult.nRankIndex == nRank) { return pRessultData; } } return NULL; } // setter void SetModuleIndex(int nIndex) { m_nModuleIndex = nIndex; } void SetPlanIndex(int nIndex) { m_nPlanIndex = nIndex; } void SetGlassID(const CString& strGlassID) { #ifdef X USES_CONVERSION; sprintf_s(m_strGlassID, "%s", W2A(strGlassID)); #else USES_CONVERSION; sprintf_s(m_strGlassID, "%s", T2W(strGlassID)); #endif } void SetResultData(CSignalControlResultData* pResultData, int nResultCount) { if (nResultCount>CONTROL_RESULTDATA_COUNT) nResultCount = CONTROL_RESULTDATA_COUNT; m_nResultDataCount = 0; ZeroMemory(m_ResultData, sizeof(CSignalControlResultData)*CONTROL_RESULTDATA_COUNT); m_nResultDataCount = nResultCount; memcpy(m_ResultData, pResultData, sizeof(CSignalControlResultData)*m_nResultDataCount); } protected: int m_nModuleIndex; int m_nPlanIndex; int m_nResultDataCount; char m_strGlassID[GLASSID_LENGTH]; CSignalControlResultData m_ResultData[CONTROL_RESULTDATA_COUNT]; }; };