#include "stdafx.h" #include "CArm.h" namespace SERVO { CArm::CArm() : CEquipment() { } CArm::~CArm() { } const char* CArm::getClassName() { static char* pszName = "CArm"; return pszName; } void CArm::init() { CEquipment::init(); } void CArm::term() { CEquipment::term(); } // ±ØÐëҪʵÏÖµÄÐ麯Êý£¬Ôڴ˳õʼ»¯PinÁбí void CArm::initPins() { } // ±ØÐëҪʵÏÖµÄÐ麯Êý£¬Ôڴ˳õʼ»¯SlotÐÅÏ¢ void CArm::initSlots() { m_slot[0].enable(); m_slot[0].setPosition(m_nID); m_slot[0].setNo(1); m_slot[0].setName("Slot 1(Temp)"); } void CArm::onTimer(UINT nTimerid) { CEquipment::onTimer(nTimerid); } void CArm::serialize(CArchive& ar) { CEquipment::serialize(ar); } void CArm::getAttributeVector(CAttributeVector& attrubutes) { __super::getAttributeVector(attrubutes); } int CArm::recvIntent(CPin* pPin, CIntent* pIntent) { return __super::recvIntent(pPin, pIntent); } int CArm::tempStore(CGlass* pGlass) { // Ô­£º±£Ö¤ÁбíÖÐÖ»´æ´¢Ò»¸öÎïÁÏ // ÐÞ¸ÄΪ£ºÏÈÇå¿Õ֮ǰµÄ£¬ÔÙÌí¼Óµ±Ç°pGlass Lock(); CGlass* pPreviousGlass; pPreviousGlass = (CGlass*)m_slot[0].getContext(); if (pPreviousGlass != nullptr) { pPreviousGlass->release(); } m_slot[0].setContext(pGlass); Unlock(); if (m_listener.onDataChanged != nullptr) { m_listener.onDataChanged(this, 0); } return 0; } int CArm::tempFetchOut(OUT CGlass*& pGlass) { Lock(); CGlass* pPreviousGlass = (CGlass*)m_slot[0].getContext(); if (pPreviousGlass == nullptr) { Unlock(); return -1; } pGlass = pPreviousGlass; pGlass->addRef(); m_slot[0].setContext(nullptr); Unlock(); if (m_listener.onDataChanged != nullptr) { m_listener.onDataChanged(this, 0); } return 0; } int CArm::glassUpdateJobDataS(CJobDataS* pJobDataS) { ASSERT(pJobDataS); Lock(); CGlass* pGlass = (CGlass*)m_slot[0].getContext(); if (pGlass == nullptr) { Unlock(); LOGE("glassUpdateJobDataSʧ°Ü£¬ÕÒ²»µ½¶ÔÓ¦µÄGlass"); return -1; } CJobDataS* pSrcJs = pGlass->getJobDataS(); if (pSrcJs->getCassetteSequenceNo() != pJobDataS->getCassetteSequenceNo() || pSrcJs->getJobSequenceNo() != pJobDataS->getJobSequenceNo()) { Unlock(); LOGE("glassUpdateJobDataSʧ°Ü£¬CassetteNo²»Æ¥Åä([%d,%d] != [%d,%d])", pSrcJs->getCassetteSequenceNo(), pJobDataS->getCassetteSequenceNo(), pSrcJs->getJobSequenceNo(), pJobDataS->getJobSequenceNo()); return -2; } pGlass->updateJobDataS(pJobDataS); Unlock(); return 0; } }