| SourceCode/Bond/Servo/CEquipment.cpp | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| SourceCode/Bond/Servo/CGlass.cpp | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| SourceCode/Bond/Servo/CGlass.h | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| SourceCode/Bond/Servo/CProcessData.cpp | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| SourceCode/Bond/Servo/CProcessData.h | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
SourceCode/Bond/Servo/CEquipment.cpp
@@ -1528,6 +1528,24 @@ processData.getAttributeVector(attrubutes, weight); onProcessData(&processData); // 找到玻璃,关联数据 CGlass* pGlass = this->getGlassWithCassette(processData.getCassetteSequenceNo(), processData.getJobSequenceNo()); if (pGlass == nullptr) { LOGE("<CEquipment-%s>找不到对应Glass, 关联工艺参数失败。", this->getName().c_str(), processData.getCassetteSequenceNo(), processData.getJobSequenceNo()); return -1; } auto rawData = processData.getParamsRawData(); std::vector<CParam> params; this->parsingParams((const char*)rawData.data(), rawData.size(), params); pGlass->addParams(params); return nRet; } SourceCode/Bond/Servo/CGlass.cpp
@@ -369,4 +369,14 @@ { m_tEnd = std::chrono::system_clock::now(); } void CGlass::addParams(std::vector<CParam>& params) { m_params.insert(m_params.end(), params.begin(), params.end()); } std::vector<CParam>& CGlass::getParams() { return m_params; } } SourceCode/Bond/Servo/CGlass.h
@@ -8,6 +8,7 @@ #include "CJobDataS.h" #include "ServoCommo.h" #include "ProcessJob.h" #include "CParam.h" namespace SERVO { @@ -89,6 +90,10 @@ void markStart(); void markEnd(); // 工艺参数 void addParams(std::vector<CParam>& params); std::vector<CParam>& getParams(); private: MaterialsType m_type; std::string m_strID; @@ -100,6 +105,7 @@ int m_nOriginSlot; BOOL m_bScheduledForProcessing; /* 是否将加工处理 */ CProcessJob* m_pProcessJob; std::vector<CParam> m_params; // 工艺参数 }; } SourceCode/Bond/Servo/CProcessData.cpp
@@ -15,6 +15,16 @@ } short CProcessData::getCassetteSequenceNo() { return m_nCassetteSequenceNo; } short CProcessData::getJobSequenceNo() { return m_nJobSequenceNo; } std::string& CProcessData::getGlassId() { return m_strGlassId; @@ -40,14 +50,9 @@ return m_nTotalParameter; } const std::list<std::string>& CProcessData::getParameters() std::vector<uint8_t>& CProcessData::getParamsRawData() { return m_params; } void CProcessData::getParameters(std::list<std::string>& list) { std::copy(m_params.begin(), m_params.end(), std::back_inserter(list)); return m_paramsRawData; } int CProcessData::serialize(char* pszBuffer, int nBufferSize) @@ -57,6 +62,12 @@ // 解释数据 // Glass ID int index = 0; memcpy(&pszBuffer[index], &m_nCassetteSequenceNo, sizeof(short)); index += sizeof(short); memcpy(&pszBuffer[index], &m_nJobSequenceNo, sizeof(short)); index += sizeof(short); CToolUnits::convertString(&pszBuffer[index], 10 * 2, m_strGlassId); index += 10 * 2; @@ -80,17 +91,9 @@ m_nCurrentGroup = (unsigned int)CToolUnits::toInt16(&pszBuffer[index]); index += 2; // param list(0x1881~0x1a74), 共1000 bytes, 20个字符为一个参数, 50组 // 最后一group可能不满足50, 以m_nTotalParameter为依据 int size = (m_nCurrentGroup == m_nTotalGroup) ? m_nTotalParameter % 50 : 50; for (int i = 0; i < size; i++) { std::string strParam; CToolUnits::convertString(&pszBuffer[index], 20, strParam); if (!strParam.empty()) { m_params.push_back(strParam); } index += 20; } // 解释数据 return 538 * 2; } @@ -100,6 +103,12 @@ if (nBufferSize < 538 * 2) return -1; int index = 0; memcpy(&m_nCassetteSequenceNo, &pszBuffer[index], sizeof(short)); index += sizeof(short); memcpy(&m_nJobSequenceNo, &pszBuffer[index], sizeof(short)); index += sizeof(short); CToolUnits::convertString(&pszBuffer[index], 10 * 2, m_strGlassId); index += 10 * 2; @@ -118,7 +127,12 @@ memcpy(&m_nCurrentGroup, &pszBuffer[index], sizeof(short)); index += sizeof(short); // 多分组如何处理?待考虑 // 参数原始数据 m_paramsRawData.clear(); m_paramsRawData.insert( m_paramsRawData.end(), reinterpret_cast<const uint8_t*>(&pszBuffer[index]), reinterpret_cast<const uint8_t*>(&pszBuffer[index]) + 500); return 538 * 2; @@ -139,13 +153,5 @@ std::to_string(m_nTotalGroup).c_str(), "", weight++)); attrubutes.addAttribute(new CAttribute("Current Group", std::to_string(m_nCurrentGroup).c_str(), "", weight++)); char szName[256]; int index = 0; for (auto item : m_params) { sprintf_s(szName, 256, "Parameter %d", ++index); attrubutes.addAttribute(new CAttribute(szName, item.c_str(), "", weight++)); } } } SourceCode/Bond/Servo/CProcessData.h
@@ -1,6 +1,7 @@ #pragma once #include <list> #include "CAttributeVector.h" #include "CParam.h" namespace SERVO { @@ -11,25 +12,28 @@ virtual ~CProcessData(); public: short getCassetteSequenceNo(); short getJobSequenceNo(); std::string& getGlassId(); void setGlassId(const char* pszId); std::string& getStartTime(); std::string& getEndTime(); unsigned int getTotalParameter(); const std::list<std::string>& getParameters(); void getParameters(std::list<std::string>& list); std::vector<uint8_t>& getParamsRawData(); int serialize(char* pszBuffer, int nBufferSize); int unserialize(const char* pszBuffer, int nBufferSize); void getAttributeVector(CAttributeVector& attrubutes, int beginWeight); private: short m_nCassetteSequenceNo; short m_nJobSequenceNo; std::string m_strGlassId; std::string m_strStartTime; std::string m_strEndTime; unsigned int m_nTotalParameter; unsigned int m_nTotalGroup; unsigned int m_nCurrentGroup; std::list<std::string> m_params; std::vector<uint8_t> m_paramsRawData; }; }