From 3e0ceaf4e569ea1f57a14de2f6135d1f1a50d080 Mon Sep 17 00:00:00 2001
From: mrDarker <mr.darker@163.com>
Date: 星期三, 27 八月 2025 13:47:31 +0800
Subject: [PATCH] Merge branch 'clh' into liuyang
---
SourceCode/Bond/EAPSimulator/CPJsDlg.cpp | 161 +++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 161 insertions(+), 0 deletions(-)
diff --git a/SourceCode/Bond/EAPSimulator/CPJsDlg.cpp b/SourceCode/Bond/EAPSimulator/CPJsDlg.cpp
new file mode 100644
index 0000000..212291f
--- /dev/null
+++ b/SourceCode/Bond/EAPSimulator/CPJsDlg.cpp
@@ -0,0 +1,161 @@
+锘�// CPJsDlg.cpp: 瀹炵幇鏂囦欢
+//
+
+#include "pch.h"
+#include "EAPSimulator.h"
+#include "CPJsDlg.h"
+#include "afxdialogex.h"
+
+
+// CPJsDlg 瀵硅瘽妗�
+
+IMPLEMENT_DYNAMIC(CPJsDlg, CDialogEx)
+
+CPJsDlg::CPJsDlg(CWnd* pParent /*=nullptr*/)
+ : CDialogEx(IDD_DIALOG_PJS, pParent)
+{
+
+}
+
+CPJsDlg::~CPJsDlg()
+{
+ for (auto item : m_pjs) {
+ delete item;
+ }
+ m_pjs.clear();
+}
+
+void CPJsDlg::DoDataExchange(CDataExchange* pDX)
+{
+ CDialogEx::DoDataExchange(pDX);
+}
+
+
+BEGIN_MESSAGE_MAP(CPJsDlg, CDialogEx)
+ ON_BN_CLICKED(IDC_BUTTON_ADD, &CPJsDlg::OnBnClickedButtonAdd)
+ ON_BN_CLICKED(IDC_BUTTON_DELETE, &CPJsDlg::OnBnClickedButtonDelete)
+ ON_BN_CLICKED(IDC_BUTTON_SEND, &CPJsDlg::OnBnClickedButtonSend)
+END_MESSAGE_MAP()
+
+
+// CPJsDlg 娑堟伅澶勭悊绋嬪簭
+
+
+void CPJsDlg::OnBnClickedButtonAdd()
+{
+ // TODO: 鍦ㄦ娣诲姞鎺т欢閫氱煡澶勭悊绋嬪簭浠g爜
+}
+
+void CPJsDlg::OnBnClickedButtonDelete()
+{
+ CListCtrl* pListCtrl = (CListCtrl*)GetDlgItem(IDC_LIST1);
+ int nSel = pListCtrl->GetNextItem(-1, LVNI_SELECTED);
+
+ if (nSel != -1) {
+ SERVO::CProcessJob* pj = (SERVO::CProcessJob*)pListCtrl->GetItemData(nSel);
+ for (auto iter = m_pjs.begin(); iter != m_pjs.end(); ++iter) {
+ if (*iter == pj) {
+ delete (*iter);
+ m_pjs.erase(iter);
+ break;
+ }
+ }
+ }
+
+ pListCtrl->DeleteItem(nSel);
+}
+
+void CPJsDlg::OnBnClickedButtonSend()
+{
+ theApp.m_model.m_pHsmsActive->hsmsPRJobMultiCreate(m_pjs);
+}
+
+BOOL CPJsDlg::OnInitDialog()
+{
+ CDialogEx::OnInitDialog();
+
+
+ // 鎶ヨ〃鎺т欢
+ CListCtrl* pListCtrl = (CListCtrl*)GetDlgItem(IDC_LIST1);
+ DWORD dwStyle = pListCtrl->GetExtendedStyle();
+ dwStyle |= LVS_EX_FULLROWSELECT;
+ dwStyle |= LVS_EX_GRIDLINES;
+ pListCtrl->SetExtendedStyle(dwStyle);
+
+ HIMAGELIST imageList = ImageList_Create(24, 24, ILC_COLOR24, 1, 1);
+ ListView_SetImageList(pListCtrl->GetSafeHwnd(), imageList, LVSIL_SMALL);
+ pListCtrl->InsertColumn(0, _T(""), LVCFMT_RIGHT, 0);
+ pListCtrl->InsertColumn(1, _T("PJ ID"), LVCFMT_LEFT, 100);
+ pListCtrl->InsertColumn(2, _T("Carrier1 & Slots"), LVCFMT_LEFT, 180);
+ pListCtrl->InsertColumn(3, _T("Carrier2 & Slots"), LVCFMT_LEFT, 180);
+ pListCtrl->InsertColumn(4, _T("Carrier3 & Slots"), LVCFMT_LEFT, 180);
+ pListCtrl->InsertColumn(5, _T("Carrier4 & Slots"), LVCFMT_LEFT, 180);
+ pListCtrl->InsertColumn(6, _T("PPID"), LVCFMT_LEFT, 180);
+
+
+
+ // 鍒涘缓鐢ㄤ簬娴嬭瘯鐨凱J
+ {
+ SERVO::CProcessJob* pj = new SERVO::CProcessJob("PJ0001");
+ std::vector<uint8_t> slots1{ 1, 2, 3 };
+ pj->addCarrier("CID1001", slots1);
+ pj->setRecipe(SERVO::RecipeMethod::NoTuning, "P1001");
+ m_pjs.push_back(pj);
+ }
+ {
+ SERVO::CProcessJob* pj = new SERVO::CProcessJob("PJ0002");
+ std::vector<uint8_t> slots1{ 1, 3 };
+ pj->addCarrier("CID1002", slots1);
+ std::vector<uint8_t> slots2{ 1};
+ pj->addCarrier("CID1003", slots2);
+ pj->setRecipe(SERVO::RecipeMethod::NoTuning, "R002");
+ m_pjs.push_back(pj);
+ }
+ {
+ SERVO::CProcessJob* pj = new SERVO::CProcessJob("PJ0003");
+ std::vector<uint8_t> slots1{ 1, 2, 3, 5 };
+ pj->addCarrier("CID1004", slots1);
+ pj->setRecipe(SERVO::RecipeMethod::NoTuning, "P1001");
+ m_pjs.push_back(pj);
+ }
+
+ // 鏄剧ず鍒版姤琛ㄤ腑
+ for (auto item : m_pjs) {
+ AddPjToListCtrl(item);
+ }
+
+
+ return TRUE; // return TRUE unless you set the focus to a control
+ // 寮傚父: OCX 灞炴�ч〉搴旇繑鍥� FALSE
+}
+
+void CPJsDlg::AddPjToListCtrl(SERVO::CProcessJob* pj)
+{
+ CListCtrl* pListCtrl = (CListCtrl*)GetDlgItem(IDC_LIST1);
+ pListCtrl->InsertItem(0, _T(""));
+ pListCtrl->SetItemData(0, (DWORD_PTR)pj);
+ pListCtrl->SetItemText(0, 1, pj->id().c_str());
+ pListCtrl->SetItemText(0, 6, pj->recipeSpec().c_str());
+
+ auto carries = pj->carriers();
+ for (int i = 0; i < min(4, carries.size()); i++) {
+ pListCtrl->SetItemText(0, 2 + i, GetFormatString(carries[i])); ;
+ }
+}
+
+CString CPJsDlg::GetFormatString(SERVO::CarrierSlotInfo& csi)
+{
+ CString strRet;
+ strRet.Append(csi.carrierId.c_str());
+ strRet.Append("<");
+ int size = min(8, csi.slots.size());
+ for (int i = 0; i < size; i++) {
+ strRet.Append(std::to_string(csi.slots[i]).c_str());
+ if (i != size - 1) {
+ strRet.Append(",");
+ }
+ }
+ strRet.Append(">");
+
+ return strRet;
+}
\ No newline at end of file
--
Gitblit v1.9.3