From f540130ba442e39f981d2d37796c6460db8a00ed Mon Sep 17 00:00:00 2001
From: LAPTOP-T815PCOQ\25526 <mr.liuyang@126.com>
Date: 星期一, 13 一月 2025 18:07:57 +0800
Subject: [PATCH] 1. 添加PLC信息界面
---
SourceCode/Bond/BoounionPLC/BoounionPLC.rc | 0
SourceCode/Bond/BoounionPLC/BoounionPLCDlg.cpp | 20 ++--
SourceCode/Bond/BoounionPLC/AddPLCInfo.cpp | 124 +++++++++++++++++++++++++++++++
SourceCode/Bond/BoounionPLC/AddPLCInfo.h | 43 ++++++++++
SourceCode/Bond/BoounionPLC/Resource.h | 0
SourceCode/Bond/BoounionPLC/BoounionPLC.vcxproj.filters | 6 +
SourceCode/Bond/BoounionPLC/BoounionPLC.vcxproj | 2
7 files changed, 186 insertions(+), 9 deletions(-)
diff --git a/SourceCode/Bond/BoounionPLC/AddPLCInfo.cpp b/SourceCode/Bond/BoounionPLC/AddPLCInfo.cpp
new file mode 100644
index 0000000..c9a8095
--- /dev/null
+++ b/SourceCode/Bond/BoounionPLC/AddPLCInfo.cpp
@@ -0,0 +1,124 @@
+锘�// AddPLCInfo.cpp: 瀹炵幇鏂囦欢
+//
+
+#include "stdafx.h"
+#include "BoounionPLC.h"
+#include "afxdialogex.h"
+#include "AddPLCInfo.h"
+
+
+// CAddPLCInfo 瀵硅瘽妗�
+
+IMPLEMENT_DYNAMIC(CAddPLCInfo, CDialogEx)
+
+CAddPLCInfo::CAddPLCInfo(CWnd* pParent /*=nullptr*/)
+ : CDialogEx(IDD_DIALOG_ADD_PLC_INFO, pParent)
+{
+
+}
+
+CAddPLCInfo::~CAddPLCInfo()
+{
+}
+
+CString CAddPLCInfo::GetPLCName() { return m_strPLCName; }
+
+CString CAddPLCInfo::GetIP() { return m_strIP; }
+
+CString CAddPLCInfo::GetPort() { return m_strPort; }
+
+bool CAddPLCInfo::IsValidPort(const CString& strPort)
+{
+ // 鍒ゆ柇鏄惁涓烘暟瀛�
+ for (int i = 0; i < strPort.GetLength(); ++i) {
+ if (!_istdigit(strPort[i])) {
+ return false; // 闈炴暟瀛�
+ }
+ }
+
+ // 杞崲涓烘暣鏁板苟鍒ゆ柇鑼冨洿
+ int nPort = _ttoi(strPort);
+ return nPort >= 1 && nPort <= 65535;
+}
+
+bool CAddPLCInfo::IsValidIPAddress(const CString& strIP1, const CString& strIP2, const CString& strIP3, const CString& strIP4)
+{
+ // 鏍¢獙姣忎竴娈垫槸鍚︽槸鏁板瓧骞跺湪鑼冨洿鍐�
+ return IsValidIPSegment(strIP1) &&
+ IsValidIPSegment(strIP2) &&
+ IsValidIPSegment(strIP3) &&
+ IsValidIPSegment(strIP4);
+}
+
+bool CAddPLCInfo::IsValidIPSegment(const CString& strSegment)
+{
+ // 鍒ゆ柇鏄惁涓烘暟瀛�
+ for (int i = 0; i < strSegment.GetLength(); ++i) {
+ if (!_istdigit(strSegment[i])) {
+ return false; // 闈炴暟瀛�
+ }
+ }
+
+ // 杞崲涓烘暣鏁板苟鍒ゆ柇鑼冨洿
+ int nSegment = _ttoi(strSegment);
+ return nSegment >= 0 && nSegment <= 255;
+}
+
+void CAddPLCInfo::DoDataExchange(CDataExchange* pDX)
+{
+ CDialogEx::DoDataExchange(pDX);
+ DDX_Control(pDX, IDC_EDIT_PLC_NAME, m_editPLCName);
+ DDX_Control(pDX, IDC_EDIT_PORT, m_editPort);
+}
+
+
+BEGIN_MESSAGE_MAP(CAddPLCInfo, CDialogEx)
+ ON_BN_CLICKED(IDOK, &CAddPLCInfo::OnBnClickedOk)
+END_MESSAGE_MAP()
+
+
+// CAddPLCInfo 娑堟伅澶勭悊绋嬪簭
+
+
+void CAddPLCInfo::OnBnClickedOk()
+{
+ // TODO: 鍦ㄦ娣诲姞鎺т欢閫氱煡澶勭悊绋嬪簭浠g爜
+ CString strIPAddr1;
+ CString strIPAddr2;
+ CString strIPAddr3;
+ CString strIPAddr4;
+
+ m_editPLCName.GetWindowText(m_strPLCName);
+ if (m_strPLCName.IsEmpty()) {
+ AfxMessageBox(_T("PLC 鍚嶇О涓嶈兘涓虹┖锛�"));
+ return;
+ }
+
+ // 鏍¢獙绔彛鍙�
+ m_editPort.GetWindowText(m_strPort);
+ if (!IsValidPort(m_strPort)) {
+ AfxMessageBox(_T("绔彛鍙蜂笉鍚堟硶锛佽杈撳叆 1 鍒� 65535 涔嬮棿鐨勬暟瀛椼��"));
+ return;
+ }
+
+ // 鏍¢獙IP鍦板潃
+ GetDlgItem(IDC_EDIT_IP_ADDR1)->GetWindowText(strIPAddr1);
+ GetDlgItem(IDC_EDIT_IP_ADDR2)->GetWindowText(strIPAddr2);
+ GetDlgItem(IDC_EDIT_IP_ADDR3)->GetWindowText(strIPAddr3);
+ GetDlgItem(IDC_EDIT_IP_ADDR4)->GetWindowText(strIPAddr4);
+
+ if (strIPAddr1.IsEmpty() || strIPAddr2.IsEmpty() || strIPAddr3.IsEmpty() || strIPAddr4.IsEmpty()) {
+ AfxMessageBox(_T("IP 鍦板潃涓嶅悎娉曪紒姣忔涓嶈兘涓虹┖銆�"));
+ return;
+ }
+
+ if (!IsValidIPAddress(strIPAddr1, strIPAddr2, strIPAddr3, strIPAddr4)) {
+ AfxMessageBox(_T("IP 鍦板潃涓嶅悎娉曪紒姣忔蹇呴』鏄� 0 鍒� 255 鐨勬暟瀛椼��"));
+ return;
+ }
+
+ // 鎷兼帴IP鍦板潃
+ m_strIP.Format(_T("%s.%s.%s.%s"), strIPAddr1, strIPAddr2, strIPAddr3, strIPAddr4);
+
+ CDialogEx::OnOK();
+}
diff --git a/SourceCode/Bond/BoounionPLC/AddPLCInfo.h b/SourceCode/Bond/BoounionPLC/AddPLCInfo.h
new file mode 100644
index 0000000..89ff176
--- /dev/null
+++ b/SourceCode/Bond/BoounionPLC/AddPLCInfo.h
@@ -0,0 +1,43 @@
+锘�#pragma once
+#include "afxdialogex.h"
+
+
+// CAddPLCInfo 瀵硅瘽妗�
+
+class CAddPLCInfo : public CDialogEx
+{
+ DECLARE_DYNAMIC(CAddPLCInfo)
+
+public:
+ CAddPLCInfo(CWnd* pParent = nullptr); // 鏍囧噯鏋勯�犲嚱鏁�
+ virtual ~CAddPLCInfo();
+
+ // 鑾峰彇plc鍚嶇О\ip\绔彛
+ CString GetPLCName();
+ CString GetIP();
+ CString GetPort();
+
+// 瀵硅瘽妗嗘暟鎹�
+#ifdef AFX_DESIGN_TIME
+ enum { IDD = IDD_DIALOG_ADD_PLC_INFO };
+#endif
+
+protected:
+ virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 鏀寔
+ afx_msg void OnBnClickedOk();
+ DECLARE_MESSAGE_MAP()
+
+private:
+ bool IsValidPort(const CString& strPort);
+ bool IsValidIPAddress(const CString& strIP1, const CString& strIP2, const CString& strIP3, const CString& strIP4);
+ bool IsValidIPSegment(const CString& strSegment);
+
+ // 鏁版嵁
+ CString m_strPLCName;
+ CString m_strIP;
+ CString m_strPort;
+
+ // 鎺т欢
+ CEdit m_editPLCName;
+ CEdit m_editPort;
+};
diff --git a/SourceCode/Bond/BoounionPLC/BoounionPLC.rc b/SourceCode/Bond/BoounionPLC/BoounionPLC.rc
index e661b4b..66d1463 100644
--- a/SourceCode/Bond/BoounionPLC/BoounionPLC.rc
+++ b/SourceCode/Bond/BoounionPLC/BoounionPLC.rc
Binary files differ
diff --git a/SourceCode/Bond/BoounionPLC/BoounionPLC.vcxproj b/SourceCode/Bond/BoounionPLC/BoounionPLC.vcxproj
index 4c023ff..edc7445 100644
--- a/SourceCode/Bond/BoounionPLC/BoounionPLC.vcxproj
+++ b/SourceCode/Bond/BoounionPLC/BoounionPLC.vcxproj
@@ -193,6 +193,7 @@
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\BondEq\HorizontalLine.h" />
+ <ClInclude Include="AddPLCInfo.h" />
<ClInclude Include="Alarm.h" />
<ClInclude Include="AlarmMonitor.h" />
<ClInclude Include="AlarmPopupDlg.h" />
@@ -239,6 +240,7 @@
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\BondEq\HorizontalLine.cpp" />
+ <ClCompile Include="AddPLCInfo.cpp" />
<ClCompile Include="Alarm.cpp" />
<ClCompile Include="AlarmMonitor.cpp" />
<ClCompile Include="AlarmPopupDlg.cpp" />
diff --git a/SourceCode/Bond/BoounionPLC/BoounionPLC.vcxproj.filters b/SourceCode/Bond/BoounionPLC/BoounionPLC.vcxproj.filters
index 96bd33d..fc03e00 100644
--- a/SourceCode/Bond/BoounionPLC/BoounionPLC.vcxproj.filters
+++ b/SourceCode/Bond/BoounionPLC/BoounionPLC.vcxproj.filters
@@ -156,6 +156,9 @@
<ClInclude Include="CBaseDlg.h">
<Filter>澶存枃浠�</Filter>
</ClInclude>
+ <ClInclude Include="AddPLCInfo.h">
+ <Filter>澶存枃浠�</Filter>
+ </ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="BoounionPLC.cpp">
@@ -278,6 +281,9 @@
<ClCompile Include="CBaseDlg.cpp">
<Filter>婧愭枃浠�</Filter>
</ClCompile>
+ <ClCompile Include="AddPLCInfo.cpp">
+ <Filter>婧愭枃浠�</Filter>
+ </ClCompile>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="BoounionPLC.rc">
diff --git a/SourceCode/Bond/BoounionPLC/BoounionPLCDlg.cpp b/SourceCode/Bond/BoounionPLC/BoounionPLCDlg.cpp
index 70c30d3..1f8db8c 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"
@@ -502,24 +503,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) {
diff --git a/SourceCode/Bond/BoounionPLC/Resource.h b/SourceCode/Bond/BoounionPLC/Resource.h
index 9dfbd5d..d3ec31a 100644
--- a/SourceCode/Bond/BoounionPLC/Resource.h
+++ b/SourceCode/Bond/BoounionPLC/Resource.h
Binary files differ
--
Gitblit v1.9.3