From 726f0553fa435809d10c8a33abe46473ee975db1 Mon Sep 17 00:00:00 2001
From: LAPTOP-T815PCOQ\25526 <mr.liuyang@126.com>
Date: 星期二, 10 十二月 2024 16:37:00 +0800
Subject: [PATCH] 1. 完善axis细部设定人机交互(数据填充和文件保存)
---
SourceCode/Bond/BondEq/Resource.h | 0
SourceCode/Bond/BondEq/View/AxisDetailSettingsDlg.cpp | 293 ++++++++++++++++++++++++++++++++++++++++++++++++
SourceCode/Bond/BondEq/BondEq.rc | 0
SourceCode/Bond/BondEq/View/AxisDetailSettingsDlg.h | 6
SourceCode/Bond/BondEq/FileManager/RecipeManager.cpp | 14 +-
SourceCode/Bond/BondEq/FileManager/RecipeManager.h | 4
6 files changed, 303 insertions(+), 14 deletions(-)
diff --git a/SourceCode/Bond/BondEq/BondEq.rc b/SourceCode/Bond/BondEq/BondEq.rc
index 4a24646..fd6b3aa 100644
--- a/SourceCode/Bond/BondEq/BondEq.rc
+++ b/SourceCode/Bond/BondEq/BondEq.rc
Binary files differ
diff --git a/SourceCode/Bond/BondEq/FileManager/RecipeManager.cpp b/SourceCode/Bond/BondEq/FileManager/RecipeManager.cpp
index dcd0554..86c978d 100644
--- a/SourceCode/Bond/BondEq/FileManager/RecipeManager.cpp
+++ b/SourceCode/Bond/BondEq/FileManager/RecipeManager.cpp
@@ -37,8 +37,8 @@
axisInfo.number = axisNode.attribute("number").value();
axisInfo.description = axisNode.attribute("description").value();
axisInfo.startAddress = axisNode.attribute("start_address").value();
- axisInfo.maxPositioningSpeed = axisNode.attribute("maxPositioningSpeed").as_double();
- axisInfo.maxManualSpeed = axisNode.attribute("maxManualSpeed").as_double();
+ //axisInfo.maxPositioningSpeed = axisNode.attribute("maxPositioningSpeed").as_double();
+ //axisInfo.maxManualSpeed = axisNode.attribute("maxManualSpeed").as_double();
// 加载 ValueRange 值
axisInfo.jogDistance = ValueRange(
@@ -115,8 +115,8 @@
axisNode.append_attribute("number") = axisInfo.number.c_str();
axisNode.append_attribute("description") = axisInfo.description.c_str();
axisNode.append_attribute("start_address") = axisInfo.startAddress.c_str();
- axisNode.append_attribute("maxPositioningSpeed") = axisInfo.maxPositioningSpeed;
- axisNode.append_attribute("maxManualSpeed") = axisInfo.maxManualSpeed;
+ //axisNode.append_attribute("maxPositioningSpeed") = axisInfo.maxPositioningSpeed;
+ //axisNode.append_attribute("maxManualSpeed") = axisInfo.maxManualSpeed;
// 保存 ValueRange 值
auto jog_distance = axisNode.append_child("jog_distance");
@@ -169,8 +169,8 @@
AxisInfo axisInfo;
axisInfo.id = axisId;
axisInfo.positioningPointCount = 25;
- axisInfo.maxPositioningSpeed = 100.0;
- axisInfo.maxManualSpeed = 100.0;
+ //axisInfo.maxPositioningSpeed = 100.0;
+ //axisInfo.maxManualSpeed = 100.0;
axisInfo.number = "M100-M" + std::to_string(axisId);
axisInfo.description = "Default_Axis" + std::to_string(axisId);
axisInfo.startAddress = "ZR" + std::to_string(10000 + (axisId - 1) * 300);
@@ -206,7 +206,7 @@
}
// 如果没有找到该轴,返回一个默认的无效 AxisInfo
- return AxisInfo{ -1, 0, 0.0, 0.0, "", "", "", ValueRange(), ValueRange(), ValueRange(), ValueRange(), ValueRange(), {} };
+ return AxisInfo{ -1, 0, /*0.0, 0.0,*/ "", "", "", ValueRange(), ValueRange(), ValueRange(), ValueRange(), ValueRange(), {} };
}
// 更新轴信息
diff --git a/SourceCode/Bond/BondEq/FileManager/RecipeManager.h b/SourceCode/Bond/BondEq/FileManager/RecipeManager.h
index 547c378..f0c873c 100644
--- a/SourceCode/Bond/BondEq/FileManager/RecipeManager.h
+++ b/SourceCode/Bond/BondEq/FileManager/RecipeManager.h
@@ -30,8 +30,8 @@
struct AxisInfo {
int id; // 轴ID
int positioningPointCount; // 定位点数
- double maxPositioningSpeed; // 定位速度上限
- double maxManualSpeed; // 手动速度上限
+ //double maxPositioningSpeed; // 定位速度上限
+ //double maxManualSpeed; // 手动速度上限
std::string number; // 轴编号
std::string description; // 轴描述
std::string startAddress; // 起始地址
diff --git a/SourceCode/Bond/BondEq/Resource.h b/SourceCode/Bond/BondEq/Resource.h
index 915361d..19fb630 100644
--- a/SourceCode/Bond/BondEq/Resource.h
+++ b/SourceCode/Bond/BondEq/Resource.h
Binary files differ
diff --git a/SourceCode/Bond/BondEq/View/AxisDetailSettingsDlg.cpp b/SourceCode/Bond/BondEq/View/AxisDetailSettingsDlg.cpp
index 893d77b..e010f8b 100644
--- a/SourceCode/Bond/BondEq/View/AxisDetailSettingsDlg.cpp
+++ b/SourceCode/Bond/BondEq/View/AxisDetailSettingsDlg.cpp
@@ -5,6 +5,8 @@
#include "BondEq.h"
#include "afxdialogex.h"
#include "AxisDetailSettingsDlg.h"
+#include "NewCellTypes/GridCellCheck.h"
+#include "NewCellTypes/GridCellNumeric.h"
// CAxisDetailSettingsDlg 瀵硅瘽妗�
@@ -32,6 +34,126 @@
m_pPLC = pPLC;
}
+void CAxisDetailSettingsDlg::InitAnchorPontManager()
+{
+ if (m_grid.GetSafeHwnd() == NULL)
+ return;
+
+ int nRows = 1;
+ int nCols = 6;
+
+ int nFixRows = 1;
+ int nFixCols = 0;
+ int nRowIdx = 0;
+ int nColIdx = 0;
+
+ m_grid.DeleteAllItems();
+ m_grid.SetVirtualMode(FALSE);
+ m_grid.GetDefaultCell(TRUE, FALSE)->SetBackClr(g_nGridFixCellColor); // 璁剧疆鍥哄畾琛岃儗鏅壊
+ m_grid.GetDefaultCell(FALSE, TRUE)->SetBackClr(g_nGridFixCellColor); // 璁剧疆鍥哄畾鍒楄儗鏅壊
+ m_grid.GetDefaultCell(FALSE, FALSE)->SetBackClr(g_nGridCellColor); // 璁剧疆鍗曞厓鏍艰儗鏅壊
+ m_grid.SetFixedTextColor(g_nGridFixFontColor); // 璁剧疆鍥哄畾琛屽垪瀛椾綋棰滆壊
+
+ m_grid.SetRowCount(nRows);
+ m_grid.SetColumnCount(nCols);
+ m_grid.SetFixedRowCount(nFixRows);
+ m_grid.SetFixedColumnCount(nFixCols);
+
+ // Col
+ m_grid.SetColumnWidth(nColIdx, 10);
+ m_grid.SetItemText(nRowIdx, nColIdx++, _T("No."));
+ m_grid.SetColumnWidth(nColIdx, 10);
+ m_grid.SetItemText(nRowIdx, nColIdx++, _T("婵�娲�"));
+ m_grid.SetColumnWidth(nColIdx, 50);
+ m_grid.SetItemText(nRowIdx, nColIdx++, _T("鏈�灏忓��"));
+ m_grid.SetColumnWidth(nColIdx, 50);
+ m_grid.SetItemText(nRowIdx, nColIdx++, _T("褰撳墠鍊�"));
+ m_grid.SetColumnWidth(nColIdx, 50);
+ m_grid.SetItemText(nRowIdx, nColIdx++, _T("鏈�澶у��"));
+ m_grid.SetColumnWidth(nColIdx, 120);
+ m_grid.SetItemText(nRowIdx, nColIdx++, _T("鎻忚堪"));
+
+ m_grid.SetFixedRowSelection(FALSE);
+ m_grid.SetFixedColumnSelection(FALSE);
+ m_grid.SetEditable(TRUE);
+ m_grid.SetRowResize(FALSE);
+ m_grid.SetColumnResize(TRUE);
+ m_grid.ExpandColumnsToFit(TRUE);
+ m_grid.SetListMode(TRUE); // 鍚敤鍒楄〃妯″紡
+ m_grid.EnableSelection(TRUE); // 鍚敤閫夋嫨
+ m_grid.SetSingleRowSelection(TRUE); // 鑷姩鏁磋楂樹寒锛堥檺鍒朵负鍗曡閫夋嫨锛�
+ m_grid.ExpandLastColumn(); // 鏈�鍚庝竴鍒楀~鍏呯綉鏍�
+
+ FillAnchorPontManager();
+}
+
+void CAxisDetailSettingsDlg::FillAnchorPontManager()
+{
+ RecipeManager& g_recipeManager = RecipeManager::getInstance();
+ auto axisDetails = g_recipeManager.getAxis(m_nAxisNO);
+
+ int nRowIndex = 1;
+ int nPositionsSize = (int)axisDetails.positions.size();
+
+ // 娓呴櫎鏁版嵁琛岋紝淇濈暀琛ㄥご
+ for (int i = 1; i < m_grid.GetRowCount(); i++) {
+ m_grid.DeleteRow(i);
+ }
+
+ // 璁剧疆琛ㄦ牸琛屾暟
+ m_grid.SetRowCount(axisDetails.positioningPointCount + 1);
+ auto SetCellText = [this](int nRow, int nCol, const CString& strText, UINT nState = GVIS_READONLY) {
+ m_grid.SetItemText(nRow, nCol, strText);
+ m_grid.SetItemState(nRow, nCol, nState);
+ };
+
+ auto FormatFloatToString = [](double dValue) -> CString {
+ CString strText;
+ strText.Format(_T("%.3f"), dValue);
+ return strText;
+ };
+
+ for (int nIndex = 0; nIndex < axisDetails.positioningPointCount; nIndex++) {
+ m_grid.SetItemState(nIndex, 0, GVIS_READONLY); // 搴忓彿鍒楄缃彧璇�
+ SetCellText(nRowIndex, 0, CString(std::to_string(nRowIndex).c_str()));
+
+ if (nIndex >= nPositionsSize) {
+ // 娣诲姞鏂拌鐨勯粯璁ゅ��
+ if (m_grid.SetCellType(nRowIndex, 1, RUNTIME_CLASS(CGridCellCheck))) {
+ auto* pCell = static_cast<CGridCellCheck*>(m_grid.GetCell(nRowIndex, 1));
+ pCell->SetCheck(TRUE);
+ }
+
+ SetCellText(nRowIndex, 2, FormatFloatToString(0.0), GVIS_MODIFIED);
+ SetCellText(nRowIndex, 3, FormatFloatToString(1.0), GVIS_MODIFIED);
+ SetCellText(nRowIndex, 4, FormatFloatToString(10.0), GVIS_MODIFIED);
+ SetCellText(nRowIndex, 5, CString(_T("Position ")) + CString(std::to_string(nIndex + 1).c_str()), GVIS_MODIFIED);
+ }
+ else {
+ const auto& enPosition = axisDetails.positions[nIndex];
+
+ if (m_grid.SetCellType(nRowIndex, 1, RUNTIME_CLASS(CGridCellCheck))) {
+ auto* pCell = static_cast<CGridCellCheck*>(m_grid.GetCell(nRowIndex, 1));
+ pCell->SetCheck(enPosition.isEnable);
+ }
+
+ UINT nCellState = enPosition.isEnable ? GVIS_MODIFIED : GVIS_READONLY;
+
+ SetCellText(nRowIndex, 2, FormatFloatToString(enPosition.range.minValue), nCellState);
+ SetCellText(nRowIndex, 3, FormatFloatToString(enPosition.range.currentValue), nCellState);
+ SetCellText(nRowIndex, 4, FormatFloatToString(enPosition.range.maxValue), nCellState);
+ SetCellText(nRowIndex, 5, CString(enPosition.description.c_str()), nCellState);
+ }
+
+ nRowIndex++;
+ }
+
+ m_grid.ExpandColumnsToFit(FALSE);
+ m_grid.ExpandLastColumn();
+ m_grid.Invalidate();
+ m_grid.UpdateWindow();
+}
+
void CAxisDetailSettingsDlg::UpdateAxisDetailSettings()
{
// 鑾峰彇杞存暟鎹�
@@ -54,8 +176,8 @@
m_staticAxisDescription.SetWindowText(CString(axisDetails.description.c_str())); // 杞存弿杩�
m_staticStartAddress.SetWindowText(CString(axisDetails.startAddress.c_str())); // 璧峰鍦板潃
- GetDlgItem(IDC_EDIT_AXIS_POSITIONING_SPEED_LIMIT)->SetWindowText(formatDouble(axisDetails.maxPositioningSpeed)); // 瀹氫綅閫熷害涓婇檺
- GetDlgItem(IDC_EDIT_AXIS_JOG_SPEED_LIMIT)->SetWindowText(formatDouble(axisDetails.maxManualSpeed)); // 鎵嬪姩閫熷害涓婇檺
+ //GetDlgItem(IDC_EDIT_AXIS_POSITIONING_SPEED_LIMIT)->SetWindowText(formatDouble(axisDetails.maxPositioningSpeed)); // 瀹氫綅閫熷害涓婇檺
+ //GetDlgItem(IDC_EDIT_AXIS_JOG_SPEED_LIMIT)->SetWindowText(formatDouble(axisDetails.maxManualSpeed)); // 鎵嬪姩閫熷害涓婇檺
GetDlgItem(IDC_EDIT_AXIS_POSITIONING_POINTS)->SetWindowText(formatInt(axisDetails.positioningPointCount)); // 瀹氫綅鐐规暟
// 寰姩閲�
@@ -90,12 +212,14 @@
DDX_Control(pDX, IDC_STATIC_AXIS_NUMBER, m_staticAxisNO);
DDX_Control(pDX, IDC_STATIC_AXIS_DESCRIP, m_staticAxisDescription);
DDX_Control(pDX, IDC_STATIC_START_ADDRESS, m_staticStartAddress);
- DDX_Control(pDX, IDC_CUSTOM_AXIS_ANCHOR_POINT, m_gridAxisDetailSettings);
+ DDX_Control(pDX, IDC_CUSTOM_AXIS_ANCHOR_POINT, m_grid);
}
BEGIN_MESSAGE_MAP(CAxisDetailSettingsDlg, CDialogEx)
+ ON_NOTIFY(NM_CLICK, IDC_CUSTOM_AXIS_ANCHOR_POINT, &CAxisDetailSettingsDlg::OnGridItemChanged)
ON_BN_CLICKED(IDC_BUTTON_AXIS_DETAIL_SETTINGS_SAVE, &CAxisDetailSettingsDlg::OnBnClickedButtonAxisDetailSettingsSave)
+ ON_BN_CLICKED(IDC_BUTTON_SET_AXIS_POSITIONING_POINTS, &CAxisDetailSettingsDlg::OnBnClickedButtonSetAxisPositioningPoints)
END_MESSAGE_MAP()
@@ -122,13 +246,174 @@
}
UpdateAxisDetailSettings();
+ InitAnchorPontManager();
return TRUE; // return TRUE unless you set the focus to a control
// 寮傚父: OCX 灞炴�ч〉搴旇繑鍥� FALSE
}
+void CAxisDetailSettingsDlg::OnGridItemChanged(NMHDR* pNotifyStruct, LRESULT* pResult)
+{
+ NM_GRIDVIEW* pItem = (NM_GRIDVIEW*)pNotifyStruct;
+ int nRow = pItem->iRow;
+ int nCol = pItem->iColumn;
+
+ // 澶勭悊澶嶉�夋鐘舵�佸彉鍖�
+ if (nCol == 1) {
+ // 鑾峰彇澶嶉�夋鐨勫綋鍓嶇姸鎬�
+ CGridCellCheck* pCell = static_cast<CGridCellCheck*>(m_grid.GetCell(nRow, nCol));
+ BOOL bChecked = pCell->GetCheck();
+
+ // 澶勭悊澶嶉�夋鐘舵�佸彉鍖�
+ m_grid.SetItemState(nRow, 2, bChecked ? GVIS_MODIFIED : GVIS_READONLY);
+ m_grid.SetItemState(nRow, 3, bChecked ? GVIS_MODIFIED : GVIS_READONLY);
+ m_grid.SetItemState(nRow, 4, bChecked ? GVIS_MODIFIED : GVIS_READONLY);
+ m_grid.SetItemState(nRow, 5, bChecked ? GVIS_MODIFIED : GVIS_READONLY);
+ }
+
+ *pResult = 0;
+}
+
void CAxisDetailSettingsDlg::OnBnClickedButtonAxisDetailSettingsSave()
{
// TODO: 鍦ㄦ娣诲姞鎺т欢閫氱煡澶勭悊绋嬪簭浠g爜
- EndDialog(IDOK);
+ // 鑾峰彇杞存暟鎹�
+ RecipeManager& recipeManager = RecipeManager::getInstance();
+ auto& axisDetails = recipeManager.getAxis(m_nAxisNO);
+
+ // 浠庣晫闈㈡帶浠惰幏鍙栫敤鎴疯緭鍏ョ殑鏁版嵁骞舵洿鏂板埌 axisDetails
+
+ // 杞寸紪鍙枫�佹弿杩板拰璧峰鍦板潃
+ CString strAxisNo, strAxisDesc, strStartAddr;
+ m_staticAxisNO.GetWindowText(strAxisNo);
+ m_staticAxisDescription.GetWindowText(strAxisDesc);
+ m_staticStartAddress.GetWindowText(strStartAddr);
+
+ axisDetails.number = std::string(CT2A(strAxisNo));
+ axisDetails.description = std::string(CT2A(strAxisDesc));
+ axisDetails.startAddress = std::string(CT2A(strStartAddr));
+
+ // 瀹氫綅閫熷害涓婇檺
+ //CString strPosSpeedLimit;
+ //GetDlgItem(IDC_EDIT_AXIS_POSITIONING_SPEED_LIMIT)->GetWindowText(strPosSpeedLimit);
+ //axisDetails.maxPositioningSpeed = _ttof(strPosSpeedLimit); // 杞崲涓� double 绫诲瀷
+
+ // 鎵嬪姩閫熷害涓婇檺
+ //CString strJogSpeedLimit;
+ //GetDlgItem(IDC_EDIT_AXIS_JOG_SPEED_LIMIT)->GetWindowText(strJogSpeedLimit);
+ //axisDetails.maxManualSpeed = _ttof(strJogSpeedLimit);
+
+ // 瀹氫綅鐐规暟
+ CString strPosCount;
+ GetDlgItem(IDC_EDIT_AXIS_POSITIONING_POINTS)->GetWindowText(strPosCount);
+ axisDetails.positioningPointCount = _ttoi(strPosCount); // 杞崲涓� int 绫诲瀷
+
+ // 寰姩閲�
+ CString strJogDistanceMin, strJogDistanceCur, strJogDistanceMax;
+ GetDlgItem(IDC_EDIT_AXIS_MODITFY_MICROMENTUM_MIN)->GetWindowText(strJogDistanceMin);
+ GetDlgItem(IDC_EDIT_AXIS_MODITFY_MICROMENTUM)->GetWindowText(strJogDistanceCur);
+ GetDlgItem(IDC_EDIT_AXIS_MODITFY_MICROMENTUM_MAX)->GetWindowText(strJogDistanceMax);
+ axisDetails.jogDistance.minValue = _ttof(strJogDistanceMin);
+ axisDetails.jogDistance.currentValue = _ttof(strJogDistanceCur);
+ axisDetails.jogDistance.maxValue = _ttof(strJogDistanceMax);
+
+ // 鎵嬪姩閫熷害
+ CString strManualSpeedMin, strManualSpeedCur, strManualSpeedMax;
+ GetDlgItem(IDC_EDIT_AXIS_MODITFY_POS_MIN)->GetWindowText(strManualSpeedMin);
+ GetDlgItem(IDC_EDIT_AXIS_MODITFY_POS)->GetWindowText(strManualSpeedCur);
+ GetDlgItem(IDC_EDIT_AXIS_MODITFY_POS_MAX)->GetWindowText(strManualSpeedMax);
+ axisDetails.manualSpeed.minValue = _ttof(strManualSpeedMin);
+ axisDetails.manualSpeed.currentValue = _ttof(strManualSpeedCur);
+ axisDetails.manualSpeed.maxValue = _ttof(strManualSpeedMax);
+
+ // 鑷姩閫熷害
+ CString strAutoSpeedMin, strAutoSpeedCur, strAutoSpeedMax;
+ GetDlgItem(IDC_EDIT_AXIS_MODITFY_AUTO_SPEED_MIN)->GetWindowText(strAutoSpeedMin);
+ GetDlgItem(IDC_EDIT_AXIS_MODITFY_AUTO_SPEED)->GetWindowText(strAutoSpeedCur);
+ GetDlgItem(IDC_EDIT_AXIS_MODITFY_AUTO_SPEED_MAX)->GetWindowText(strAutoSpeedMax);
+ axisDetails.autoSpeed.minValue = _ttof(strAutoSpeedMin);
+ axisDetails.autoSpeed.currentValue = _ttof(strAutoSpeedCur);
+ axisDetails.autoSpeed.maxValue = _ttof(strAutoSpeedMax);
+
+ // 鍔犻�熸椂闂�
+ CString strAcceTimeMin, strAcceTimeCur, strAcceTimeMax;
+ GetDlgItem(IDC_EDIT_AXIS_MODITFY_ACCE_TIME_MIN)->GetWindowText(strAcceTimeMin);
+ GetDlgItem(IDC_EDIT_AXIS_MODITFY_ACCE_TIME)->GetWindowText(strAcceTimeCur);
+ GetDlgItem(IDC_EDIT_AXIS_MODITFY_ACCE_TIME_MAX)->GetWindowText(strAcceTimeMax);
+ axisDetails.accelerationTime.minValue = _ttof(strAcceTimeMin);
+ axisDetails.accelerationTime.currentValue = _ttof(strAcceTimeCur);
+ axisDetails.accelerationTime.maxValue = _ttof(strAcceTimeMax);
+
+ // 鍑忛�熸椂闂�
+ CString strDeceTimeMin, strDeceTimeCur, strDeceTimeMax;
+ GetDlgItem(IDC_EDIT_AXIS_MODITFY_DECE_TIME_MIN)->GetWindowText(strDeceTimeMin);
+ GetDlgItem(IDC_EDIT_AXIS_MODITFY_DECE_TIME)->GetWindowText(strDeceTimeCur);
+ GetDlgItem(IDC_EDIT_AXIS_MODITFY_DECE_TIME_MAX)->GetWindowText(strDeceTimeMax);
+ axisDetails.decelerationTime.minValue = _ttof(strDeceTimeMin);
+ axisDetails.decelerationTime.currentValue = _ttof(strDeceTimeCur);
+ axisDetails.decelerationTime.maxValue = _ttof(strDeceTimeMax);
+
+ // 濡傛灉 positioningPointCount 鍜� positions.size() 涓嶅悓锛屽垯璋冩暣澶у皬
+ if (axisDetails.positioningPointCount != (int)axisDetails.positions.size()) {
+ axisDetails.positions.resize(axisDetails.positioningPointCount);
+ }
+
+ // 鏇存柊琛ㄦ牸涓殑瀹氫綅鐐规暟鎹�
+ for (int i = 0; i < axisDetails.positioningPointCount; i++) {
+ auto& enPosition = axisDetails.positions[i];
+
+ // 浣胯兘鐘舵��
+ BOOL bIsChecked = ((CGridCellCheck*)m_grid.GetCell(i + 1, 1))->GetCheck();
+ enPosition.isEnable = bIsChecked;
+
+ // 鏈�灏忓�笺�佸綋鍓嶅�煎拰鏈�澶у��
+ CString strMin, strCur, strMax;
+ strMin = m_grid.GetItemText(i + 1, 2);
+ strCur = m_grid.GetItemText(i + 1, 3);
+ strMax = m_grid.GetItemText(i + 1, 4);
+ enPosition.range.minValue = _ttof(strMin);
+ enPosition.range.currentValue = _ttof(strCur);
+ enPosition.range.maxValue = _ttof(strMax);
+
+ // 鎻忚堪
+ CString strDesc;
+ strDesc = m_grid.GetItemText(i + 1, 5);
+ enPosition.description = std::string(CT2A(strDesc));
+ }
+
+ // 鏇存柊 RecipeManager 涓殑杞存暟鎹�
+ recipeManager.updateAxis(axisDetails);
+
+ // 淇濆瓨杞存暟鎹埌鏂囦欢
+ CString cstrMessage;
+ if (RecipeManager::getInstance().saveRecipe(std::string(CT2A(m_strRecipeName)))) {
+ cstrMessage.Format(_T("淇濆瓨杞� [%d] 缁嗛儴鍙傛暟鎴愬姛锛�"), m_nAxisNO);
+ SystemLogManager::getInstance().log(SystemLogManager::LogType::Operation, std::string(CT2A(cstrMessage)));
+ }
+ else {
+ cstrMessage.Format(_T("淇濆瓨杞� [%d] 缁嗛儴鍙傛暟澶辫触锛�"), m_nAxisNO);
+ SystemLogManager::getInstance().log(SystemLogManager::LogType::Error, std::string(CT2A(cstrMessage)));
+ }
+
+ AfxMessageBox(cstrMessage);
+}
+
+void CAxisDetailSettingsDlg::OnBnClickedButtonSetAxisPositioningPoints()
+{
+ // TODO: 鍦ㄦ娣诲姞鎺т欢閫氱煡澶勭悊绋嬪簭浠g爜
+ CString strPosCount;
+ GetDlgItem(IDC_EDIT_AXIS_POSITIONING_POINTS)->GetWindowText(strPosCount);
+ if (strPosCount.IsEmpty()) {
+ AfxMessageBox(_T("璇疯緭鍏ュ畾浣嶇偣鏁帮紒"));
+ return;
+ }
+
+ RecipeManager& recipeManager = RecipeManager::getInstance();
+ AxisInfo axisDetails = recipeManager.getAxis(m_nAxisNO);
+ axisDetails.positioningPointCount = _ttoi(strPosCount);
+
+ // 鏇存柊 RecipeManager 涓殑杞存暟鎹�
+ recipeManager.updateAxis(axisDetails);
+
+ FillAnchorPontManager();
}
diff --git a/SourceCode/Bond/BondEq/View/AxisDetailSettingsDlg.h b/SourceCode/Bond/BondEq/View/AxisDetailSettingsDlg.h
index ab3c04b..c3422e7 100644
--- a/SourceCode/Bond/BondEq/View/AxisDetailSettingsDlg.h
+++ b/SourceCode/Bond/BondEq/View/AxisDetailSettingsDlg.h
@@ -22,6 +22,8 @@
#endif
private:
+ void InitAnchorPontManager();
+ void FillAnchorPontManager();
void UpdateAxisDetailSettings();
@@ -36,11 +38,13 @@
// 鎺т欢
CStatic m_staticAxisNO, m_staticAxisDescription, m_staticStartAddress;
- CGridCtrl m_gridAxisDetailSettings;
+ CGridCtrl m_grid;
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 鏀寔
virtual BOOL OnInitDialog();
+ afx_msg void OnGridItemChanged(NMHDR* pNotifyStruct, LRESULT* pResult);
afx_msg void OnBnClickedButtonAxisDetailSettingsSave();
+ afx_msg void OnBnClickedButtonSetAxisPositioningPoints();
DECLARE_MESSAGE_MAP()
};
--
Gitblit v1.9.3