From e878ac7788fef44639145ffd971ab0eb06d692ad Mon Sep 17 00:00:00 2001
From: chenluhua1980 <Chenluhua@qq.com>
Date: 星期四, 08 一月 2026 19:48:18 +0800
Subject: [PATCH] 1.EAP模拟器,远程控件切换状态;
---
SourceCode/Bond/EAPSimulator/CHsmsActive.cpp | 42 +++++++++++++++++++++
SourceCode/Bond/EAPSimulator/Resource.h | 5 ++
SourceCode/Bond/EAPSimulator/EAPSimulatorDlg.cpp | 55 +++++++++++++++++++++++++++
SourceCode/Bond/EAPSimulator/CHsmsActive.h | 8 ++++
SourceCode/Bond/EAPSimulator/EAPSimulatorDlg.h | 3 +
5 files changed, 112 insertions(+), 1 deletions(-)
diff --git a/SourceCode/Bond/EAPSimulator/CHsmsActive.cpp b/SourceCode/Bond/EAPSimulator/CHsmsActive.cpp
index 5b98173..8d74257 100644
--- a/SourceCode/Bond/EAPSimulator/CHsmsActive.cpp
+++ b/SourceCode/Bond/EAPSimulator/CHsmsActive.cpp
@@ -143,6 +143,48 @@
return 0;
}
+int CHsmsActive::hsmsRequestOnline()
+{
+ IMessage* pMessage = nullptr;
+ int nRet = HSMS_Create1Message(pMessage, m_nSessionId, 1 | REPLY, 17, ++m_nSystemByte);
+ m_pActive->sendMessage(pMessage);
+ HSMS_Destroy1Message(pMessage);
+ return 0;
+}
+
+int CHsmsActive::hsmsRequestOffline()
+{
+ IMessage* pMessage = nullptr;
+ int nRet = HSMS_Create1Message(pMessage, m_nSessionId, 1 | REPLY, 15, ++m_nSystemByte);
+ m_pActive->sendMessage(pMessage);
+ HSMS_Destroy1Message(pMessage);
+ return 0;
+}
+
+int CHsmsActive::hsmsGoLocal()
+{
+ IMessage* pMessage = nullptr;
+ int nRet = HSMS_Create1Message(pMessage, m_nSessionId, 2 | REPLY, 41, ++m_nSystemByte);
+ ISECS2Item* pBody = pMessage->getBody();
+ pBody->addItem("GoLocal", "RCMD");
+ pBody->addItem(); // L: empty params
+ m_pActive->sendMessage(pMessage);
+ HSMS_Destroy1Message(pMessage);
+ return 0;
+}
+
+int CHsmsActive::hsmsGoRemote()
+{
+ IMessage* pMessage = nullptr;
+ int nRet = HSMS_Create1Message(pMessage, m_nSessionId, 2 | REPLY, 41, ++m_nSystemByte);
+ ISECS2Item* pBody = pMessage->getBody();
+ pBody->addItem("GoRemote", "RCMD");
+ pBody->addItem(); // L: empty params
+ m_pActive->sendMessage(pMessage);
+ HSMS_Destroy1Message(pMessage);
+ return 0;
+}
+
int CHsmsActive::hsmsDatetimeSync()
{
CTime time = CTime::GetCurrentTime();
diff --git a/SourceCode/Bond/EAPSimulator/CHsmsActive.h b/SourceCode/Bond/EAPSimulator/CHsmsActive.h
index 04bb2c1..2ba9fea 100644
--- a/SourceCode/Bond/EAPSimulator/CHsmsActive.h
+++ b/SourceCode/Bond/EAPSimulator/CHsmsActive.h
@@ -42,6 +42,14 @@
// Are You There
int hsmsAreYouThere();
+ // ControlState: Request Online/Offline (S1F17 / S1F15)
+ int hsmsRequestOnline();
+ int hsmsRequestOffline();
+
+ // ControlState: GoLocal/GoRemote (S2F41)
+ int hsmsGoLocal();
+ int hsmsGoRemote();
+
// Date time sync
int hsmsDatetimeSync();
diff --git a/SourceCode/Bond/EAPSimulator/EAPSimulatorDlg.cpp b/SourceCode/Bond/EAPSimulator/EAPSimulatorDlg.cpp
index 9e0a4de..271f175 100644
--- a/SourceCode/Bond/EAPSimulator/EAPSimulatorDlg.cpp
+++ b/SourceCode/Bond/EAPSimulator/EAPSimulatorDlg.cpp
@@ -98,6 +98,9 @@
ON_BN_CLICKED(IDC_BUTTON_QUERY_PJ_SPACE, &CEAPSimulatorDlg::OnBnClickedButtonQueryPjSpace)
ON_BN_CLICKED(IDC_BUTTON_CREATE_PJ, &CEAPSimulatorDlg::OnBnClickedButtonCreatePj)
ON_BN_CLICKED(IDC_BUTTON_CREATE_CJ, &CEAPSimulatorDlg::OnBnClickedButtonCreateCj)
+ ON_BN_CLICKED(IDC_BUTTON_CTRL_OFFLINE, &CEAPSimulatorDlg::OnBnClickedButtonCtrlOffline)
+ ON_BN_CLICKED(IDC_BUTTON_CTRL_ONLINE_LOCAL, &CEAPSimulatorDlg::OnBnClickedButtonCtrlOnlineLocal)
+ ON_BN_CLICKED(IDC_BUTTON_CTRL_ONLINE_REMOTE, &CEAPSimulatorDlg::OnBnClickedButtonCtrlOnlineRemote)
END_MESSAGE_MAP()
@@ -191,6 +194,32 @@
m_hWnd, (HMENU)IDC_BUTTON_PROCEED_WITH_SLOTMAP, AfxGetInstanceHandle(), nullptr);
if (hBtn != nullptr) {
::SendMessage(hBtn, WM_SETFONT, (WPARAM)GetFont()->GetSafeHandle(), TRUE);
+ }
+ }
+ // ControlState test buttons at runtime (resource file is UTF-16, keep it unchanged)
+ {
+ const int y = 120;
+ const int w = 70;
+ const int h = 14;
+ const int gap = 3;
+
+ struct BtnDef { int x; int id; const TCHAR* text; };
+ BtnDef defs[] = {
+ { 238, IDC_BUTTON_CTRL_OFFLINE, _T("Ctrl Offline") },
+ { 238 + (w + gap), IDC_BUTTON_CTRL_ONLINE_LOCAL, _T("Ctrl Local") },
+ { 238 + 2 * (w + gap), IDC_BUTTON_CTRL_ONLINE_REMOTE, _T("Ctrl Remote") },
+ };
+
+ for (const auto& d : defs) {
+ CRect rc(d.x, y, d.x + w, y + h); // dialog units
+ MapDialogRect(&rc);
+ HWND hBtn = ::CreateWindow(_T("BUTTON"), d.text,
+ WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
+ rc.left, rc.top, rc.Width(), rc.Height(),
+ m_hWnd, (HMENU)d.id, AfxGetInstanceHandle(), nullptr);
+ if (hBtn != nullptr) {
+ ::SendMessage(hBtn, WM_SETFONT, (WPARAM)GetFont()->GetSafeHandle(), TRUE);
+ }
}
}
@@ -307,6 +336,15 @@
GetDlgItem(IDC_BUTTON_QUERY_PJ_SPACE)->EnableWindow(enabled);
GetDlgItem(IDC_BUTTON_CREATE_PJ)->EnableWindow(enabled);
GetDlgItem(IDC_BUTTON_CREATE_CJ)->EnableWindow(enabled);
+ if (GetDlgItem(IDC_BUTTON_CTRL_OFFLINE) != nullptr) {
+ GetDlgItem(IDC_BUTTON_CTRL_OFFLINE)->EnableWindow(enabled);
+ }
+ if (GetDlgItem(IDC_BUTTON_CTRL_ONLINE_LOCAL) != nullptr) {
+ GetDlgItem(IDC_BUTTON_CTRL_ONLINE_LOCAL)->EnableWindow(enabled);
+ }
+ if (GetDlgItem(IDC_BUTTON_CTRL_ONLINE_REMOTE) != nullptr) {
+ GetDlgItem(IDC_BUTTON_CTRL_ONLINE_REMOTE)->EnableWindow(enabled);
+ }
}
void CEAPSimulatorDlg::OnBnClickedButtonConnect()
@@ -454,3 +492,20 @@
std::vector<std::string> processJobIds = {"PJ0001"};
theApp.m_model.m_pHsmsActive->hsmsCreateControlJob("CJ5007", processJobIds);
}
+
+void CEAPSimulatorDlg::OnBnClickedButtonCtrlOffline()
+{
+ theApp.m_model.m_pHsmsActive->hsmsRequestOffline();
+}
+
+void CEAPSimulatorDlg::OnBnClickedButtonCtrlOnlineLocal()
+{
+ theApp.m_model.m_pHsmsActive->hsmsRequestOnline();
+ theApp.m_model.m_pHsmsActive->hsmsGoLocal();
+}
+
+void CEAPSimulatorDlg::OnBnClickedButtonCtrlOnlineRemote()
+{
+ theApp.m_model.m_pHsmsActive->hsmsRequestOnline();
+ theApp.m_model.m_pHsmsActive->hsmsGoRemote();
+}
diff --git a/SourceCode/Bond/EAPSimulator/EAPSimulatorDlg.h b/SourceCode/Bond/EAPSimulator/EAPSimulatorDlg.h
index 7efa6a4..ffc3f40 100644
--- a/SourceCode/Bond/EAPSimulator/EAPSimulatorDlg.h
+++ b/SourceCode/Bond/EAPSimulator/EAPSimulatorDlg.h
@@ -64,4 +64,7 @@
afx_msg void OnBnClickedButtonQueryPjSpace();
afx_msg void OnBnClickedButtonCreatePj();
afx_msg void OnBnClickedButtonCreateCj();
+ afx_msg void OnBnClickedButtonCtrlOffline();
+ afx_msg void OnBnClickedButtonCtrlOnlineLocal();
+ afx_msg void OnBnClickedButtonCtrlOnlineRemote();
};
diff --git a/SourceCode/Bond/EAPSimulator/Resource.h b/SourceCode/Bond/EAPSimulator/Resource.h
index 5677b18..4758455 100644
--- a/SourceCode/Bond/EAPSimulator/Resource.h
+++ b/SourceCode/Bond/EAPSimulator/Resource.h
@@ -58,6 +58,9 @@
#define IDC_BUTTON_CREATE_CJ 1040
#define IDC_BUTTON_DELETE 1041
#define IDC_BUTTON_PROCEED_WITH_SLOTMAP 1042
+#define IDC_BUTTON_CTRL_OFFLINE 1043
+#define IDC_BUTTON_CTRL_ONLINE_LOCAL 1044
+#define IDC_BUTTON_CTRL_ONLINE_REMOTE 1045
// Next default values for new objects
//
@@ -65,7 +68,7 @@
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 143
#define _APS_NEXT_COMMAND_VALUE 32771
-#define _APS_NEXT_CONTROL_VALUE 1043
+#define _APS_NEXT_CONTROL_VALUE 1046
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif
--
Gitblit v1.9.3