| | |
| | | |
| | | CMaster::CMaster() |
| | | { |
| | | m_listener = {nullptr, nullptr}; |
| | | m_listener = {nullptr, nullptr, nullptr}; |
| | | } |
| | | |
| | | CMaster::~CMaster() |
| | |
| | | { |
| | | m_listener.onEqAlive = listener.onEqAlive; |
| | | m_listener.onEqCimStateChanged = listener.onEqCimStateChanged; |
| | | m_listener.onEqStepEvent = listener.onEqStepEvent; |
| | | } |
| | | |
| | | int CMaster::init() |
| | |
| | | LOGI("<Master>正在初始化..."); |
| | | |
| | | |
| | | StepListener listener; |
| | | listener.onEvent = [&](void* pStep, int code, void* pData) -> void { |
| | | TRACE("<CEquipment>onEvent<%d, 0x%x>.\n", code, pData); |
| | | if (m_listener.onEqStepEvent != nullptr) { |
| | | m_listener.onEqStepEvent((CStep*)pStep, code, pData); |
| | | } |
| | | }; |
| | | |
| | | |
| | | // cclink |
| | | if (m_cclink.Connect(CC_LINK_IE_CONTROL_CHANNEL(1)) != 0) { |
| | | LOGE("连接CC-Link失败."); |
| | | return -1; |
| | | } |
| | | else { |
| | | LOGI("连接CC-Link成功."); |
| | |
| | | |
| | | |
| | | // 初始化添加各子设备 |
| | | { |
| | | CEFEM* pEquipment = new CEFEM(); |
| | | pEquipment->setID(EQ_ID_EFEM); |
| | | pEquipment->setName("EFEM(ROBOT)"); |
| | | pEquipment->setDescription("EFEM(ROBOT)."); |
| | | pEquipment->setReadBitBlock(0x4000, 0x45ff); |
| | | pEquipment->setStation(1, 2); |
| | | addEquipment(pEquipment); |
| | | LOGE("已添加“EFEM(ROBOT)”."); |
| | | } |
| | | addEFEM(listener); |
| | | |
| | | /* |
| | | { |
| | | CBonder* pBonder = new CBonder(); |
| | |
| | | |
| | | int CMaster::term() |
| | | { |
| | | LOGI("<Master>正在结束程序."); |
| | | for (auto item : m_listEquipment) { |
| | | item->term(); |
| | | } |
| | | |
| | | return 0; |
| | | } |
| | | |
| | |
| | | } |
| | | }; |
| | | pEquipment->setListener(listener); |
| | | pEquipment->setCcLink(&m_cclink); |
| | | m_listEquipment.push_back(pEquipment); |
| | | |
| | | return 0; |
| | | } |
| | | |
| | | std::list<CEquipment*>& CMaster::getEquipmentList() |
| | | { |
| | | return m_listEquipment; |
| | | } |
| | | |
| | | CEquipment* CMaster::getEquipment(int id) |
| | |
| | | } |
| | | |
| | | return nullptr; |
| | | } |
| | | |
| | | int CMaster::addEFEM(StepListener& listener) |
| | | { |
| | | CEFEM* pEquipment = new CEFEM(); |
| | | pEquipment->setID(EQ_ID_EFEM); |
| | | pEquipment->setBaseAlarmId(BASE_ALARM_EFEM); |
| | | pEquipment->setName("EFEM(ROBOT)"); |
| | | pEquipment->setDescription("EFEM(ROBOT)."); |
| | | pEquipment->setReadBitBlock(0x4000, 0x45ff); |
| | | pEquipment->setStation(0, 255); |
| | | addEquipment(pEquipment); |
| | | |
| | | |
| | | // 添加 step |
| | | { |
| | | CEqModeStep* pStep = new CEqModeStep(); |
| | | pStep->setName(STEP_MODE); |
| | | pStep->setListener(listener); |
| | | pStep->setWriteSignalDev(0x30); |
| | | pStep->setModeDev(0x4a8c); |
| | | if (pEquipment->addStep(0x360, pStep) != 0) { |
| | | delete pStep; |
| | | } |
| | | } |
| | | { |
| | | CEqStatusStep* pStep = new CEqStatusStep(); |
| | | pStep->setName(STEP_STATUS); |
| | | pStep->setListener(listener); |
| | | pStep->setWriteSignalDev(0x31); |
| | | pStep->setStatusDev(0x4a68); |
| | | if (pEquipment->addStep(0x361, pStep) != 0) { |
| | | delete pStep; |
| | | } |
| | | } |
| | | { |
| | | CEqAlarmStep* pStep = new CEqAlarmStep(); |
| | | pStep->setName(STEP_ALARM_BLOCK1); |
| | | pStep->setListener(listener); |
| | | pStep->setWriteSignalDev(0x32); |
| | | pStep->setAlarmDev(0x4c1d); |
| | | if (pEquipment->addStep(0x362, pStep) != 0) { |
| | | delete pStep; |
| | | } |
| | | } |
| | | { |
| | | CEqAlarmStep* pStep = new CEqAlarmStep(); |
| | | pStep->setName(STEP_ALARM_BLOCK2); |
| | | pStep->setListener(listener); |
| | | pStep->setWriteSignalDev(0x33); |
| | | pStep->setAlarmDev(0x4c4a); |
| | | if (pEquipment->addStep(0x363, pStep) != 0) { |
| | | delete pStep; |
| | | } |
| | | } |
| | | { |
| | | CEqAlarmStep* pStep = new CEqAlarmStep(); |
| | | pStep->setName(STEP_ALARM_BLOCK3); |
| | | pStep->setListener(listener); |
| | | pStep->setWriteSignalDev(0x34); |
| | | pStep->setAlarmDev(0x4c77); |
| | | if (pEquipment->addStep(0x364, pStep) != 0) { |
| | | delete pStep; |
| | | } |
| | | } |
| | | { |
| | | CEqAlarmStep* pStep = new CEqAlarmStep(); |
| | | pStep->setName(STEP_ALARM_BLOCK4); |
| | | pStep->setListener(listener); |
| | | pStep->setWriteSignalDev(0x35); |
| | | pStep->setAlarmDev(0x4ca4); |
| | | if (pEquipment->addStep(0x365, pStep) != 0) { |
| | | delete pStep; |
| | | } |
| | | } |
| | | { |
| | | CEqAlarmStep* pStep = new CEqAlarmStep(); |
| | | pStep->setName(STEP_ALARM_BLOCK5); |
| | | pStep->setListener(listener); |
| | | pStep->setWriteSignalDev(0x36); |
| | | pStep->setAlarmDev(0x4cd1); |
| | | if (pEquipment->addStep(0x366, pStep) != 0) { |
| | | delete pStep; |
| | | } |
| | | } |
| | | { |
| | | CEqProcessStep* pStep = new CEqProcessStep(); |
| | | pStep->setName(STEP_PROCESS); |
| | | pStep->setListener(listener); |
| | | pStep->setWriteSignalDev(0x37); |
| | | pStep->setProcessDev(0x1864); |
| | | if (pEquipment->addStep(0x367, pStep) != 0) { |
| | | delete pStep; |
| | | } |
| | | } |
| | | { |
| | | CEqCimModeChangeStep* pStep = new CEqCimModeChangeStep(); |
| | | pStep->setName(STEP_CIM_MODE_CHANGE); |
| | | pStep->setListener(listener); |
| | | pStep->setWriteSignalDev(0x50); |
| | | pStep->setCimModeDev(0x15); |
| | | if (pEquipment->addStep(0x350, pStep) != 0) { |
| | | delete pStep; |
| | | } |
| | | } |
| | | { |
| | | CEqCimMessageCmdStep* pStep = new CEqCimMessageCmdStep(); |
| | | pStep->setName(STEP_CIM_MESSAGE_CMD); |
| | | pStep->setListener(listener); |
| | | pStep->setWriteSignalDev(0x51); |
| | | pStep->setCimMessageDev(0x0); |
| | | if (pEquipment->addStep(0x351, pStep) != 0) { |
| | | delete pStep; |
| | | } |
| | | } |
| | | { |
| | | CEqCimMessageClearStep* pStep = new CEqCimMessageClearStep(); |
| | | pStep->setName(STEP_CIM_MESSAGE_CLEAR); |
| | | pStep->setListener(listener); |
| | | pStep->setWriteSignalDev(0x52); |
| | | pStep->setClearCimMessageDev(0x13); |
| | | if (pEquipment->addStep(0x352, pStep) != 0) { |
| | | delete pStep; |
| | | } |
| | | } |
| | | { |
| | | CEqDateTimeSetCmdStep* pStep = new CEqDateTimeSetCmdStep(); |
| | | pStep->setName(STEP_DATETIME_SET_CMD); |
| | | pStep->setListener(listener); |
| | | pStep->setWriteSignalDev(0x53); |
| | | pStep->setDateTimeDev(0x16); |
| | | if (pEquipment->addStep(0x353, pStep) != 0) { |
| | | delete pStep; |
| | | } |
| | | } |
| | | { |
| | | CEqVCREnableStep* pStep = new CEqVCREnableStep(); |
| | | pStep->setName(STEP_EQ_VCR_ENABLE); |
| | | pStep->setListener(listener); |
| | | pStep->setWriteSignalDev(0x54); |
| | | pStep->setEqVCRModeDev(0x1F); |
| | | if (pEquipment->addStep(0x354, pStep) != 0) { |
| | | delete pStep; |
| | | } |
| | | } |
| | | { |
| | | CEqModeChangeStep* pStep = new CEqModeChangeStep(); |
| | | pStep->setName(STEP_EQ_MODE_CHANGE); |
| | | pStep->setListener(listener); |
| | | pStep->setWriteSignalDev(0x55); |
| | | pStep->setEqModeDev(0x1E); |
| | | if (pEquipment->addStep(0x355, pStep) != 0) { |
| | | delete pStep; |
| | | } |
| | | } |
| | | |
| | | pEquipment->init(); |
| | | LOGE("已添加“EFEM(ROBOT)”."); |
| | | return 0; |
| | | } |
| | | |
| | | void CMaster::onTimer(UINT nTimerid) |
| | |
| | | const StationIdentifier& station = item->getStation(); |
| | | MemoryBlock& block = item->getReadBitBlock(); |
| | | |
| | | int nRet = m_cclink.ReadData2(station, (short)block.type, |
| | | int nRet = m_cclink.ReadData2(station, (DeviceType)block.type, |
| | | block.start, block.size, block.buffer); |
| | | if (0 == nRet) { |
| | | item->onReceiveLBData(block.buffer, block.size); |