LAPTOP-T815PCOQ\25526
2024-12-09 51a915e1487515a626638a73e668b0ada227788e
1. 添加axis细部设置界面
已添加2个文件
已修改5个文件
188 ■■■■ 文件已修改
SourceCode/Bond/BondEq/BondEq.rc 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/BondEq/BondEq.vcxproj 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/BondEq/Resource.h 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/BondEq/View/AxisDetailSettingsDlg.cpp 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/BondEq/View/AxisDetailSettingsDlg.h 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/BondEq/View/AxisSettingsDlg.cpp 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/BondEq/View/AxisSettingsDlg.h 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/BondEq/BondEq.rc
Binary files differ
SourceCode/Bond/BondEq/BondEq.vcxproj
@@ -255,6 +255,7 @@
    <ClInclude Include="ToolUnits.h" />
    <ClInclude Include="TopToolbar.h" />
    <ClInclude Include="VerticalLine.h" />
    <ClInclude Include="View\AxisDetailSettingsDlg.h" />
    <ClInclude Include="View\AxisSettingsDlg.h" />
    <ClInclude Include="View\ChangePasswordDlg.h" />
    <ClInclude Include="View\IOMonitoringDlg.h" />
@@ -331,6 +332,7 @@
    <ClCompile Include="ToolUnits.cpp" />
    <ClCompile Include="TopToolbar.cpp" />
    <ClCompile Include="VerticalLine.cpp" />
    <ClCompile Include="View\AxisDetailSettingsDlg.cpp" />
    <ClCompile Include="View\AxisSettingsDlg.cpp" />
    <ClCompile Include="View\ChangePasswordDlg.cpp" />
    <ClCompile Include="View\IOMonitoringDlg.cpp" />
SourceCode/Bond/BondEq/Resource.h
Binary files differ
SourceCode/Bond/BondEq/View/AxisDetailSettingsDlg.cpp
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,76 @@
// 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::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);
}
BEGIN_MESSAGE_MAP(CAxisDetailSettingsDlg, CDialogEx)
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;
    }
    m_staticAxisNO.SetWindowText(CString(axisDetails.number.c_str()));                                // è½´ç¼–号
    m_staticAxisDescription.SetWindowText(CString(axisDetails.description.c_str()));                // è½´æè¿°
    m_staticStartAddress.SetWindowText(CString(axisDetails.startAddress.c_str()));                    // èµ·å§‹åœ°å€
    return TRUE;  // return TRUE unless you set the focus to a control
    // å¼‚常: OCX å±žæ€§é¡µåº”返回 FALSE
}
SourceCode/Bond/BondEq/View/AxisDetailSettingsDlg.h
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,39 @@
#pragma once
#include "afxdialogex.h"
// CAxisDetailSettingsDlg å¯¹è¯æ¡†
class CAxisDetailSettingsDlg : public CDialogEx
{
    DECLARE_DYNAMIC(CAxisDetailSettingsDlg)
public:
    CAxisDetailSettingsDlg(const CString& strRecipeName, int nAxisNO, CWnd* pParent = nullptr);   // æ ‡å‡†æž„造函数
    virtual ~CAxisDetailSettingsDlg();
public:
    void SetPLC(CPLC* pPLC);
// å¯¹è¯æ¡†æ•°æ®
#ifdef AFX_DESIGN_TIME
    enum { IDD = IDD_DIALOG_AXIS_DETAIL_SETTINGS };
#endif
private:
    CPLC* m_pPLC;
    int m_nInitialWidth;
    int m_nInitialHeight;
    // æ•°æ®
    int m_nAxisNO;
    CString m_strRecipeName;
    // æŽ§ä»¶
    CStatic m_staticAxisNO, m_staticAxisDescription, m_staticStartAddress;
protected:
    virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV æ”¯æŒ
    virtual BOOL OnInitDialog();
    DECLARE_MESSAGE_MAP()
};
SourceCode/Bond/BondEq/View/AxisSettingsDlg.cpp
@@ -5,6 +5,7 @@
#include "BondEq.h"
#include "afxdialogex.h"
#include "AxisSettingsDlg.h"
#include "AxisDetailSettingsDlg.h"
#include "ToolUnits.h"
#include <cctype>
#include <algorithm>
@@ -769,19 +770,19 @@
            m_nBtnsFlashState8 = ((BYTE)pData[b + 4] | (BYTE)pData[b + 5] << 8);
            m_nBtnsFlashState8 |= ((BYTE)pData[b + 6] << 16 | (BYTE)pData[b + 7] << 24);
            AxisInfo axisInfo = RecipeManager::getInstance().getAxis(nAxisId);
            axisInfo.autoSpeed.currentValue = m_fAutoSpeed;                                                // è‡ªåŠ¨é€Ÿåº¦
            axisInfo.manualSpeed.currentValue = m_fManualSpeed;                                            // æ‰‹åŠ¨é€Ÿåº¦
            axisInfo.jogDistance.currentValue = CToolUnits::toInt32(&pData[81 * 2]) * 0.001;            // å¾®åŠ¨é‡
            axisInfo.accelerationTime.currentValue = CToolUnits::toInt32(&pData[62 * 2]) * 0.001;        // åŠ é€Ÿæ—¶é—´
            axisInfo.decelerationTime.currentValue = CToolUnits::toInt32(&pData[64 * 2]) * 0.001;        // å‡é€Ÿæ—¶é—´
            //AxisInfo axisInfo = RecipeManager::getInstance().getAxis(nAxisId);
            //axisInfo.autoSpeed.currentValue = m_fAutoSpeed;                                                // è‡ªåŠ¨é€Ÿåº¦
            //axisInfo.manualSpeed.currentValue = m_fManualSpeed;                                            // æ‰‹åŠ¨é€Ÿåº¦
            //axisInfo.jogDistance.currentValue = CToolUnits::toInt32(&pData[81 * 2]) * 0.001;            // å¾®åŠ¨é‡
            //axisInfo.accelerationTime.currentValue = CToolUnits::toInt32(&pData[62 * 2]) * 0.001;        // åŠ é€Ÿæ—¶é—´
            //axisInfo.decelerationTime.currentValue = CToolUnits::toInt32(&pData[64 * 2]) * 0.001;        // å‡é€Ÿæ—¶é—´
            // è¯»å–定位点数据
            for (int i = 0; i < axisInfo.positions.size(); ++i) {
                unsigned int positionAddress = 100 + (i * 2);
                axisInfo.positions[i].range.currentValue = CToolUnits::toInt32(&pData[positionAddress * 2]) * 0.001;
            }
            RecipeManager::getInstance().updateAxis(axisInfo);
            //for (int i = 0; i < axisInfo.positions.size(); ++i) {
            //    unsigned int positionAddress = 100 + (i * 2);
            //    axisInfo.positions[i].range.currentValue = CToolUnits::toInt32(&pData[positionAddress * 2]) * 0.001;
            //}
            //RecipeManager::getInstance().updateAxis(axisInfo);
            PostMessage(ID_MSG_UPDATA_DATA_TO_UI);
        }
@@ -805,15 +806,17 @@
    ON_BN_CLICKED(IDC_BUTTON_AXIS_ANCHOR_POINT5, &CAxisSettingsDlg::OnBnClickedButtonAxisAnchorPoint5)
    ON_BN_CLICKED(IDC_BUTTON_AXIS_TEST_OPR, &CAxisSettingsDlg::OnBnClickedButtonAxisTestOpr)
    ON_BN_CLICKED(IDC_BUTTON_AXIS_TEST_STOP, &CAxisSettingsDlg::OnBnClickedButtonAxisTestStop)
    ON_BN_CLICKED(IDC_BUTTON_AXIS_SEV, &CAxisSettingsDlg::OnBnClickedButtonAxisSev)
    ON_CBN_SELCHANGE(IDC_COMBO_AXIS_NAME, &CAxisSettingsDlg::OnSelchangeComboAxisName)
    ON_BN_CLICKED(IDC_BUTTON_AXIS_SAVE, &CAxisSettingsDlg::OnBnClickedButtonAxisSave)
    ON_BN_CLICKED(IDC_BUTTON_AXIS_UPDATE_UI, &CAxisSettingsDlg::OnBnClickedButtonAxisUpdateUi)
    ON_BN_CLICKED(IDC_BUTTON_AXIS_DETAIL_SETTINGS, &CAxisSettingsDlg::OnBnClickedButtonAxisDetailSettings)
    ON_MESSAGE(ID_MSG_UPDATA_DATA_TO_UI, &CAxisSettingsDlg::OnUpdateDataToUI)
    ON_WM_SIZE()
    ON_WM_CTLCOLOR()
    ON_WM_SIZING()
    ON_WM_TIMER()
    ON_WM_CLOSE()
    ON_BN_CLICKED(IDC_BUTTON_AXIS_SEV, &CAxisSettingsDlg::OnBnClickedButtonAxisSev)
END_MESSAGE_MAP()
@@ -830,20 +833,13 @@
    SetWindowText(strTitle);
    // éšè—å…‰æ ‡
    //HideEditCursor(IDC_EDIT_AXIS_CURR_POS);
    HideEditCursor(IDC_EDIT_AXIS_CURR_POS);
    HideEditCursor(IDC_EDIT_AXIS_CURR_MANUAL_SPEED);
    HideEditCursor(IDC_EDIT_AXIS_CURR_AUTO_SPEED);
    HideEditCursor(IDC_EDIT_AXIS_CURR_ROTA_SPEED);
    HideEditCursor(IDC_EDIT_AXIS_CURR_LOAD);
    HideEditCursor(IDC_EDIT_AXIS_CURR_ERROR_NUMBER);
    HideEditCursor(IDC_EDIT_AXIS_CURR_ALARM_NUMBER);
    // æµ‹è¯•
    {
        CEdit* pEdit = (CEdit*)GetDlgItem(IDC_EDIT_AXIS_CURR_POS);
        pEdit->EnableWindow(TRUE);
        pEdit->SetReadOnly(FALSE);
    }
    // è®¾ç½®æµ‹è¯•状态
    m_pBlLabels[LABEL_FLS]->SubclassDlgItem(IDC_STATIC_AXIS_TEST_FLS, this);
@@ -1296,10 +1292,10 @@
    }
    writeAxisDataToPLC(axisId);
    Sleep(2000);
    //Sleep(2000);
    refreshAxisDetails(axisId);
    refreshPositionDetails(axisId, m_currentPage);
    //refreshAxisDetails(axisId);
    //refreshPositionDetails(axisId, m_currentPage);
    if (RecipeManager::getInstance().saveRecipe(std::string(CT2A(m_strRecipeName)))) {
        cstrMessage.Format(_T("保存轴 [%d] å‚数到文件成功!"), axisId);
        SystemLogManager::getInstance().log(SystemLogManager::LogType::Operation, std::string(CT2A(cstrMessage)));
@@ -1314,6 +1310,33 @@
    AfxMessageBox(cstrMessage);
}
void CAxisSettingsDlg::OnBnClickedButtonAxisUpdateUi()
{
    // TODO: åœ¨æ­¤æ·»åŠ æŽ§ä»¶é€šçŸ¥å¤„ç†ç¨‹åºä»£ç 
    int axisId = getCurrentSelectedAxisID();
    if (axisId == -1) {
        AfxMessageBox(_T("请选择一个有效的轴编号!"));
        return;
    }
    refreshAxisDetails(axisId);
    refreshPositionDetails(axisId, m_currentPage);
}
void CAxisSettingsDlg::OnBnClickedButtonAxisDetailSettings()
{
    // TODO: åœ¨æ­¤æ·»åŠ æŽ§ä»¶é€šçŸ¥å¤„ç†ç¨‹åºä»£ç 
    int nAxisId = getCurrentSelectedAxisID();
    if (nAxisId == -1) {
        AfxMessageBox(_T("请选择一个有效的轴编号!"));
        return;
    }
    CAxisDetailSettingsDlg dlg(m_strRecipeName, nAxisId, this);
    dlg.SetPLC(m_pPLC);
    dlg.DoModal();
}
LRESULT CAxisSettingsDlg::OnUpdateDataToUI(WPARAM wParam, LPARAM lParam)
{
    CToolUnits::setDlgItemDouble(this, IDC_EDIT_AXIS_CURR_POS, m_fCurPos);
SourceCode/Bond/BondEq/View/AxisSettingsDlg.h
@@ -154,6 +154,8 @@
    afx_msg void OnBnClickedButtonAxisSev();
    afx_msg void OnSelchangeComboAxisName();
    afx_msg void OnBnClickedButtonAxisSave();
    afx_msg void OnBnClickedButtonAxisUpdateUi();
    afx_msg void OnBnClickedButtonAxisDetailSettings();
    afx_msg LRESULT OnUpdateDataToUI(WPARAM wParam, LPARAM lParam);
    afx_msg void OnTimer(UINT_PTR nIDEvent);
    afx_msg void OnClose();