darker
2025-02-18 1f5df45b8e213de70e91a7ca54d6e2219cd967ca
SourceCode/Bond/Servo/ServoDlg.cpp
@@ -144,6 +144,21 @@
               ShowTerminalText(pszText);
            }
         }
         else if (RX_CODE_EQ_ALIVE == code) {
            // 通知设备状态
            SERVO::CEquipment* pEquipment = nullptr;
            if (pAny->getPtrValue("ptr", (void*&)pEquipment)) {
               if (pEquipment != nullptr) {
                  int nID = pEquipment->getID();
                  BOOL bAlive = pEquipment->isAlive();
                  if (1 == nID) {
                     DeviceStatus status = bAlive ? DeviceStatus::ONLINE : DeviceStatus::OFFLINE;
                     UpdateDeviceStatus(INDICATE_ROBOT_ARM1, status);
                     UpdateDeviceStatus(INDICATE_ROBOT_ARM2, status);
                  }
               }
            }
         }
         pAny->release();
      }, [&]() -> void {
         // onComplete
@@ -290,8 +305,15 @@
   SetTimer(TIMER_ID_CREATE_TERMINAL, 3000, nullptr);
   InitRxWindows();
   OnBnClickedButtonLog();
   UpdateLogBtn();
   Resize();
   // 相当于延时调用master的初始化
   theApp.m_model.m_master.init();
   return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
}
@@ -645,6 +667,38 @@
   Invalidate();
}
void CServoDlg::UpdateDeviceStatus(int id, DeviceStatus status)
{
   // 根据状态设置颜色
   COLORREF newBackgroundColor;
   COLORREF newFrameColor1;
   COLORREF newFrameColor2;
   switch (status) {
   case ONLINE:
      newBackgroundColor = RGB(255, 0, 0);
      newFrameColor1 = RGB(22, 22, 22);
      newFrameColor2 = RGB(255, 127, 39);
      break;
   case OFFLINE:
      newBackgroundColor = RGB(0, 255, 0);
      newFrameColor1 = RGB(22, 22, 22);
      newFrameColor2 = RGB(255, 127, 39);
      break;
   default:
      newBackgroundColor = RGB(255, 255, 255); // 默认白色背景
      newFrameColor1 = RGB(0, 0, 0);           // 默认黑色框架1
      newFrameColor2 = RGB(0, 0, 0);           // 默认黑色框架2
      break;
   }
   m_pGraph->UpdateIndicateBox1Colors(id, newBackgroundColor, newFrameColor1, newFrameColor2);
   // 刷新界面
   Invalidate();
   UpdateWindow();
}
void CServoDlg::OnSize(UINT nType, int cx, int cy)
{
   CDialogEx::OnSize(nType, cx, cy);