// AxisDetailSettingsDlg.cpp: 实现文件 // #include "stdafx.h" #include "BondEq.h" #include "afxdialogex.h" #include "AxisDetailSettingsDlg.h" // CAxisDetailSettingsDlg 对话框 IMPLEMENT_DYNAMIC(CAxisDetailSettingsDlg, CDialogEx) CAxisDetailSettingsDlg::CAxisDetailSettingsDlg(const CString& strRecipeName, int nAxisNO, CWnd* pParent /*=nullptr*/) : CDialogEx(IDD_DIALOG_AXIS_DETAIL_SETTINGS, pParent) { m_strRecipeName = strRecipeName; m_nAxisNO = nAxisNO; m_pPLC = nullptr; m_nInitialWidth = 0; m_nInitialHeight = 0; } CAxisDetailSettingsDlg::~CAxisDetailSettingsDlg() { } void CAxisDetailSettingsDlg::SetPLC(CPLC* pPLC) { ASSERT(pPLC); m_pPLC = pPLC; } void CAxisDetailSettingsDlg::UpdateAxisDetailSettings() { // 获取轴数据 RecipeManager& recipeManager = RecipeManager::getInstance(); auto axisDetails = recipeManager.getAxis(m_nAxisNO); auto formatDouble = [](double value) -> CString { CString str; str.Format(_T("%.3f"), value); return str; }; auto formatInt = [](int value) -> CString { CString str; str.Format(_T("%d"), value); return str; }; m_staticAxisNO.SetWindowText(CString(axisDetails.number.c_str())); // 轴编号 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_POINTS)->SetWindowText(formatInt(axisDetails.positioningPointCount)); // 定位点数 // 微动量 GetDlgItem(IDC_EDIT_AXIS_MODITFY_MICROMENTUM_MIN)->SetWindowText(formatDouble(axisDetails.jogDistance.minValue)); GetDlgItem(IDC_EDIT_AXIS_MODITFY_MICROMENTUM)->SetWindowText(formatDouble(axisDetails.jogDistance.currentValue)); GetDlgItem(IDC_EDIT_AXIS_MODITFY_MICROMENTUM_MAX)->SetWindowText(formatDouble(axisDetails.jogDistance.maxValue)); // 手动速度 GetDlgItem(IDC_EDIT_AXIS_MODITFY_POS_MIN)->SetWindowText(formatDouble(axisDetails.manualSpeed.minValue)); GetDlgItem(IDC_EDIT_AXIS_MODITFY_POS)->SetWindowText(formatDouble(axisDetails.manualSpeed.currentValue)); GetDlgItem(IDC_EDIT_AXIS_MODITFY_POS_MAX)->SetWindowText(formatDouble(axisDetails.manualSpeed.maxValue)); // 自动速度 GetDlgItem(IDC_EDIT_AXIS_MODITFY_AUTO_SPEED_MIN)->SetWindowText(formatDouble(axisDetails.autoSpeed.minValue)); GetDlgItem(IDC_EDIT_AXIS_MODITFY_AUTO_SPEED)->SetWindowText(formatDouble(axisDetails.autoSpeed.currentValue)); GetDlgItem(IDC_EDIT_AXIS_MODITFY_AUTO_SPEED_MAX)->SetWindowText(formatDouble(axisDetails.autoSpeed.maxValue)); // 加速时间 GetDlgItem(IDC_EDIT_AXIS_MODITFY_ACCE_TIME_MIN)->SetWindowText(formatDouble(axisDetails.accelerationTime.minValue)); GetDlgItem(IDC_EDIT_AXIS_MODITFY_ACCE_TIME)->SetWindowText(formatDouble(axisDetails.accelerationTime.currentValue)); GetDlgItem(IDC_EDIT_AXIS_MODITFY_ACCE_TIME_MAX)->SetWindowText(formatDouble(axisDetails.accelerationTime.maxValue)); // 减速时间 GetDlgItem(IDC_EDIT_AXIS_MODITFY_DECE_TIME_MIN)->SetWindowText(formatDouble(axisDetails.decelerationTime.minValue)); GetDlgItem(IDC_EDIT_AXIS_MODITFY_DECE_TIME)->SetWindowText(formatDouble(axisDetails.decelerationTime.currentValue)); GetDlgItem(IDC_EDIT_AXIS_MODITFY_DECE_TIME_MAX)->SetWindowText(formatDouble(axisDetails.decelerationTime.maxValue)); } void CAxisDetailSettingsDlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); 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); } BEGIN_MESSAGE_MAP(CAxisDetailSettingsDlg, CDialogEx) ON_BN_CLICKED(IDC_BUTTON_AXIS_DETAIL_SETTINGS_SAVE, &CAxisDetailSettingsDlg::OnBnClickedButtonAxisDetailSettingsSave) END_MESSAGE_MAP() // CAxisDetailSettingsDlg 消息处理程序 BOOL CAxisDetailSettingsDlg::OnInitDialog() { CDialogEx::OnInitDialog(); // TODO: 在此添加额外的初始化 CString strTitle; strTitle.Format(_T("Axis细部设定(配方: %s)"), m_strRecipeName); SetWindowText(strTitle); // 获取轴数据 RecipeManager& recipeManager = RecipeManager::getInstance(); auto axisDetails = recipeManager.getAxis(m_nAxisNO); if (axisDetails.id == -1) { CString strMsg; strMsg.Format(_T("轴 [%d] 不存在!"), m_nAxisNO); AfxMessageBox(strMsg); return FALSE; } UpdateAxisDetailSettings(); return TRUE; // return TRUE unless you set the focus to a control // 异常: OCX 属性页应返回 FALSE } void CAxisDetailSettingsDlg::OnBnClickedButtonAxisDetailSettingsSave() { // TODO: 在此添加控件通知处理程序代码 EndDialog(IDOK); }