| | |
| | | |
| | | int CBakeCooling::parsingProcessData(const char* pszData, size_t size, std::vector<CParam>& params) |
| | | { |
| | | return parsingParams(pszData, size, params); |
| | | ASSERT(pszData); |
| | | if (size < 250) return 0; |
| | | int i = 0, v; |
| | | |
| | | |
| | | // 1.å·¥èºåæ°åºå· |
| | | v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8; |
| | | params.push_back(CParam("å·¥èºåæ°åºå·", "", this->getName().c_str(), v)); |
| | | i += 2; |
| | | |
| | | if (v == 1) { |
| | | // 2.A_è
çç¤æ¶é´ |
| | | v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8; |
| | | params.push_back(CParam("A_è
çç¤æ¶é´", "", this->getName().c_str(), v * 0.01f)); |
| | | i += 2; |
| | | |
| | | // 3.A_çç¤æ¸©åº¦è®¾å® |
| | | v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8; |
| | | params.push_back(CParam("A_çç¤æ¸©åº¦è®¾å®", "", this->getName().c_str(), v * 0.1f)); |
| | | i += 2; |
| | | } |
| | | else if (v == 2) { |
| | | // 2.A_è
å·å´æ¶é´ |
| | | v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8; |
| | | params.push_back(CParam("A_è
å·å´æ¶é´", "", this->getName().c_str(), v * 0.01f)); |
| | | i += 2; |
| | | } |
| | | else if (v == 3) { |
| | | // 2.A_è
çç¤æ¶é´ |
| | | v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8; |
| | | params.push_back(CParam("B_è
çç¤æ¶é´", "", this->getName().c_str(), v * 0.01f)); |
| | | i += 2; |
| | | |
| | | // 3.A_çç¤æ¸©åº¦è®¾å® |
| | | v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8; |
| | | params.push_back(CParam("B_çç¤æ¸©åº¦è®¾å®", "", this->getName().c_str(), v * 0.1f)); |
| | | i += 2; |
| | | } |
| | | else if (v == 4) { |
| | | // 2.A_è
å·å´æ¶é´ |
| | | v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8; |
| | | params.push_back(CParam("B_è
å·å´æ¶é´", "", this->getName().c_str(), v * 0.01f)); |
| | | i += 2; |
| | | } |
| | | |
| | | |
| | | return (int)params.size(); |
| | | } |
| | | |
| | | int CBakeCooling::parsingSVData(const char* pszData, size_t size, std::vector<CParam>& params) |
| | |
| | | |
| | | auto rawData = processData.getParamsRawData(); |
| | | std::vector<CParam> tempParams; |
| | | this->parsingParams((const char*)rawData.data(), rawData.size(), tempParams); |
| | | this->parsingProcessData((const char*)rawData.data(), rawData.size(), tempParams); |
| | | int n = processData.getTotalParameter(); |
| | | std::vector<CParam> params(tempParams.begin(), tempParams.begin() + min(n, (int)tempParams.size())); |
| | | pGlass->addParams(params); |
| | |
| | | m_bBatch = false; |
| | | m_nContinuousTransferCount = 0; |
| | | m_nContinuousTransferStep = CTStep_Unknow; |
| | | m_nContinuousWorkingPort = 0; |
| | | m_nContinuousWorkingSlot = 0; |
| | | m_pControlJob = nullptr; |
| | | m_nTestFlag = 0; |
| | | InitializeCriticalSection(&m_criticalSection); |
| | |
| | | } |
| | | |
| | | // Measurement -> LoadPort |
| | | for (int s = 0; s < 4; s++) { |
| | | PortType pt = pLoadPorts[s]->getPortType(); |
| | | for (int p = 0; p < 4; p++) { |
| | | if (p != m_nContinuousWorkingPort) continue; |
| | | PortType pt = pLoadPorts[p]->getPortType(); |
| | | if ((m_nContinuousTransferStep == CTStep_Unknow || m_nContinuousTransferStep == CTStep_BakeCooling_Measurement) |
| | | && !rmd.armState[0] && pLoadPorts[s]->isEnable() |
| | | && !rmd.armState[0] && pLoadPorts[p]->isEnable() |
| | | && (pt == PortType::Unloading || pt == PortType::Both) |
| | | && pLoadPorts[s]->getPortStatus() == PORT_INUSE) { |
| | | && pLoadPorts[p]->getPortStatus() == PORT_INUSE) { |
| | | for (int slot = 0; slot < SLOT_MAX; slot++) { |
| | | if (slot != m_nContinuousWorkingSlot) continue; |
| | | m_pActiveRobotTask = createTransferTask_continuous_transfer(pMeasurement, |
| | | 0, pLoadPorts[s], slot); |
| | | 0, pLoadPorts[p], slot); |
| | | if (m_pActiveRobotTask != nullptr) { |
| | | m_nContinuousTransferStep = CTStep_Measurement_LoadPort; |
| | | m_nContinuousTransferStep = CTStep_end; |
| | |
| | | } |
| | | |
| | | // LoadPort -> Aligner |
| | | for (int s = 0; s < 4; s++) { |
| | | PortType pt = pLoadPorts[s]->getPortType(); |
| | | for (int p = 0; p < 4; p++) { |
| | | PortType pt = pLoadPorts[p]->getPortType(); |
| | | if ((m_nContinuousTransferStep == CTStep_Unknow || m_nContinuousTransferStep == CTStep_end) |
| | | && !rmd.armState[0] && pLoadPorts[s]->isEnable() |
| | | && !rmd.armState[0] && pLoadPorts[p]->isEnable() |
| | | && (pt == PortType::Loading || pt == PortType::Both) |
| | | && pLoadPorts[s]->getPortStatus() == PORT_INUSE) { |
| | | && pLoadPorts[p]->getPortStatus() == PORT_INUSE) { |
| | | for (int slot = 0; slot < SLOT_MAX; slot++) { |
| | | m_pActiveRobotTask = createTransferTask_continuous_transfer(pLoadPorts[s], |
| | | m_pActiveRobotTask = createTransferTask_continuous_transfer(pLoadPorts[p], |
| | | slot, pAligner, 0); |
| | | if (m_pActiveRobotTask != nullptr) { |
| | | m_nContinuousTransferStep = CTStep_LoadPort_Aligner; |
| | | m_nContinuousWorkingPort = p; |
| | | m_nContinuousWorkingSlot = slot; |
| | | LOGI("<ContinuousTransfer>åä¼ æµè¯ï¼å¼å§æ¬éä»»å¡(LoadPort -> Aligner)..."); |
| | | pEFEM->setContext(m_pActiveRobotTask->getContext()); |
| | | goto CT_PORT_GET; |
| | |
| | | // åä¼ åæ°è®¡æ° |
| | | int m_nContinuousTransferCount; |
| | | int m_nContinuousTransferStep; |
| | | int m_nContinuousWorkingPort; |
| | | int m_nContinuousWorkingSlot; |
| | | |
| | | // æ°å¢å·²ç»å¼å§å¤ççProcessJobå表 |
| | | std::vector<CProcessJob*> m_inProcesJobs; |
| | |
| | | params.push_back(CParam("æ£æµé度", "", this->getName().c_str(), v * 0.001)); |
| | | i += 4; |
| | | |
| | | return (int)params.size(); |
| | | } |
| | | |
| | | int CMeasurement::parsingProcessData(const char* pszData, size_t size, std::vector<CParam>& params) |
| | | { |
| | | ASSERT(pszData); |
| | | if (size < 250) return 0; |
| | | int i = 0, v; |
| | | |
| | | |
| | | // 1.æ£æµåè½å¯ç¨/ç¦ç¨ |
| | | v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8; |
| | | params.push_back(CParam("æ£æµåè½å¯ç¨/ç¦ç¨", "", this->getName().c_str(), v)); |
| | | i += 2; |
| | | |
| | | // 2.æ£æµé度 |
| | | v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8 | (pszData[i + 2] & 0xff) << 16 | (pszData[i + 3] & 0xff) << 24; |
| | | params.push_back(CParam("æ£æµé度", "", this->getName().c_str(), v * 0.001)); |
| | | i += 4; |
| | | |
| | | // 3.æ£æµ1æ°æ® |
| | | v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8 | (pszData[i + 2] & 0xff) << 16 | (pszData[i + 3] & 0xff) << 24; |
| | | params.push_back(CParam("æ£æµ1æ°æ®", "", this->getName().c_str(), v * 0.001)); |
| | | i += 4; |
| | | |
| | | |
| | | // 4.æ£æµ2æ°æ® |
| | | v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8 | (pszData[i + 2] & 0xff) << 16 | (pszData[i + 3] & 0xff) << 24; |
| | | params.push_back(CParam("æ£æµ2æ°æ®", "", this->getName().c_str(), v * 0.001)); |
| | | i += 4; |
| | | |
| | | return (int)params.size(); |
| | | } |
| | | |
| | | int CMeasurement::parsingProcessData(const char* pszData, size_t size, std::vector<CParam>& params) |
| | | { |
| | | return parsingParams(pszData, size, params); |
| | | } |
| | | |
| | | int CMeasurement::parsingSVData(const char* pszData, size_t size, std::vector<CParam>& params) |
| | |
| | | |
| | | int CVacuumBake::parsingProcessData(const char* pszData, size_t size, std::vector<CParam>& params) |
| | | { |
| | | return parsingParams(pszData, size, params); |
| | | ASSERT(pszData); |
| | | if (size < 250) return 0; |
| | | int i = 0, v; |
| | | |
| | | |
| | | // 1.å·¥èºåæ°åºå· |
| | | v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8; |
| | | params.push_back(CParam("å·¥èºåæ°åºå·", "", this->getName().c_str(), v)); |
| | | i += 2; |
| | | |
| | | if (v == 1) { |
| | | // 2.A_è
å çæ¶é´ |
| | | v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8; |
| | | params.push_back(CParam("A_è
å çæ¶é´", "", this->getName().c_str(), v * 0.1f)); |
| | | i += 2; |
| | | |
| | | // 3.A_è
ç ´ç空æ¶é´ |
| | | v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8; |
| | | params.push_back(CParam("A_è
ç ´ç空æ¶é´", "", this->getName().c_str(), v * 0.01f)); |
| | | i += 2; |
| | | |
| | | // 4.A_è
ç空å°è¾¾å¼ |
| | | params.push_back(CParam("A_è
ç空å°è¾¾å¼", "", this->getName().c_str(), (double)toFloat(&pszData[i]))); |
| | | i += 4; |
| | | |
| | | // 5.A_è
温æ§è¡¨ä¸»æ§æ¸©åº¦è®¾å® |
| | | v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8 | (pszData[i + 2] & 0xff) << 16 | (pszData[i + 3] & 0xff) << 24; |
| | | params.push_back(CParam("A_è
温æ§è¡¨ä¸»æ§æ¸©åº¦è®¾å®", "", this->getName().c_str(), v * 0.1f)); |
| | | i += 4; |
| | | } |
| | | else if (v == 1) { |
| | | // 2.B_è
å çæ¶é´ |
| | | v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8; |
| | | params.push_back(CParam("B_è
å çæ¶é´", "", this->getName().c_str(), v * 0.1f)); |
| | | i += 2; |
| | | |
| | | // 3.A_è
ç ´ç空æ¶é´ |
| | | v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8; |
| | | params.push_back(CParam("B_è
ç ´ç空æ¶é´", "", this->getName().c_str(), v * 0.01f)); |
| | | i += 2; |
| | | |
| | | // 4.A_è
ç空å°è¾¾å¼ |
| | | params.push_back(CParam("B_è
ç空å°è¾¾å¼", "", this->getName().c_str(), (double)toFloat(&pszData[i]))); |
| | | i += 4; |
| | | |
| | | // 5.A_è
温æ§è¡¨ä¸»æ§æ¸©åº¦è®¾å® |
| | | v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8 | (pszData[i + 2] & 0xff) << 16 | (pszData[i + 3] & 0xff) << 24; |
| | | params.push_back(CParam("B_è
温æ§è¡¨ä¸»æ§æ¸©åº¦è®¾å®", "", this->getName().c_str(), v * 0.1f)); |
| | | i += 4; |
| | | } |
| | | |
| | | return (int)params.size(); |
| | | } |
| | | |
| | | int CVacuumBake::parsingSVData(const char* pszData, size_t size, std::vector<CParam>& params) |