| | |
| | | // 加入Pin初始化代码 |
| | | LOGI("<CLoadPort>initPins"); |
| | | addPin(SERVO::PinType::INPUT, _T("In")); |
| | | addPin(SERVO::PinType::OUTPUT, _T("Out")); |
| | | addPin(SERVO::PinType::OUTPUT, _T("Out1")); |
| | | addPin(SERVO::PinType::OUTPUT, _T("Out2")); |
| | | } |
| | | |
| | | void CLoadPort::onTimer(UINT nTimerid) |
| | |
| | | void CLoadPort::getAttributeVector(CAttributeVector& attrubutes) |
| | | { |
| | | __super::getAttributeVector(attrubutes); |
| | | |
| | | for (auto item : m_inputPins) { |
| | | attrubutes.addAttribute(new CAttribute(item->getName().c_str(), |
| | | std::to_string((int)item->getType()).c_str(), "")); |
| | | } |
| | | |
| | | for (auto item : m_outputPins) { |
| | | attrubutes.addAttribute(new CAttribute(item->getName().c_str(), |
| | | std::to_string((int)item->getType()).c_str(), "")); |
| | | } |
| | | |
| | | for (auto item : m_panelList) { |
| | | attrubutes.addAttribute(new CAttribute("Panel", |
| | | item->getID().c_str(), "")); |
| | | } |
| | | } |
| | | |
| | | void CLoadPort::outputPanel() |
| | | int CLoadPort::recvIntent(CPin* pPin, CIntent* pIntent) |
| | | { |
| | | CPin* pOutPin = getPin("Out"); |
| | | return __super::recvIntent(pPin, pIntent); |
| | | } |
| | | |
| | | |
| | | int CLoadPort::outputGlass(int port) |
| | | { |
| | | // 如果列表中没有Panel,模拟生成10张 |
| | | if (m_panelList.empty()) { |
| | | static int ii = 0; |
| | |
| | | } |
| | | } |
| | | |
| | | |
| | | // 模拟取出第一张Panel,传送到下一环节 |
| | | Lock(); |
| | | CPanel* pContext = m_panelList.front(); |
| | | pContext->addRef(); |
| | | |
| | | CIntent intent(FLOW_MOVE_MATERIAL, "", pContext); |
| | | int nRet = pOutPin->sendIntent(&intent); |
| | | if (nRet == FLOW_REJECT) { |
| | | AfxMessageBox("对方拒绝接受"); |
| | | } |
| | | else if (nRet == FLOW_ACCEPT) { |
| | | m_panelList.pop_front(); |
| | | pContext->release(); // 添加到列队时addRef, 取出时release |
| | | } |
| | | |
| | | pContext->release(); |
| | | Unlock(); |
| | | return __super::outputGlass(port); |
| | | } |
| | | } |