From a056810ab4c5fa63777f6fdddfeb190bbd9a6f54 Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期一, 08 九月 2025 14:05:25 +0800
Subject: [PATCH] Merge branch 'liuyang'
---
SourceCode/Bond/Servo/Servo.vcxproj | 2
SourceCode/Bond/Servo/Servo.vcxproj.filters | 2
SourceCode/Bond/Servo/resource.h | 0
SourceCode/Bond/Servo/DeviceRecipeParamDlg.h | 34 +++++++++++
SourceCode/Bond/Servo/DeviceRecipeParamDlg.cpp | 113 +++++++++++++++++++++++++++++++++++++
SourceCode/Bond/Servo/Servo.rc | 0
SourceCode/Bond/Servo/PageRecipe.cpp | 11 +++
7 files changed, 161 insertions(+), 1 deletions(-)
diff --git a/SourceCode/Bond/Servo/DeviceRecipeParamDlg.cpp b/SourceCode/Bond/Servo/DeviceRecipeParamDlg.cpp
new file mode 100644
index 0000000..02dfd83
--- /dev/null
+++ b/SourceCode/Bond/Servo/DeviceRecipeParamDlg.cpp
@@ -0,0 +1,113 @@
+锘�// DeviceRecipeParamDlg.cpp: 瀹炵幇鏂囦欢
+//
+
+#include "stdafx.h"
+#include "Servo.h"
+#include "afxdialogex.h"
+#include "DeviceRecipeParamDlg.h"
+
+
+// CDeviceRecipeParamDlg 瀵硅瘽妗�
+
+IMPLEMENT_DYNAMIC(CDeviceRecipeParamDlg, CDialogEx)
+
+CDeviceRecipeParamDlg::CDeviceRecipeParamDlg(CWnd* pParent /*=nullptr*/)
+ : CDialogEx(IDD_DIALOG_DEVICE_RECIPE_PARAM, pParent)
+{
+ m_pEquipment = nullptr;
+ m_nDeviceRecipeID = 0;
+ m_strDeviceRecipeName = _T("");
+}
+
+CDeviceRecipeParamDlg::~CDeviceRecipeParamDlg()
+{
+}
+
+void CDeviceRecipeParamDlg::setEquipment(SERVO::CEquipment* pEquipment)
+{
+ m_pEquipment = pEquipment;
+}
+
+void CDeviceRecipeParamDlg::setDeviceRecipeID(int nDeviceRecipeID)
+{
+ m_nDeviceRecipeID = nDeviceRecipeID;
+}
+
+void CDeviceRecipeParamDlg::setDeviceRecipeName(const CString& strDeviceRecipeName)
+{
+ m_strDeviceRecipeName = strDeviceRecipeName;
+}
+
+void CDeviceRecipeParamDlg::DoDataExchange(CDataExchange* pDX)
+{
+ CDialogEx::DoDataExchange(pDX);
+ DDX_Control(pDX, IDC_LIST_RECIPE_PARAM, m_wndRecipeParamList);
+}
+
+
+BEGIN_MESSAGE_MAP(CDeviceRecipeParamDlg, CDialogEx)
+END_MESSAGE_MAP()
+
+
+// CDeviceRecipeParamDlg 娑堟伅澶勭悊绋嬪簭
+
+BOOL CDeviceRecipeParamDlg::OnInitDialog()
+{
+ CDialogEx::OnInitDialog();
+
+ // TODO: 鍦ㄦ娣诲姞棰濆鐨勫垵濮嬪寲
+ CRect rc;
+ m_wndRecipeParamList.GetClientRect(&rc);
+ int nColWidth = rc.Width() / 2;
+ m_wndRecipeParamList.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);
+ m_wndRecipeParamList.InsertColumn(0, _T("鍙傛暟鍚�"), LVCFMT_LEFT, nColWidth);
+ m_wndRecipeParamList.InsertColumn(1, _T("鍙傛暟鍊�"), LVCFMT_LEFT, nColWidth);
+
+ if (nullptr == m_pEquipment) {
+ return FALSE;
+ }
+
+ CString strTitle;
+ if (!m_strDeviceRecipeName.IsEmpty()) {
+ strTitle.Format(_T("%s - %s 閰嶆柟鍙傛暟"), m_pEquipment->getName().c_str(), m_strDeviceRecipeName);
+ }
+ else {
+ strTitle.Format(_T("%s 閰嶆柟鍙傛暟"), m_pEquipment->getName().c_str());
+ }
+ SetWindowText(strTitle);
+
+ SERVO::CRecipeList* pRecipeList = m_pEquipment->getRecipeList(0);
+ ASSERT(pRecipeList);
+ auto rawDatas = pRecipeList->getParamsRawData();
+ for (auto item : rawDatas) {
+ if (m_nDeviceRecipeID != 0 && item.first != m_nDeviceRecipeID) {
+ continue;
+ }
+
+ std::vector<CParam> params;
+ m_pEquipment->parsingParams((const char*)item.second.data(), item.second.size(), params);
+ for (auto p : params) {
+ CString strName(p.getName().c_str());
+ CString strValue;
+
+ switch (p.getValueType()) {
+ case PVT_INT:
+ strValue.Format(_T("%d"), p.getIntValue());
+ break;
+ case PVT_DOUBLE:
+ strValue.Format(_T("%.6f"), p.getDoubleValue());
+ break;
+ default:
+ strValue = _T("鏈煡绫诲瀷");
+ break;
+ }
+
+ int nCount = m_wndRecipeParamList.GetItemCount();
+ int nIndex = m_wndRecipeParamList.InsertItem(nCount, strName);
+ m_wndRecipeParamList.SetItemText(nIndex, 1, strValue);
+ }
+ }
+
+ return TRUE; // return TRUE unless you set the focus to a control
+ // 寮傚父: OCX 灞炴�ч〉搴旇繑鍥� FALSE
+}
diff --git a/SourceCode/Bond/Servo/DeviceRecipeParamDlg.h b/SourceCode/Bond/Servo/DeviceRecipeParamDlg.h
new file mode 100644
index 0000000..d273c84
--- /dev/null
+++ b/SourceCode/Bond/Servo/DeviceRecipeParamDlg.h
@@ -0,0 +1,34 @@
+锘�#pragma once
+#include "afxdialogex.h"
+
+
+// CDeviceRecipeParamDlg 瀵硅瘽妗�
+
+class CDeviceRecipeParamDlg : public CDialogEx
+{
+ DECLARE_DYNAMIC(CDeviceRecipeParamDlg)
+
+public:
+ CDeviceRecipeParamDlg(CWnd* pParent = nullptr); // 鏍囧噯鏋勯�犲嚱鏁�
+ virtual ~CDeviceRecipeParamDlg();
+
+ void setEquipment(SERVO::CEquipment* pEquipment);
+ void setDeviceRecipeID(int nDeviceRecipeID);
+ void setDeviceRecipeName(const CString& strDeviceRecipeName);
+
+// 瀵硅瘽妗嗘暟鎹�
+#ifdef AFX_DESIGN_TIME
+ enum { IDD = IDD_DIALOG_DEVICE_RECIPE_PARAM };
+#endif
+
+protected:
+ virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 鏀寔
+ virtual BOOL OnInitDialog();
+ DECLARE_MESSAGE_MAP()
+
+private:
+ int m_nDeviceRecipeID;
+ CString m_strDeviceRecipeName;
+ SERVO::CEquipment* m_pEquipment;
+ CListCtrl m_wndRecipeParamList;
+};
diff --git a/SourceCode/Bond/Servo/PageRecipe.cpp b/SourceCode/Bond/Servo/PageRecipe.cpp
index 05ee4ad..8984870 100644
--- a/SourceCode/Bond/Servo/PageRecipe.cpp
+++ b/SourceCode/Bond/Servo/PageRecipe.cpp
@@ -8,6 +8,7 @@
#include "MsgDlg.h"
#include "InputDialog.h"
#include "RecipeDeviceBindDlg.h"
+#include "DeviceRecipeParamDlg.h"
// CPageRecipe 瀵硅瘽妗�
@@ -588,17 +589,25 @@
return;
}
- CString strText = m_listPPID.GetItemText(nItem, 2);
+ CString strRecipeID = m_listPPID.GetItemText(nItem, 2);
+ CString strRecipeName = m_listPPID.GetItemText(nItem, 3);
CComboBox* pComboBox = (CComboBox*)GetDlgItem(IDC_COMBO_EQUIPMENT);
int nEqSel = pComboBox->GetCurSel();
if (nEqSel == CB_ERR) {
return;
}
+ int nRecipeID = _ttoi(strRecipeID);
SERVO::CEquipment* pEq = (SERVO::CEquipment*)pComboBox->GetItemDataPtr(nEqSel);
if (pEq == nullptr) {
return;
}
+
+ CDeviceRecipeParamDlg dlg(this);
+ dlg.setDeviceRecipeID(nRecipeID);
+ dlg.setDeviceRecipeName(strRecipeName);
+ dlg.setEquipment(pEq);
+ dlg.DoModal();
}
void CPageRecipe::OnCbnSelchangeComboEquipment()
diff --git a/SourceCode/Bond/Servo/Servo.rc b/SourceCode/Bond/Servo/Servo.rc
index 6001bb6..6c21d7d 100644
--- a/SourceCode/Bond/Servo/Servo.rc
+++ b/SourceCode/Bond/Servo/Servo.rc
Binary files differ
diff --git a/SourceCode/Bond/Servo/Servo.vcxproj b/SourceCode/Bond/Servo/Servo.vcxproj
index 318e982..fb0ab28 100644
--- a/SourceCode/Bond/Servo/Servo.vcxproj
+++ b/SourceCode/Bond/Servo/Servo.vcxproj
@@ -233,6 +233,7 @@
<ClInclude Include="CRobotTaskDlg.h" />
<ClInclude Include="CSVData.h" />
<ClInclude Include="CVariable.h" />
+ <ClInclude Include="DeviceRecipeParamDlg.h" />
<ClInclude Include="GlassJson.h" />
<ClInclude Include="GridControl\CellRange.h" />
<ClInclude Include="GridControl\GridCell.h" />
@@ -403,6 +404,7 @@
<ClCompile Include="CRobotTaskDlg.cpp" />
<ClCompile Include="CSVData.cpp" />
<ClCompile Include="CVariable.cpp" />
+ <ClCompile Include="DeviceRecipeParamDlg.cpp" />
<ClCompile Include="GlassJson.cpp" />
<ClCompile Include="GridControl\GridCell.cpp" />
<ClCompile Include="GridControl\GridCellBase.cpp" />
diff --git a/SourceCode/Bond/Servo/Servo.vcxproj.filters b/SourceCode/Bond/Servo/Servo.vcxproj.filters
index 6048cc1..bc72b7f 100644
--- a/SourceCode/Bond/Servo/Servo.vcxproj.filters
+++ b/SourceCode/Bond/Servo/Servo.vcxproj.filters
@@ -192,6 +192,7 @@
<ClCompile Include="..\jsoncpp\lib_json\json_writer.cpp">
<Filter>JsonCpp</Filter>
</ClCompile>
+ <ClCompile Include="DeviceRecipeParamDlg.cpp" />
<ClCompile Include="CSVData.cpp" />
</ItemGroup>
<ItemGroup>
@@ -409,6 +410,7 @@
<ClInclude Include="..\jsoncpp\lib_json\json_batchallocator.h">
<Filter>JsonCpp</Filter>
</ClInclude>
+ <ClInclude Include="DeviceRecipeParamDlg.h" />
<ClInclude Include="CSVData.h" />
</ItemGroup>
<ItemGroup>
diff --git a/SourceCode/Bond/Servo/resource.h b/SourceCode/Bond/Servo/resource.h
index e0cd278..ad5b964 100644
--- a/SourceCode/Bond/Servo/resource.h
+++ b/SourceCode/Bond/Servo/resource.h
Binary files differ
--
Gitblit v1.9.3