From d7c88780e1df54f34563d60bd7fa01011d2eef03 Mon Sep 17 00:00:00 2001
From: chenluhua1980 <Chenluhua@qq.com>
Date: 星期一, 26 一月 2026 23:17:17 +0800
Subject: [PATCH] 1.CSVData.cpp 里 unserialize 用了 8*2、125*2,但 serialize 只写 8 + 125 字节。 m_svRawData.insert 的 end 指针是 pszBuffer + 125*2,没有用 index 计算,可能把无效区域一起拷进去。 一旦 size 实际是 133(不是 266),就会直接越界,堆会被破坏,m_svDatas.clear() 在销毁元素时崩。

---
 SourceCode/Bond/BoounionPLC/BoounionPLCDlg.cpp |   23 ++++++++++++++---------
 1 files changed, 14 insertions(+), 9 deletions(-)

diff --git a/SourceCode/Bond/BoounionPLC/BoounionPLCDlg.cpp b/SourceCode/Bond/BoounionPLC/BoounionPLCDlg.cpp
index 70c30d3..d859bee 100644
--- a/SourceCode/Bond/BoounionPLC/BoounionPLCDlg.cpp
+++ b/SourceCode/Bond/BoounionPLC/BoounionPLCDlg.cpp
@@ -10,6 +10,7 @@
 #include "PlcView.h"
 #include "Log.h"
 #include "InputDialog.h"
+#include "AddPLCInfo.h"
 #include "AxisManager.h"
 #include "IOManager.h"
 
@@ -139,6 +140,9 @@
 
 					theApp.m_model.setCurrentPlc(pPlc);
 				}
+			}
+			else if (RX_PLC_STATE_CHANGED == code) {
+
 			}
 			else if (code == RX_CODE_ALARM_ON) {
 				CPLC* pPlc;
@@ -502,24 +506,25 @@
 {
 	int id = (int)lParam;
 	if (id == IDC_BUTTON_ADD) {
-		CInputDialog inputDialog(_T("新建设备"), _T("请输入设备名称:"));
-		if (inputDialog.DoModal() != IDOK) {
-			AfxMessageBox(_T("取消验证!"));
+		CAddPLCInfo dlgAddPLCInfo;
+		if (dlgAddPLCInfo.DoModal() != IDOK) {
 			return 0;
 		}
 
-		CString strName;
-		strName = inputDialog.GetInputText();
-		if (!strName.IsEmpty()) {
-			theApp.m_model.addPlc((LPTSTR)(LPCTSTR)strName, "192.168.1.188", 1001);
+		CString strPLCName = dlgAddPLCInfo.GetPLCName();
+		CString strIP = dlgAddPLCInfo.GetIP();
+		CString strPort = dlgAddPLCInfo.GetPort();
+
+		if (!strPLCName.IsEmpty() && !strIP.IsEmpty() && !strPort.IsEmpty()) {
+			theApp.m_model.addPlc((LPTSTR)(LPCTSTR)strPLCName, (LPTSTR)(LPCTSTR)strIP, std::stoi((LPTSTR)(LPCTSTR)strPort));
 
 			// 新建轴文件
 			AxisManager axisManager;
-			axisManager.SaveAxis((LPTSTR)(LPCTSTR)strName);
+			axisManager.SaveAxis((LPTSTR)(LPCTSTR)strPLCName);
 
 			// 新建IO文件
 			IOManager ioManager;
-			ioManager.SaveToFile((LPTSTR)(LPCTSTR)strName);
+			ioManager.SaveToFile((LPTSTR)(LPCTSTR)strPLCName);
 		}
 	}
 	else if (id == IDC_BUTTON_DELETE) {

--
Gitblit v1.9.3