From c96ec4c44d31e4df6da3ce904fd3c6d8f3548c2d Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期五, 11 七月 2025 08:33:21 +0800
Subject: [PATCH] 1.终端信息显示模拟测试;

---
 SourceCode/Bond/EAPSimulator/CTerminalDisplayDlg.h        |   27 +++++++++
 SourceCode/Bond/EAPSimulator/EAPSimulator.vcxproj.filters |    6 ++
 SourceCode/Bond/EAPSimulator/CHsmsActive.cpp              |   16 +++++
 SourceCode/Bond/EAPSimulator/CTerminalDisplayDlg.cpp      |   73 ++++++++++++++++++++++++
 SourceCode/Bond/EAPSimulator/Resource.h                   |    9 ++
 SourceCode/Bond/HSMSSDK/Include/ISECS2Item.h              |    2 
 SourceCode/Bond/EAPSimulator/EAPSimulatorDlg.cpp          |    9 +++
 SourceCode/Bond/EAPSimulator/EAPSimulator.vcxproj         |    2 
 SourceCode/Bond/EAPSimulator/CHsmsActive.h                |    3 +
 SourceCode/Bond/EAPSimulator/EAPSimulatorDlg.h            |    1 
 SourceCode/Bond/Servo/HsmsPassive.cpp                     |   11 +++
 SourceCode/Bond/EAPSimulator/EAPSimulator.rc              |    0 
 12 files changed, 154 insertions(+), 5 deletions(-)

diff --git a/SourceCode/Bond/EAPSimulator/CHsmsActive.cpp b/SourceCode/Bond/EAPSimulator/CHsmsActive.cpp
index ac4fe04..c5a6a1c 100644
--- a/SourceCode/Bond/EAPSimulator/CHsmsActive.cpp
+++ b/SourceCode/Bond/EAPSimulator/CHsmsActive.cpp
@@ -146,3 +146,19 @@
 
 	return 0;
 }
+
+int CHsmsActive::hsmsTerminalDisplay(BYTE tid, const char* pszText)
+{
+	char szTid[1];
+	szTid[0] = tid;
+
+	IMessage* pMessage = nullptr;
+	int nRet = HSMS_Create1Message(pMessage, m_nSessionId, 10 | REPLY, 3, ++m_nSystemByte);
+	ISECS2Item* pItem = pMessage->getBody();
+	pItem->addBinaryItem(szTid, 1, _T("TID"));
+	pItem->addItem(pszText, _T("TEXT"));
+	m_pActive->sendMessage(pMessage);
+	HSMS_Destroy1Message(pMessage);
+
+	return 0;
+}
diff --git a/SourceCode/Bond/EAPSimulator/CHsmsActive.h b/SourceCode/Bond/EAPSimulator/CHsmsActive.h
index e04bd53..664193a 100644
--- a/SourceCode/Bond/EAPSimulator/CHsmsActive.h
+++ b/SourceCode/Bond/EAPSimulator/CHsmsActive.h
@@ -34,6 +34,9 @@
 	// Date time sync
 	int hsmsDatetimeSync();
 
+	// terminal display
+	int hsmsTerminalDisplay(BYTE tid, const char* pszText);
+
 private:
 	ACTIVEListener m_listener;
 	IActive* m_pActive;
diff --git a/SourceCode/Bond/EAPSimulator/CTerminalDisplayDlg.cpp b/SourceCode/Bond/EAPSimulator/CTerminalDisplayDlg.cpp
new file mode 100644
index 0000000..50cfe62
--- /dev/null
+++ b/SourceCode/Bond/EAPSimulator/CTerminalDisplayDlg.cpp
@@ -0,0 +1,73 @@
+锘�// CTerminalDisplayDlg.cpp: 瀹炵幇鏂囦欢
+//
+
+#include "pch.h"
+#include "EAPSimulator.h"
+#include "CTerminalDisplayDlg.h"
+#include "afxdialogex.h"
+
+
+// CTerminalDisplayDlg 瀵硅瘽妗�
+
+IMPLEMENT_DYNAMIC(CTerminalDisplayDlg, CDialogEx)
+
+CTerminalDisplayDlg::CTerminalDisplayDlg(CWnd* pParent /*=nullptr*/)
+	: CDialogEx(IDD_DIALOG_TERMINAL_DISPLAY, pParent)
+{
+
+}
+
+CTerminalDisplayDlg::~CTerminalDisplayDlg()
+{
+}
+
+void CTerminalDisplayDlg::DoDataExchange(CDataExchange* pDX)
+{
+	CDialogEx::DoDataExchange(pDX);
+}
+
+
+BEGIN_MESSAGE_MAP(CTerminalDisplayDlg, CDialogEx)
+	ON_EN_CHANGE(IDC_EDIT_TEXT, &CTerminalDisplayDlg::OnEnChangeEditText)
+	ON_BN_CLICKED(IDC_BUTTON_SEND, &CTerminalDisplayDlg::OnBnClickedButtonSend)
+END_MESSAGE_MAP()
+
+
+// CTerminalDisplayDlg 娑堟伅澶勭悊绋嬪簭
+
+
+BOOL CTerminalDisplayDlg::OnInitDialog()
+{
+	CDialogEx::OnInitDialog();
+
+	
+	// 娣诲姞缁堢id
+	CComboBox* pComboBox = (CComboBox*)GetDlgItem(IDC_COMBO_TID);
+	pComboBox->InsertString(0, _T("0(鍏ㄩ儴)"));
+	pComboBox->InsertString(1, _T("1(缁堢1)"));
+	pComboBox->InsertString(2, _T("2(缁堢2)"));
+	pComboBox->InsertString(3, _T("3(缁堢3)"));
+	pComboBox->InsertString(4, _T("4(缁堢4)"));
+	pComboBox->SetCurSel(0);
+
+
+	return TRUE;  // return TRUE unless you set the focus to a control
+				  // 寮傚父: OCX 灞炴�ч〉搴旇繑鍥� FALSE
+}
+
+void CTerminalDisplayDlg::OnEnChangeEditText()
+{
+	CString strText;
+	GetDlgItemText(IDC_EDIT_TEXT, strText);
+	GetDlgItem(IDC_BUTTON_SEND)->EnableWindow(!strText.IsEmpty());
+}
+
+void CTerminalDisplayDlg::OnBnClickedButtonSend()
+{
+	CComboBox* pComboBox = (CComboBox*)GetDlgItem(IDC_COMBO_TID);
+	BYTE tid = (BYTE)pComboBox->GetCurSel();
+	CString strText;
+	GetDlgItemText(IDC_EDIT_TEXT, strText);
+
+	theApp.m_model.m_pHsmsActive->hsmsTerminalDisplay(tid, (LPTSTR)(LPCTSTR)strText);
+}
diff --git a/SourceCode/Bond/EAPSimulator/CTerminalDisplayDlg.h b/SourceCode/Bond/EAPSimulator/CTerminalDisplayDlg.h
new file mode 100644
index 0000000..8e0e310
--- /dev/null
+++ b/SourceCode/Bond/EAPSimulator/CTerminalDisplayDlg.h
@@ -0,0 +1,27 @@
+锘�#pragma once
+
+
+// CTerminalDisplayDlg 瀵硅瘽妗�
+
+class CTerminalDisplayDlg : public CDialogEx
+{
+	DECLARE_DYNAMIC(CTerminalDisplayDlg)
+
+public:
+	CTerminalDisplayDlg(CWnd* pParent = nullptr);   // 鏍囧噯鏋勯�犲嚱鏁�
+	virtual ~CTerminalDisplayDlg();
+
+// 瀵硅瘽妗嗘暟鎹�
+#ifdef AFX_DESIGN_TIME
+	enum { IDD = IDD_DIALOG_TERMINAL_DISPLAY };
+#endif
+
+protected:
+	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 鏀寔
+
+	DECLARE_MESSAGE_MAP()
+public:
+	virtual BOOL OnInitDialog();
+	afx_msg void OnEnChangeEditText();
+	afx_msg void OnBnClickedButtonSend();
+};
diff --git a/SourceCode/Bond/EAPSimulator/EAPSimulator.rc b/SourceCode/Bond/EAPSimulator/EAPSimulator.rc
index 827856f..559cb5c 100644
--- a/SourceCode/Bond/EAPSimulator/EAPSimulator.rc
+++ b/SourceCode/Bond/EAPSimulator/EAPSimulator.rc
Binary files differ
diff --git a/SourceCode/Bond/EAPSimulator/EAPSimulator.vcxproj b/SourceCode/Bond/EAPSimulator/EAPSimulator.vcxproj
index e9629dc..c7d4d5c 100644
--- a/SourceCode/Bond/EAPSimulator/EAPSimulator.vcxproj
+++ b/SourceCode/Bond/EAPSimulator/EAPSimulator.vcxproj
@@ -187,6 +187,7 @@
     <ClInclude Include="CModel.h" />
     <ClInclude Include="Common.h" />
     <ClInclude Include="Context.h" />
+    <ClInclude Include="CTerminalDisplayDlg.h" />
     <ClInclude Include="EAPSimulator.h" />
     <ClInclude Include="EAPSimulatorDlg.h" />
     <ClInclude Include="framework.h" />
@@ -200,6 +201,7 @@
     <ClCompile Include="CHsmsActive.cpp" />
     <ClCompile Include="CModel.cpp" />
     <ClCompile Include="Context.cpp" />
+    <ClCompile Include="CTerminalDisplayDlg.cpp" />
     <ClCompile Include="EAPSimulator.cpp" />
     <ClCompile Include="EAPSimulatorDlg.cpp" />
     <ClCompile Include="Log.cpp" />
diff --git a/SourceCode/Bond/EAPSimulator/EAPSimulator.vcxproj.filters b/SourceCode/Bond/EAPSimulator/EAPSimulator.vcxproj.filters
index 3147743..84e59fd 100644
--- a/SourceCode/Bond/EAPSimulator/EAPSimulator.vcxproj.filters
+++ b/SourceCode/Bond/EAPSimulator/EAPSimulator.vcxproj.filters
@@ -51,6 +51,9 @@
     <ClInclude Include="Common.h">
       <Filter>澶存枃浠�</Filter>
     </ClInclude>
+    <ClInclude Include="CTerminalDisplayDlg.h">
+      <Filter>澶存枃浠�</Filter>
+    </ClInclude>
   </ItemGroup>
   <ItemGroup>
     <ClCompile Include="EAPSimulator.cpp">
@@ -77,6 +80,9 @@
     <ClCompile Include="CHsmsActive.cpp">
       <Filter>婧愭枃浠�</Filter>
     </ClCompile>
+    <ClCompile Include="CTerminalDisplayDlg.cpp">
+      <Filter>婧愭枃浠�</Filter>
+    </ClCompile>
   </ItemGroup>
   <ItemGroup>
     <ResourceCompile Include="EAPSimulator.rc">
diff --git a/SourceCode/Bond/EAPSimulator/EAPSimulatorDlg.cpp b/SourceCode/Bond/EAPSimulator/EAPSimulatorDlg.cpp
index e67fa2c..4609d25 100644
--- a/SourceCode/Bond/EAPSimulator/EAPSimulatorDlg.cpp
+++ b/SourceCode/Bond/EAPSimulator/EAPSimulatorDlg.cpp
@@ -9,6 +9,7 @@
 #include "afxdialogex.h"
 #include "Common.h"
 #include <regex>
+#include "CTerminalDisplayDlg.h"
 
 
 #ifdef _DEBUG
@@ -75,6 +76,7 @@
 	ON_BN_CLICKED(IDC_BUTTON_DISCONNECT, &CEAPSimulatorDlg::OnBnClickedButtonDisconnect)
 	ON_BN_CLICKED(IDC_BUTTON_ARE_YOU_THERE, &CEAPSimulatorDlg::OnBnClickedButtonAreYouThere)
 	ON_BN_CLICKED(IDC_BUTTON_DATETIME_SYNC, &CEAPSimulatorDlg::OnBnClickedButtonDatetimeSync)
+	ON_BN_CLICKED(IDC_BUTTON_TERMINAL_DISPLAY, &CEAPSimulatorDlg::OnBnClickedButtonTerminalDisplay)
 END_MESSAGE_MAP()
 
 
@@ -252,6 +254,7 @@
 	GetDlgItem(IDC_BUTTON_DISCONNECT)->EnableWindow(enabled);
 	GetDlgItem(IDC_BUTTON_ARE_YOU_THERE)->EnableWindow(enabled);
 	GetDlgItem(IDC_BUTTON_DATETIME_SYNC)->EnableWindow(enabled);
+	GetDlgItem(IDC_BUTTON_TERMINAL_DISPLAY)->EnableWindow(enabled);	
 }
 
 void CEAPSimulatorDlg::OnBnClickedButtonConnect()
@@ -278,3 +281,9 @@
 {
 	theApp.m_model.m_pHsmsActive->hsmsDatetimeSync();
 }
+
+void CEAPSimulatorDlg::OnBnClickedButtonTerminalDisplay()
+{
+	CTerminalDisplayDlg dlg;
+	dlg.DoModal();
+}
diff --git a/SourceCode/Bond/EAPSimulator/EAPSimulatorDlg.h b/SourceCode/Bond/EAPSimulator/EAPSimulatorDlg.h
index 248d7d5..5bd3972 100644
--- a/SourceCode/Bond/EAPSimulator/EAPSimulatorDlg.h
+++ b/SourceCode/Bond/EAPSimulator/EAPSimulatorDlg.h
@@ -48,4 +48,5 @@
 	afx_msg void OnBnClickedButtonDisconnect();
 	afx_msg void OnBnClickedButtonAreYouThere();
 	afx_msg void OnBnClickedButtonDatetimeSync();
+	afx_msg void OnBnClickedButtonTerminalDisplay();
 };
diff --git a/SourceCode/Bond/EAPSimulator/Resource.h b/SourceCode/Bond/EAPSimulator/Resource.h
index e4c682e..5197bdc 100644
--- a/SourceCode/Bond/EAPSimulator/Resource.h
+++ b/SourceCode/Bond/EAPSimulator/Resource.h
@@ -7,6 +7,7 @@
 #define IDS_ABOUTBOX                    101
 #define IDD_EAPSIMULATOR_DIALOG         102
 #define IDR_MAINFRAME                   128
+#define IDD_DIALOG_TERMINAL_DISPLAY     129
 #define IDC_EDIT_LOG                    1000
 #define IDC_EDIT_IP                     1001
 #define IDC_EDIT_PORT                   1002
@@ -14,14 +15,18 @@
 #define IDC_BUTTON_DISCONNECT           1004
 #define IDC_BUTTON_ARE_YOU_THERE        1005
 #define IDC_BUTTON_DATETIME_SYNC        1006
+#define IDC_BUTTON_TERMINAL_DISPLAY     1007
+#define IDC_COMBO_TID                   1008
+#define IDC_EDIT_TEXT                   1009
+#define IDC_BUTTON_SEND                 1010
 
 // Next default values for new objects
 // 
 #ifdef APSTUDIO_INVOKED
 #ifndef APSTUDIO_READONLY_SYMBOLS
-#define _APS_NEXT_RESOURCE_VALUE        129
+#define _APS_NEXT_RESOURCE_VALUE        131
 #define _APS_NEXT_COMMAND_VALUE         32771
-#define _APS_NEXT_CONTROL_VALUE         1007
+#define _APS_NEXT_CONTROL_VALUE         1011
 #define _APS_NEXT_SYMED_VALUE           101
 #endif
 #endif
diff --git a/SourceCode/Bond/HSMSSDK/Include/ISECS2Item.h b/SourceCode/Bond/HSMSSDK/Include/ISECS2Item.h
index 805d2f2..ba3f21d 100644
--- a/SourceCode/Bond/HSMSSDK/Include/ISECS2Item.h
+++ b/SourceCode/Bond/HSMSSDK/Include/ISECS2Item.h
@@ -55,7 +55,7 @@
 	virtual bool getSubItemU1(int index, unsigned char& value) = 0;
 	virtual void reset() = 0;
 	virtual ISECS2Item* addItem(const char* pszText, const char* pszNote) = 0;
-	virtual ISECS2Item* addBinaryItem(BYTE bin, const char* pszNote) = 0;
+	virtual ISECS2Item* addBinaryItem(const char* pszData, unsigned int len, const char* pszNote) = 0;
 	virtual ISECS2Item* addBoolItem(bool boolValue, const char* pszNote) = 0;
 	virtual ISECS2Item* addI8Item(long long value, const char* pszNote) = 0;
 	virtual ISECS2Item* addI4Item(int value, const char* pszNote) = 0;
diff --git a/SourceCode/Bond/Servo/HsmsPassive.cpp b/SourceCode/Bond/Servo/HsmsPassive.cpp
index 9e4a5ab..832f6d3 100644
--- a/SourceCode/Bond/Servo/HsmsPassive.cpp
+++ b/SourceCode/Bond/Servo/HsmsPassive.cpp
@@ -10,6 +10,10 @@
 #include <string.h>  
 
 
+const char ACK[2] = {0, 1};
+const char* ACK0 = &ACK[0];
+const char* ACK1 = &ACK[1];
+
 unsigned __stdcall CimWorkThreadFunction(LPVOID lpParam)
 {
 	CHsmsPassive* pPassive = (CHsmsPassive*)lpParam;
@@ -490,7 +494,7 @@
 	ASSERT(pMessage);
 
 	ISECS2Item* pItem = pMessage->getBody();
-	pItem->addBinaryItem(BYTE(0), "COMMACK");
+	pItem->addBinaryItem(ACK0, 1, "COMMACK");
 	ISECS2Item* pList = pItem->addItem();
 	pList->addItem(m_strEquipmentModelType.c_str(), "MDLN");
 	pList->addItem(m_strSoftRev.c_str(), "SOFTREV");
@@ -935,6 +939,9 @@
 		return ER_NOTSELECT;
 	}
 
+	char szALCD[1];
+	szALCD[0] = ALCD & 0xff;
+
 	Lock();
 	CHsmsAction* pAction = new CHsmsAction(ACTION_ALARM_REPORT, TRUE, m_nActionTimeout);
 	m_listAction.push_back(pAction);
@@ -942,7 +949,7 @@
 	HSMS_Create1Message(pMessage, m_nSessionId, 5 | REPLY, 1, ++m_nSystemByte);
 	ASSERT(pMessage);
 	ISECS2Item* pItem = pMessage->getBody();
-	pItem->addBinaryItem(BYTE(ALCD & 0xff), "ALCD");
+	pItem->addBinaryItem(szALCD, 1, "ALCD");
 	pItem->addU4Item(ALID, "ALID");
 	pItem->addItem(ALTX, "ALTX");
 	pAction->setSendMessage(pMessage);

--
Gitblit v1.9.3