| SourceCode/Bond/BoounionPLC/AddPLCInfo.cpp | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| SourceCode/Bond/BoounionPLC/AddPLCInfo.h | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| SourceCode/Bond/BoounionPLC/BoounionPLC.rc | 补丁 | 查看 | 原始文档 | blame | 历史 | |
| SourceCode/Bond/BoounionPLC/BoounionPLC.vcxproj | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| SourceCode/Bond/BoounionPLC/BoounionPLC.vcxproj.filters | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| SourceCode/Bond/BoounionPLC/BoounionPLCDlg.cpp | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| SourceCode/Bond/BoounionPLC/Resource.h | 补丁 | 查看 | 原始文档 | blame | 历史 |
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: 卿¤æ·»å æ§ä»¶éç¥å¤çç¨åºä»£ç 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(); } 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; }; SourceCode/Bond/BoounionPLC/BoounionPLC.rcBinary files differ
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" /> 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"> 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) { SourceCode/Bond/BoounionPLC/Resource.hBinary files differ