From 6fc65c5cf54432d1044fbe9799aca76f7273798c Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期五, 23 五月 2025 18:02:27 +0800
Subject: [PATCH] Merge branch 'clh'

---
 SourceCode/Bond/Servo/CPagePortProperty.cpp |  274 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 271 insertions(+), 3 deletions(-)

diff --git a/SourceCode/Bond/Servo/CPagePortProperty.cpp b/SourceCode/Bond/Servo/CPagePortProperty.cpp
index 88728b5..b163d01 100644
--- a/SourceCode/Bond/Servo/CPagePortProperty.cpp
+++ b/SourceCode/Bond/Servo/CPagePortProperty.cpp
@@ -5,6 +5,8 @@
 #include "Servo.h"
 #include "CPagePortProperty.h"
 #include "afxdialogex.h"
+#include "Log.h"
+#include "MsgDlg.h"
 
 
 // CPagePortProperty 瀵硅瘽妗�
@@ -32,6 +34,11 @@
 	ON_WM_DESTROY()
 	ON_WM_SIZE()
 	ON_BN_CLICKED(IDC_CHECK_ENABLE, &CPagePortProperty::OnBnClickedCheckEnable)
+	ON_CBN_SELCHANGE(IDC_COMBO_PORT_TYPE, &CPagePortProperty::OnCbnSelchangeComboPortType)
+	ON_CBN_SELCHANGE(IDC_COMBO_PORT_MODE, &CPagePortProperty::OnCbnSelchangeComboPortMode)
+	ON_CBN_SELCHANGE(IDC_COMBO_PORT_CASSERT_TYPE, &CPagePortProperty::OnCbnSelchangeComboPortCassertType)
+	ON_CBN_SELCHANGE(IDC_COMBO_PORT_TRANSFER_MODE, &CPagePortProperty::OnCbnSelchangeComboPortTransferMode)
+	ON_BN_CLICKED(IDC_CHECK_AUTO_CHANGE, &CPagePortProperty::OnBnClickedCheckAutoChange)
 END_MESSAGE_MAP()
 
 
@@ -61,12 +68,12 @@
 	}
 
 	pComboBox = (CComboBox*)GetDlgItem(IDC_COMBO_PORT_MODE);
-	for (int i = 1; i <= 3; i++) {
+	for (int i = 0; i <= 5; i++) {
 		pComboBox->InsertString(i - 1, SERVO::CLoadPort::getPortModeDescription(i, strTemp).c_str());
 	}
 	int portMode = m_pPort->getPortMode();
-	if (1 <= portMode && portMode <= 3) {
-		pComboBox->SetCurSel(portMode - 1);
+	if (0 <= portMode && portMode <= 5) {
+		pComboBox->SetCurSel(portMode);
 	}
 
 	pComboBox = (CComboBox*)GetDlgItem(IDC_COMBO_PORT_CASSERT_TYPE);
@@ -127,6 +134,266 @@
 {
 	BOOL bCheck = ((CButton*)GetDlgItem(IDC_CHECK_ENABLE))->GetCheck() == BST_CHECKED;
 	EnableCtrls(bCheck);
+
+
+	// enable port
+	CMsgDlg msgDlg("璇风瓑寰�", "姝e湪鎿嶄綔锛岃绛夊緟...");
+
+	ASSERT(m_pPort != nullptr);
+	m_pPort->eablePort(bCheck, [&](int code) -> int {
+		Sleep(100);
+		CString strMsg;
+
+		if (code == WOK) {
+			LOGI("%s Port 鎴愬姛.", bCheck ? _T("enable") : _T("disable"));
+
+			msgDlg.DelayClose(3000);
+			strMsg.Format(_T("%s Port 鎴愬姛."), bCheck ? _T("enable") : _T("disable"));
+			msgDlg.DelayClose(3000);
+			msgDlg.SetIcon(MSG_BOX_SUCCEED);
+			msgDlg.SetTitle(_T("鎿嶄綔鎴愬姛"));
+			msgDlg.SetMessage((LPTSTR)(LPCTSTR)strMsg);
+			msgDlg.SetMarquee(FALSE, 0);
+			msgDlg.SetCompleteCode(0);
+		}
+		else {
+			LOGI("%s Port 澶辫触锛宑ode:%d", bCheck ? _T("enable") : _T("disable"), code);
+
+			msgDlg.DelayClose(3000);
+			strMsg.Format(_T("%s Port 澶辫触锛宑ode:%d"), bCheck ? _T("enable") : _T("disable"), code);
+			msgDlg.DelayClose(3000);
+			msgDlg.SetIcon(MSG_BOX_ERROR);
+			msgDlg.SetTitle(_T("鎿嶄綔澶辫触"));
+			msgDlg.SetMessage((LPTSTR)(LPCTSTR)strMsg);
+			msgDlg.SetMarquee(FALSE, 0);
+			msgDlg.SetCompleteCode(-1);
+			
+			// 杩樺師鎺т欢鐘舵��
+			EnableCtrls(!bCheck);
+			((CButton*)GetDlgItem(IDC_CHECK_ENABLE))->SetCheck(!bCheck ? BST_CHECKED : BST_UNCHECKED);
+		}
+
+		return 0;
+		});
+
+	msgDlg.DoModal();
+}
+
+void CPagePortProperty::OnCbnSelchangeComboPortType()
+{
+	CMsgDlg msgDlg("璇风瓑寰�", "姝e湪鎿嶄綔锛岃绛夊緟...");
+	msgDlg.SetData((DWORD_PTR)this);
+
+	ASSERT(m_pPort != nullptr);
+	int index = ((CComboBox*)GetDlgItem(IDC_COMBO_PORT_TYPE))->GetCurSel();
+	m_pPort->setPortType(SERVO::PortType(index + 1), [&](int code) -> int {
+		Sleep(100);
+		CString strMsg;
+
+		if (code == WOK) {
+			LOGI("璁剧疆Port Type(%d)鎴愬姛.", index + 1);
+
+			msgDlg.DelayClose(3000);
+			strMsg.Format(_T("璁剧疆Port Type(%d)鎴愬姛"), index + 1);
+			msgDlg.DelayClose(3000);
+			msgDlg.SetIcon(MSG_BOX_SUCCEED);
+			msgDlg.SetTitle(_T("鎿嶄綔鎴愬姛"));
+			msgDlg.SetMessage((LPTSTR)(LPCTSTR)strMsg);
+			msgDlg.SetMarquee(FALSE, 0);
+			msgDlg.SetCompleteCode(0);
+		}
+		else {
+			LOGI("璁剧疆Port Type(%d)澶辫触锛宑ode:%d", index + 1, code);
+
+			msgDlg.DelayClose(3000);
+			strMsg.Format(_T("璁剧疆Port Type(%d)澶辫触锛宑ode:%d"), index + 1, code);
+			msgDlg.DelayClose(3000);
+			msgDlg.SetIcon(MSG_BOX_ERROR);
+			msgDlg.SetTitle(_T("鎿嶄綔澶辫触"));
+			msgDlg.SetMessage((LPTSTR)(LPCTSTR)strMsg);
+			msgDlg.SetMarquee(FALSE, 0);
+			msgDlg.SetCompleteCode(-1);
+		}
+
+		return 0;
+	});
+
+	msgDlg.DoModal();
+}
+
+void CPagePortProperty::OnCbnSelchangeComboPortMode()
+{
+	CMsgDlg msgDlg("璇风瓑寰�", "姝e湪鎿嶄綔锛岃绛夊緟...");
+	msgDlg.SetData((DWORD_PTR)this);
+
+	ASSERT(m_pPort != nullptr);
+	int index = ((CComboBox*)GetDlgItem(IDC_COMBO_PORT_MODE))->GetCurSel();
+	m_pPort->setPortMode(SERVO::PortMode(index), [&](int code) -> int {
+		Sleep(100);
+		CString strMsg;
+
+		if (code == WOK) {
+			LOGI("璁剧疆Port Mode(%d)鎴愬姛.", index);
+
+			msgDlg.DelayClose(3000);
+			strMsg.Format(_T("璁剧疆Port Mode(%d)鎴愬姛"), index);
+			msgDlg.DelayClose(3000);
+			msgDlg.SetIcon(MSG_BOX_SUCCEED);
+			msgDlg.SetTitle(_T("鎿嶄綔鎴愬姛"));
+			msgDlg.SetMessage((LPTSTR)(LPCTSTR)strMsg);
+			msgDlg.SetMarquee(FALSE, 0);
+			msgDlg.SetCompleteCode(0);
+		}
+		else {
+			LOGI("璁剧疆Port Mode(%d)澶辫触锛宑ode:%d", index, code);
+
+			msgDlg.DelayClose(3000);
+			strMsg.Format(_T("璁剧疆Port Mode(%d)澶辫触锛宑ode:%d"), index, code);
+			msgDlg.DelayClose(3000);
+			msgDlg.SetIcon(MSG_BOX_ERROR);
+			msgDlg.SetTitle(_T("鎿嶄綔澶辫触"));
+			msgDlg.SetMessage((LPTSTR)(LPCTSTR)strMsg);
+			msgDlg.SetMarquee(FALSE, 0);
+			msgDlg.SetCompleteCode(-1);
+		}
+
+		return 0;
+		});
+
+	msgDlg.DoModal();
+}
+
+void CPagePortProperty::OnCbnSelchangeComboPortCassertType()
+{
+	CMsgDlg msgDlg("璇风瓑寰�", "姝e湪鎿嶄綔锛岃绛夊緟...");
+	msgDlg.SetData((DWORD_PTR)this);
+
+	ASSERT(m_pPort != nullptr);
+	int index = ((CComboBox*)GetDlgItem(IDC_COMBO_PORT_CASSERT_TYPE))->GetCurSel();
+	m_pPort->setPortMode(SERVO::PortMode(index + 1), [&](int code) -> int {
+		Sleep(100);
+		CString strMsg;
+
+		if (code == WOK) {
+			LOGI("璁剧疆Cassette type(%d)鎴愬姛.", index + 1);
+
+			msgDlg.DelayClose(3000);
+			strMsg.Format(_T("璁剧疆Cassette type(%d)鎴愬姛"), index + 1);
+			msgDlg.DelayClose(3000);
+			msgDlg.SetIcon(MSG_BOX_SUCCEED);
+			msgDlg.SetTitle(_T("鎿嶄綔鎴愬姛"));
+			msgDlg.SetMessage((LPTSTR)(LPCTSTR)strMsg);
+			msgDlg.SetMarquee(FALSE, 0);
+			msgDlg.SetCompleteCode(0);
+		}
+		else {
+			LOGI("璁剧疆Cassette type(%d)澶辫触锛宑ode:%d", index + 1, code);
+
+			msgDlg.DelayClose(3000);
+			strMsg.Format(_T("璁剧疆Cassette type(%d)澶辫触锛宑ode:%d"), index + 1, code);
+			msgDlg.DelayClose(3000);
+			msgDlg.SetIcon(MSG_BOX_ERROR);
+			msgDlg.SetTitle(_T("鎿嶄綔澶辫触"));
+			msgDlg.SetMessage((LPTSTR)(LPCTSTR)strMsg);
+			msgDlg.SetMarquee(FALSE, 0);
+			msgDlg.SetCompleteCode(-1);
+		}
+
+		return 0;
+		});
+
+	msgDlg.DoModal();
+}
+
+void CPagePortProperty::OnCbnSelchangeComboPortTransferMode()
+{
+	// TODO: 鍦ㄦ娣诲姞鎺т欢閫氱煡澶勭悊绋嬪簭浠g爜
+	CMsgDlg msgDlg("璇风瓑寰�", "姝e湪鎿嶄綔锛岃绛夊緟...");
+	msgDlg.SetData((DWORD_PTR)this);
+
+	ASSERT(m_pPort != nullptr);
+	int index = ((CComboBox*)GetDlgItem(IDC_COMBO_PORT_TRANSFER_MODE))->GetCurSel();
+	m_pPort->setPortMode(SERVO::PortMode(index + 1), [&](int code) -> int {
+		Sleep(100);
+		CString strMsg;
+
+		if (code == WOK) {
+			LOGI("璁剧疆Transfer mode(%d)鎴愬姛.", index + 1);
+
+			msgDlg.DelayClose(3000);
+			strMsg.Format(_T("璁剧疆Transfer mode(%d)鎴愬姛"), index + 1);
+			msgDlg.DelayClose(3000);
+			msgDlg.SetIcon(MSG_BOX_SUCCEED);
+			msgDlg.SetTitle(_T("鎿嶄綔鎴愬姛"));
+			msgDlg.SetMessage((LPTSTR)(LPCTSTR)strMsg);
+			msgDlg.SetMarquee(FALSE, 0);
+			msgDlg.SetCompleteCode(0);
+		}
+		else {
+			LOGI("璁剧疆Transfer mode(%d)澶辫触锛宑ode:%d", index + 1, code);
+
+			msgDlg.DelayClose(3000);
+			strMsg.Format(_T("璁剧疆Transfer mode(%d)澶辫触锛宑ode:%d"), index + 1, code);
+			msgDlg.DelayClose(3000);
+			msgDlg.SetIcon(MSG_BOX_ERROR);
+			msgDlg.SetTitle(_T("鎿嶄綔澶辫触"));
+			msgDlg.SetMessage((LPTSTR)(LPCTSTR)strMsg);
+			msgDlg.SetMarquee(FALSE, 0);
+			msgDlg.SetCompleteCode(-1);
+		}
+
+		return 0;
+		});
+
+	msgDlg.DoModal();
+}
+
+void CPagePortProperty::OnBnClickedCheckAutoChange()
+{
+	BOOL bCheck = ((CButton*)GetDlgItem(IDC_CHECK_AUTO_CHANGE))->GetCheck() == BST_CHECKED;
+	EnableCtrls(bCheck);
+
+
+	// enable port
+	CMsgDlg msgDlg("璇风瓑寰�", "姝e湪鎿嶄綔锛岃绛夊緟...");
+
+	ASSERT(m_pPort != nullptr);
+	m_pPort->eableAutoChange(bCheck, [&](int code) -> int {
+		Sleep(100);
+		CString strMsg;
+
+		if (code == WOK) {
+			LOGI("%s Auto Change 鎴愬姛.", bCheck ? _T("enable") : _T("disable"));
+
+			msgDlg.DelayClose(3000);
+			strMsg.Format(_T("%s Auto Change 鎴愬姛."), bCheck ? _T("enable") : _T("disable"));
+			msgDlg.DelayClose(3000);
+			msgDlg.SetIcon(MSG_BOX_SUCCEED);
+			msgDlg.SetTitle(_T("鎿嶄綔鎴愬姛"));
+			msgDlg.SetMessage((LPTSTR)(LPCTSTR)strMsg);
+			msgDlg.SetMarquee(FALSE, 0);
+			msgDlg.SetCompleteCode(0);
+		}
+		else {
+			LOGI("%s Auto Change 澶辫触锛宑ode:%d", bCheck ? _T("enable") : _T("disable"), code);
+
+			msgDlg.DelayClose(3000);
+			strMsg.Format(_T("%s Auto Change 澶辫触锛宑ode:%d"), bCheck ? _T("enable") : _T("disable"), code);
+			msgDlg.DelayClose(3000);
+			msgDlg.SetIcon(MSG_BOX_ERROR);
+			msgDlg.SetTitle(_T("鎿嶄綔澶辫触"));
+			msgDlg.SetMessage((LPTSTR)(LPCTSTR)strMsg);
+			msgDlg.SetMarquee(FALSE, 0);
+			msgDlg.SetCompleteCode(-1);
+
+			// 杩樺師鎺т欢鐘舵��
+			((CButton*)GetDlgItem(IDC_CHECK_AUTO_CHANGE))->SetCheck(!bCheck ? BST_CHECKED : BST_UNCHECKED);
+		}
+
+		return 0;
+		});
+
+	msgDlg.DoModal();
 }
 
 void CPagePortProperty::EnableCtrls(BOOL bEnable)
@@ -137,3 +404,4 @@
 	GetDlgItem(IDC_COMBO_PORT_TRANSFER_MODE)->EnableWindow(bEnable);
 	GetDlgItem(IDC_CHECK_AUTO_CHANGE)->EnableWindow(bEnable);
 }
+

--
Gitblit v1.9.3