| | |
| | | BOOL bAlive = pEquipment->isAlive(); |
| | | if (EQ_ID_EFEM == nID) { |
| | | DeviceStatus status = bAlive ? DeviceStatus::ONLINE : DeviceStatus::OFFLINE; |
| | | UpdateDeviceStatus(INDICATE_FLIPER, status); |
| | | UpdateDeviceStatus(INDICATE_ALIGNER, status); |
| | | UpdateDeviceStatus(INDICATE_LPORT1, status); |
| | | UpdateDeviceStatus(INDICATE_LPORT2, status); |
| | | UpdateDeviceStatus(INDICATE_LPORT3, status); |
| | | UpdateDeviceStatus(INDICATE_LPORT4, status); |
| | | UpdateDeviceStatus(INDICATE_ROBOT_ARM1, status); |
| | | UpdateDeviceStatus(INDICATE_ROBOT_ARM2, status); |
| | | } |
| | |
| | | else if (EQ_ID_Bonder2 == nID) { |
| | | DeviceStatus status = bAlive ? DeviceStatus::ONLINE : DeviceStatus::OFFLINE; |
| | | UpdateDeviceStatus(INDICATE_BONDER2, status); |
| | | } |
| | | else if (EQ_ID_VACUUMBAKE == nID) { |
| | | DeviceStatus status = bAlive ? DeviceStatus::ONLINE : DeviceStatus::OFFLINE; |
| | | UpdateDeviceStatus(INDICATE_VACUUM_BAKE, status); |
| | | } |
| | | else if (EQ_ID_BAKE_COOLING == nID) { |
| | | DeviceStatus status = bAlive ? DeviceStatus::ONLINE : DeviceStatus::OFFLINE; |
| | | UpdateDeviceStatus(INDICATE_BAKE_COOLING, status); |
| | | } |
| | | else if (EQ_ID_MEASUREMENT == nID) { |
| | | DeviceStatus status = bAlive ? DeviceStatus::ONLINE : DeviceStatus::OFFLINE; |
| | | UpdateDeviceStatus(INDICATE_MEASUREMENT, status); |
| | | } |
| | | } |
| | | } |
| | |
| | | BOOL CPageGraph1::OnInitDialog() |
| | | { |
| | | CDialogEx::OnInitDialog(); |
| | | InitRxWindows(); |
| | | SetTimer(1, 3000, nullptr); |
| | | |
| | | |
| | |
| | | m_pGraph->AddIndicateBox(INDICATE_MEASUREMENT, 737, 516, 48, RGB(22, 22, 22), |
| | | RGB(255, 127, 39), EQ_BOX_OFFLINE); |
| | | m_pGraph->SetBoxText(INDICATE_MEASUREMENT, "13", "Measurement"); |
| | | |
| | | |
| | | // 绑定数据 |
| | | { |
| | | SERVO::CEquipment* pEquipment = theApp.m_model.m_master.getEquipment(EQ_ID_EFEM); |
| | | m_pGraph->SetIndicateBoxData(INDICATE_ROBOT_ARM1, pEquipment); |
| | | } |
| | | |
| | | |
| | | return TRUE; // return TRUE unless you set the focus to a control |
| | |
| | | Invalidate(); |
| | | } |
| | | |
| | | void CPageGraph1::BindEquipmentToGraph() |
| | | { |
| | | struct EquipmentBindInfo |
| | | { |
| | | int nEquipmentID; |
| | | int nIndicateID; |
| | | }; |
| | | |
| | | static const EquipmentBindInfo EQUIPMENT_BIND_LIST[] = { |
| | | { EQ_ID_EFEM, INDICATE_ROBOT_ARM1 }, |
| | | { EQ_ID_EFEM, INDICATE_ROBOT_ARM2 }, |
| | | { EQ_ID_Bonder1, INDICATE_BONDER1 }, |
| | | { EQ_ID_Bonder2, INDICATE_BONDER2 }, |
| | | { EQ_ID_LOADPORT1, INDICATE_LPORT1 }, |
| | | { EQ_ID_LOADPORT2, INDICATE_LPORT2 }, |
| | | { EQ_ID_LOADPORT3, INDICATE_LPORT3 }, |
| | | { EQ_ID_LOADPORT4, INDICATE_LPORT4 }, |
| | | { EQ_ID_FLIPER, INDICATE_FLIPER }, |
| | | { EQ_ID_VACUUMBAKE, INDICATE_VACUUM_BAKE }, |
| | | { EQ_ID_ALIGNER, INDICATE_ALIGNER }, |
| | | { EQ_ID_BAKE_COOLING, INDICATE_BAKE_COOLING } |
| | | }; |
| | | |
| | | for (const auto& stBindInfo : EQUIPMENT_BIND_LIST) |
| | | { |
| | | SERVO::CEquipment* pEquipment = theApp.m_model.m_master.getEquipment(stBindInfo.nEquipmentID); |
| | | m_pGraph->SetIndicateBoxData(stBindInfo.nIndicateID, pEquipment); |
| | | } |
| | | } |
| | | |
| | | void CPageGraph1::OnGraphItemClicked(NMHDR* pNMHDR, LRESULT* pResult) |
| | | { |
| | | BYSERVOGRAPH_NMHDR* pGraphNmhdr = reinterpret_cast<BYSERVOGRAPH_NMHDR*>(pNMHDR); |
| | | CString s; s.Format(_T("OnGraphItemClicked %d"), pGraphNmhdr->dwData); |
| | | SERVO::CEquipment* pEquipment = (SERVO::CEquipment*)m_pGraph->GetIndicateBoxData(pGraphNmhdr->dwData); |
| | | if (pEquipment != nullptr) { |
| | | AfxMessageBox(pEquipment->getName().c_str()); |
| | | theApp.m_model.notifyPtr(RX_CODE_SELECT_EQUIPMENT, pEquipment); |
| | | } |
| | | |
| | | |
| | | *pResult = 0; |
| | | } |
| | |
| | | { |
| | | if (1 == nIDEvent) { |
| | | KillTimer(1); |
| | | InitRxWindows(); |
| | | |
| | | // 更新状态 |
| | | { |