| | |
| | | m_nProcessResonCode = 0; |
| | | m_nLastGlassFlag = 0; |
| | | m_nFirstGlassFlag = 0; |
| | | m_nQTime[3] = {0}; |
| | | m_nQTime[3] = { 0 }; |
| | | m_nQTimeOverFlag = 0; |
| | | m_nMasterRecipe = 0; |
| | | m_nRecipeIds[DEVICE_COUNT] = { 0 }; |
| | | m_nMode = 0; |
| | | m_nSlotUnitSelectFlag = 0; |
| | | m_nSourcePortNo = 0; |
| | | m_nSourceSlotNo = 0; |
| | | m_nTargetPortNo = 0; |
| | | m_nTargetSlotNo = 0; |
| | | m_nProductJudge = 0; |
| | | m_pRawData = nullptr; |
| | | m_pOwner = nullptr; |
| | | if (ENABLE_JOBDATAS_RAWDATA) { |
| | |
| | | m_nQTime[2] = pScr->m_nQTime[2]; |
| | | m_nQTimeOverFlag = pScr->m_nQTimeOverFlag; |
| | | m_nMasterRecipe = pScr->m_nMasterRecipe; |
| | | m_strProductRecipeId = pScr->m_strProductRecipeId; |
| | | m_strPCode = pScr->m_strPCode; |
| | | m_strUseType = pScr->m_strUseType; |
| | | memcpy(m_nRecipeIds, pScr->m_nRecipeIds, sizeof(m_nRecipeIds)); |
| | | m_strPanelMeasure = pScr->m_strPanelMeasure; |
| | | m_nMode = pScr->m_nMode; |
| | | m_nSlotUnitSelectFlag = pScr->m_nSlotUnitSelectFlag; |
| | |
| | | m_nSourceSlotNo = pScr->m_nSourceSlotNo; |
| | | m_nTargetPortNo = pScr->m_nTargetPortNo; |
| | | m_nTargetSlotNo = pScr->m_nTargetSlotNo; |
| | | m_nProductJudge = pScr->m_nProductJudge; |
| | | m_pOwner = pScr->m_pOwner; |
| | | } |
| | | |
| | |
| | | m_nQTime[2] = pScr->m_nQTime[2]; |
| | | m_nQTimeOverFlag = pScr->m_nQTimeOverFlag; |
| | | m_nMasterRecipe = pScr->m_nMasterRecipe; |
| | | m_strProductRecipeId = pScr->m_strProductRecipeId; |
| | | m_strPCode = pScr->m_strPCode; |
| | | m_strUseType = pScr->m_strUseType; |
| | | memcpy(m_nRecipeIds, pScr->m_nRecipeIds, sizeof(m_nRecipeIds)); |
| | | m_strPanelMeasure = pScr->m_strPanelMeasure; |
| | | m_nMode = pScr->m_nMode; |
| | | m_nSlotUnitSelectFlag = pScr->m_nSlotUnitSelectFlag; |
| | |
| | | m_nSourceSlotNo = pScr->m_nSourceSlotNo; |
| | | m_nTargetPortNo = pScr->m_nTargetPortNo; |
| | | m_nTargetSlotNo = pScr->m_nTargetSlotNo; |
| | | m_nProductJudge = pScr->m_nProductJudge; |
| | | m_pOwner = pScr->m_pOwner; |
| | | } |
| | | |
| | |
| | | m_nMasterRecipe = recipe; |
| | | } |
| | | |
| | | std::string& CJobDataS::getProductRecipeId() |
| | | short CJobDataS::getDeviceRecipeId(int nDeviceIndex) const |
| | | { |
| | | return m_strProductRecipeId; |
| | | if (nDeviceIndex < 0 || nDeviceIndex >= DEVICE_COUNT) { |
| | | return 0; |
| | | } |
| | | |
| | | return m_nRecipeIds[nDeviceIndex]; |
| | | } |
| | | |
| | | void CJobDataS::setProductRecipeId(const char* pszId) |
| | | void CJobDataS::setDeviceRecipeId(int nDeviceIndex, short nRecipeId) |
| | | { |
| | | m_strProductRecipeId = pszId; |
| | | if (nDeviceIndex < 0 || nDeviceIndex >= DEVICE_COUNT) { |
| | | return; |
| | | } |
| | | |
| | | m_nRecipeIds[nDeviceIndex] = nRecipeId; |
| | | } |
| | | |
| | | std::string& CJobDataS::getPCode() |
| | | { |
| | | return m_strPCode; |
| | | const short* CJobDataS::getRecipeIds() const |
| | | { |
| | | return m_nRecipeIds; |
| | | } |
| | | |
| | | void CJobDataS::setPCode(const char* pszCode) |
| | | void CJobDataS::setRecipeIds(const short* pIds, int nCount) |
| | | { |
| | | m_strPCode = pszCode; |
| | | } |
| | | int nCopyCount = nCount > DEVICE_COUNT ? DEVICE_COUNT : nCount; |
| | | for (int i = 0; i < nCopyCount; ++i) { |
| | | m_nRecipeIds[i] = pIds[i]; |
| | | } |
| | | |
| | | std::string& CJobDataS::getUseType() |
| | | { |
| | | return m_strPCode; |
| | | } |
| | | |
| | | void CJobDataS::setUseType(const char* pszType) |
| | | { |
| | | m_strPCode = pszType; |
| | | // 如果 nCount < DEVICE_COUNT,可以选择补零 |
| | | for (int i = nCopyCount; i < DEVICE_COUNT; ++i) { |
| | | m_nRecipeIds[i] = 0; |
| | | } |
| | | } |
| | | |
| | | std::string& CJobDataS::getPanelMeasure() |
| | |
| | | void CJobDataS::setTargetSlotNo(int no) |
| | | { |
| | | m_nTargetSlotNo = no; |
| | | } |
| | | |
| | | short CJobDataS::getProductJudge() const |
| | | { |
| | | return m_nProductJudge; |
| | | } |
| | | |
| | | void CJobDataS::setProductJudge(short nProductJudge) |
| | | { |
| | | m_nProductJudge = nProductJudge; |
| | | } |
| | | |
| | | int CJobDataS::serialize(char* pszBuffer, int nBufferSize) |
| | |
| | | memcpy(&pszBuffer[index], &m_nMasterRecipe, sizeof(short)); |
| | | index += sizeof(short); |
| | | |
| | | strLen = min(10, (int)m_strProductRecipeId.size()); |
| | | memcpy(&pszBuffer[index], m_strProductRecipeId.c_str(), strLen); |
| | | index += 10; |
| | | |
| | | strLen = min(10, (int)m_strPCode.size()); |
| | | memcpy(&pszBuffer[index], m_strPCode.c_str(), strLen); |
| | | index += 10; |
| | | |
| | | strLen = min(10, (int)m_strUseType.size()); |
| | | memcpy(&pszBuffer[index], m_strUseType.c_str(), strLen); |
| | | index += 10; |
| | | for (int i = 0; i < DEVICE_COUNT; i++) { |
| | | memcpy(&pszBuffer[index], &m_nRecipeIds[i], sizeof(short)); |
| | | index += sizeof(short); |
| | | } |
| | | |
| | | strLen = min(80, (int)m_strPanelMeasure.size()); |
| | | memcpy(&pszBuffer[index], m_strPanelMeasure.c_str(), strLen); |
| | |
| | | index += sizeof(short); |
| | | |
| | | memcpy(&pszBuffer[index], &m_nTargetSlotNo, sizeof(short)); |
| | | index += sizeof(short); |
| | | |
| | | memcpy(&pszBuffer[index], &m_nProductJudge, sizeof(short)); |
| | | index += sizeof(short); |
| | | |
| | | return 256 * 2; |
| | |
| | | memcpy(&m_nMasterRecipe, &pszBuffer[index], sizeof(short)); |
| | | index += sizeof(short); |
| | | |
| | | CToolUnits::convertString(&pszBuffer[index], 10, m_strProductRecipeId); |
| | | index += 10; |
| | | for (int i = 0; i < DEVICE_COUNT; i++) { |
| | | memcpy(&m_nRecipeIds[i], &pszBuffer[index], sizeof(short)); |
| | | index += sizeof(short); |
| | | } |
| | | |
| | | CToolUnits::convertString(&pszBuffer[index], 10, m_strProductRecipeId); |
| | | index += 10; |
| | | |
| | | CToolUnits::convertString(&pszBuffer[index], 10, m_strProductRecipeId); |
| | | index += 10; |
| | | |
| | | CToolUnits::convertString(&pszBuffer[index], 80, m_strProductRecipeId); |
| | | CToolUnits::convertString(&pszBuffer[index], 80, m_strPanelMeasure); |
| | | index += 80; |
| | | |
| | | memcpy(&m_nMode, &pszBuffer[index], sizeof(short)); |
| | |
| | | memcpy(&m_nTargetSlotNo, &pszBuffer[index], sizeof(short)); |
| | | index += sizeof(short); |
| | | |
| | | memcpy(&m_nProductJudge, &pszBuffer[index], sizeof(short)); |
| | | index += sizeof(short); |
| | | |
| | | // 缓存原始数据 |
| | | if (m_pRawData != nullptr) { |
| | | memcpy(m_pRawData, pszBuffer, JOBDATAS_SIZE); |
| | | } |
| | | |
| | | |
| | | return JOBDATAS_SIZE; |
| | | } |
| | |
| | | attrubutes.addAttribute(new CAttribute("MasterRecipe", |
| | | std::to_string(getMasterRecipe()).c_str(), "", weight++)); |
| | | |
| | | attrubutes.addAttribute(new CAttribute("ProductRecipeId", |
| | | getProductRecipeId().c_str(), "", weight++)); |
| | | attrubutes.addAttribute(new CAttribute("Recipe ID(EFEM)", |
| | | std::to_string(getDeviceRecipeId(0)).c_str(), "", weight++)); |
| | | |
| | | attrubutes.addAttribute(new CAttribute("PCode", |
| | | getPCode().c_str(), "", weight++)); |
| | | attrubutes.addAttribute(new CAttribute("Recipe ID(BONDER1)", |
| | | std::to_string(getDeviceRecipeId(1)).c_str(), "", weight++)); |
| | | |
| | | attrubutes.addAttribute(new CAttribute("UseType", |
| | | getUseType().c_str(), "", weight++)); |
| | | attrubutes.addAttribute(new CAttribute("Recipe ID(BONDER2)", |
| | | std::to_string(getDeviceRecipeId(2)).c_str(), "", weight++)); |
| | | |
| | | attrubutes.addAttribute(new CAttribute("Recipe ID(Bake Cooling)", |
| | | std::to_string(getDeviceRecipeId(3)).c_str(), "", weight++)); |
| | | |
| | | attrubutes.addAttribute(new CAttribute("Recipe ID(Vacuum Bake)", |
| | | std::to_string(getDeviceRecipeId(4)).c_str(), "", weight++)); |
| | | |
| | | attrubutes.addAttribute(new CAttribute("Recipe ID(Measurement)", |
| | | std::to_string(getDeviceRecipeId(5)).c_str(), "", weight++)); |
| | | |
| | | attrubutes.addAttribute(new CAttribute("PanelMeasure", |
| | | getPanelMeasure().c_str(), "", weight++)); |
| | |
| | | |
| | | attrubutes.addAttribute(new CAttribute("TargetSlotNo", |
| | | std::to_string(getTargetSlotNo()).c_str(), "", weight++)); |
| | | |
| | | attrubutes.addAttribute(new CAttribute("ProductJudge", |
| | | std::to_string(getProductJudge()).c_str(), "", weight++)); |
| | | } |
| | | } |