From 829fe6c6bc33d53fda9c31fd45a37e1df87befff Mon Sep 17 00:00:00 2001
From: mrDarker <mr.darker@163.com>
Date: 星期五, 30 一月 2026 11:16:24 +0800
Subject: [PATCH] Merge branch 'clh' into liuyang

---
 SourceCode/Bond/Servo/ServoDlg.cpp |   80 +++++++++++++++++++++++++++++++++-------
 1 files changed, 66 insertions(+), 14 deletions(-)

diff --git a/SourceCode/Bond/Servo/ServoDlg.cpp b/SourceCode/Bond/Servo/ServoDlg.cpp
index f8a74b8..8bd8ca8 100644
--- a/SourceCode/Bond/Servo/ServoDlg.cpp
+++ b/SourceCode/Bond/Servo/ServoDlg.cpp
@@ -140,12 +140,20 @@
 	ON_UPDATE_COMMAND_UI(ID_MENU_FILE_SECSTEST, &CServoDlg::OnUpdateMenuFileSecsTest)
 	ON_COMMAND(ID_MENU_PROJECT_VARIABLE_LIST, &CServoDlg::OnMenuProjectVarialbleList)
 	ON_UPDATE_COMMAND_UI(ID_MENU_PROJECT_VARIABLE_LIST, &CServoDlg::OnUpdateMenuProjectVarialbleList)
+	ON_COMMAND(ID_MENU_TEST_ALARM_ON, &CServoDlg::OnMenuTestAlarmOn)
+	ON_UPDATE_COMMAND_UI(ID_MENU_TEST_ALARM_ON, &CServoDlg::OnUpdateMenuTestAlarmOn)
+	ON_COMMAND(ID_MENU_TEST_ALARM_OFF, &CServoDlg::OnMenuTestAlarmOff)
+	ON_UPDATE_COMMAND_UI(ID_MENU_TEST_ALARM_OFF, &CServoDlg::OnUpdateMenuTestAlarmOff)
 	ON_COMMAND(ID_MENU_TEST_MESSAGE_SET, &CServoDlg::OnMenuTestMessageSet)
 	ON_UPDATE_COMMAND_UI(ID_MENU_TEST_MESSAGE_SET, &CServoDlg::OnUpdateMenuTestMessageSet)
 	ON_COMMAND(ID_MENU_TEST_MESSAGE_CLEAR, &CServoDlg::OnMenuTestMessageClear)
 	ON_UPDATE_COMMAND_UI(ID_MENU_TEST_MESSAGE_CLEAR, &CServoDlg::OnUpdateMenuTestMessageClear)
 	ON_COMMAND(ID_MENU_TOOLS_CLIENT_LIST, &CServoDlg::OnMenuToolsClientList)
 	ON_UPDATE_COMMAND_UI(ID_MENU_TOOLS_CLIENT_LIST, &CServoDlg::OnUpdateMenuToolsClientList)
+	ON_COMMAND(ID_MENU_TOOLS_CURVE_EMPTY, &CServoDlg::OnMenuToolsCurveEmptyMode)
+	ON_UPDATE_COMMAND_UI(ID_MENU_TOOLS_CURVE_EMPTY, &CServoDlg::OnUpdateMenuToolsCurveEmptyMode)
+	ON_COMMAND(ID_MENU_TOOLS_CURVE_PRODUCTION, &CServoDlg::OnMenuToolsCurveProductionMode)
+	ON_UPDATE_COMMAND_UI(ID_MENU_TOOLS_CURVE_PRODUCTION, &CServoDlg::OnUpdateMenuToolsCurveProductionMode)
 	ON_COMMAND(ID_MENU_WND_TEST_PANEL, &CServoDlg::OnMenuWndTestPanel)
 	ON_UPDATE_COMMAND_UI(ID_MENU_WND_TEST_PANEL, &CServoDlg::OnUpdateMenuWndTestPanel)
 	ON_COMMAND(ID_MENU_WND_PRO_PANEL, &CServoDlg::OnMenuWndProPanel)
@@ -187,7 +195,7 @@
 					ASSERT(m_pPanelAttributes);
 					m_pPanelEquipment->loadDataFromEquipment(pEquipment);
 					m_pPanelAttributes->ShowWindow(SW_HIDE);
-					if (!m_pPanelEquipment->IsWindowVisible()) {
+					if (!m_pPanelEquipment->IsWindowVisible() && m_nLeftPanelType == 1) {
 						m_pPanelEquipment->ShowWindow(SW_SHOW);
 						Resize();
 					}
@@ -276,7 +284,7 @@
 					text = _T("ControlJob: None");
 				}
 				if (m_pMyStatusbar != nullptr) {
-					m_pMyStatusbar->setRunTimeText((LPTSTR)(LPCTSTR)text);
+					m_pMyStatusbar->setJobText((LPTSTR)(LPCTSTR)text);
 					if (cj != nullptr && cj->state() == SERVO::CJState::Paused) {
 						m_pMyStatusbar->setBackgroundColor(STATUSBAR_BK_ALARM);
 						m_pMyStatusbar->setForegroundColor(RGB(0, 0, 0));
@@ -411,6 +419,12 @@
 		}
 		pBtn->EnableWindow(TRUE);
 	}
+}
+
+void CServoDlg::AckAlarm(int alarmId)
+{
+	m_ackAlarms.insert(alarmId);
+	RefreshAlarmBadge();
 }
 
 void CServoDlg::RaiseTestAlarm()
@@ -582,6 +596,7 @@
 	m_pMyStatusbar = new CMyStatusbar();
 	m_pMyStatusbar->Create(IDD_STATUSBAR, this);
 	m_pMyStatusbar->ShowWindow(SW_SHOW);
+	m_pMyStatusbar->setJobText("ControlJob: None");
 	LOGI("[BOOT][UI] statusbar created, elapsed=%llu ms", (unsigned long long)(GetTickCount64() - boot_ui_begin));
 
 
@@ -615,6 +630,13 @@
 			(unsigned long long)(GetTickCount64() - boot_master_begin),
 			(unsigned long long)(GetTickCount64() - boot_ui_begin));
 		theApp.m_model.loadPortParams();
+	}
+
+	// 杩樺師鐘舵�佹爮杩愯鏃堕棿鏄剧ず锛堥伩鍏嶄竴鐩村仠鐣欏湪鈥滄鍦ㄥ姞杞藉巻鍙茬紦瀛�...鈥濓級
+	if (m_pMyStatusbar != nullptr) {
+		CString strText;
+		GetRuntimeFormatText(strText, "");
+		m_pMyStatusbar->setRunTimeText((LPTSTR)(LPCTSTR)strText);
 	}
 
 
@@ -815,6 +837,26 @@
 	pCmdUI->Enable(TRUE);
 }
 
+void CServoDlg::OnMenuTestAlarmOn()
+{
+	RaiseTestAlarm();
+}
+
+void CServoDlg::OnUpdateMenuTestAlarmOn(CCmdUI* pCmdUI)
+{
+	pCmdUI->Enable(TRUE);
+}
+
+void CServoDlg::OnMenuTestAlarmOff()
+{
+	ClearTestAlarm();
+}
+
+void CServoDlg::OnUpdateMenuTestAlarmOff(CCmdUI* pCmdUI)
+{
+	pCmdUI->Enable(TRUE);
+}
+
 void CServoDlg::OnMenuTestMessageSet()
 {
 	SERVO::CEquipment* pEquipment = m_pPanelMaster->GetActiveEquipment();
@@ -852,6 +894,28 @@
 void CServoDlg::OnUpdateMenuToolsClientList(CCmdUI* pCmdUI)
 {
 	pCmdUI->Enable(TRUE);
+}
+
+void CServoDlg::OnMenuToolsCurveEmptyMode()
+{
+	theApp.m_model.getMaster().setCurveMode(SERVO::CurveMode::EmptyChamber);
+}
+
+void CServoDlg::OnUpdateMenuToolsCurveEmptyMode(CCmdUI* pCmdUI)
+{
+	pCmdUI->Enable(TRUE);
+	pCmdUI->SetCheck(theApp.m_model.getMaster().getCurveMode() == SERVO::CurveMode::EmptyChamber);
+}
+
+void CServoDlg::OnMenuToolsCurveProductionMode()
+{
+	theApp.m_model.getMaster().setCurveMode(SERVO::CurveMode::Production);
+}
+
+void CServoDlg::OnUpdateMenuToolsCurveProductionMode(CCmdUI* pCmdUI)
+{
+	pCmdUI->Enable(TRUE);
+	pCmdUI->SetCheck(theApp.m_model.getMaster().getCurveMode() == SERVO::CurveMode::Production);
 }
 
 void CServoDlg::OnMenuWndTestPanel()
@@ -1464,18 +1528,6 @@
 
 BOOL CServoDlg::PreTranslateMessage(MSG* pMsg)
 {
-	if (pMsg->message == WM_KEYDOWN) {
-		const bool ctrl = (GetKeyState(VK_CONTROL) & 0x8000) != 0;
-		const bool alt = (GetKeyState(VK_MENU) & 0x8000) != 0;
-		if (ctrl && alt && pMsg->wParam == 'T') {
-			RaiseTestAlarm();
-			return TRUE;
-		}
-		if (ctrl && alt && pMsg->wParam == 'Y') {
-			ClearTestAlarm();
-			return TRUE;
-		}
-	}
 	return CDialogEx::PreTranslateMessage(pMsg);
 }
 

--
Gitblit v1.9.3