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