LAPTOP-SNT8I5JK\Boounion
2024-12-02 df0863b2c29fa227d186e6b8aeb4a856dcae12f3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#pragma once
#include "afxdialogex.h"
#include "BlButton.h"
#include "BLLabel.h"
#include "CPLC.h"
 
// CAxisSettingsDlg 对话框
 
enum class AxisOperationType {
    OPR = 0,    // 回原点
    JOG_ADD,    // 正向点动
    JOG_SUB,    // 反向点动
    STOP,        // 停止操作
    POSITION_1, // 定位点1
    POSITION_2, // 定位点2
    POSITION_3, // 定位点3
    POSITION_4, // 定位点4
    POSITION_5  // 定位点5
};
 
class CAxisSettingsDlg : public CDialogEx
{
    DECLARE_DYNAMIC(CAxisSettingsDlg)
 
public:
    CAxisSettingsDlg(CWnd* pParent = nullptr);   // 标准构造函数
    virtual ~CAxisSettingsDlg();
 
public:
    void SetPLC(CPLC* pPLC);
    void SetRecipeName(const CString& strRecipeName);
 
// 对话框数据
#ifdef AFX_DESIGN_TIME
    enum { IDD = IDD_DIALOG_AXIS_SETTINGS };
#endif
 
private:
    UINT FindIDByName(const CString& strControlID);
    CFont* GetOrCreateFont(int nFontSize);
    void SetDefaultFont();
    void AdjustControls(float dScaleX, float dScaleY);
    void AdjustControlFont(CWnd* pWnd, int nWidth, int nHeight);
    void AdjustLabelFont(CBLLabel& label);
    void SetStatusColor(CBLLabel& label, BOOL bStatus);
    void updatePageButtonStates();
    int getCurrentSelectedAxisID();
    void initializeAxisIDCombo();
    void refreshAxisDetails(int nAxisId);
    void refreshPositionDetails(int nAxisId, int pageNumber);
    void updateAxisSelection(int offset);
    void updateDataFromUI(int nAxisId);
    void switchToPage(int targetPage);
    void writeAxisDataToPLC(int nAxisId);
    void handleAxisOperation(AxisOperationType eOpType, bool bPressed);
 
 
private:
    CPLC* m_pPLC;
    int m_nInitialWidth;
    int m_nInitialHeight;
 
    // 当前选中的定位页面索引
    int m_currentPage;
 
    // 配方名称
    CString m_strRecipeName;
 
    // 按下标识
    BOOL m_bJogAddPressed;
    BOOL m_bJogSubPressed;
 
    // 控件
    CBLLabel m_staticFLS, m_staticDOG, m_staticRLS, m_staticReady, m_staticBusy, m_staticErr;
    CComboBox m_comboAxisNO;
    CStatic m_staticAxisNO, m_staticAxisDescription, m_staticStartAddress;
    CEdit m_editManualSpeed, m_editAutoSpeed, m_editAccelerationTime, m_editDecelerationTime, m_editJogDistance;
    CBlButton m_pageButtons[5];
 
    std::map<int, CRect> m_mapCtrlLayouts;
    std::map<int, CFont*> m_mapFonts;
 
protected:
    virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持
    virtual BOOL OnInitDialog();
    virtual BOOL PreTranslateMessage(MSG* pMsg);
    afx_msg void OnSize(UINT nType, int cx, int cy);
    afx_msg void OnSizing(UINT fwSide, LPRECT pRect);
    afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
    afx_msg void OnBnClickedButtonAxisLast();
    afx_msg void OnBnClickedButtonAxisNext();
    afx_msg void OnBnClickedButtonAxisAnchorPointGroup1();
    afx_msg void OnBnClickedButtonAxisAnchorPointGroup2();
    afx_msg void OnBnClickedButtonAxisAnchorPointGroup3();
    afx_msg void OnBnClickedButtonAxisAnchorPointGroup4();
    afx_msg void OnBnClickedButtonAxisAnchorPointGroup5();
    afx_msg void OnBnClickedButtonAxisAnchorPoint1();
    afx_msg void OnBnClickedButtonAxisAnchorPoint2();
    afx_msg void OnBnClickedButtonAxisAnchorPoint3();
    afx_msg void OnBnClickedButtonAxisAnchorPoint4();
    afx_msg void OnBnClickedButtonAxisAnchorPoint5();
    afx_msg void OnBnClickedButtonAxisTestOpr();
    afx_msg void OnBnClickedButtonAxisTestStop();
    afx_msg void OnSelchangeComboAxisName();
    afx_msg void OnBnClickedButtonAxisSave();
    afx_msg void OnTimer(UINT_PTR nIDEvent);
    DECLARE_MESSAGE_MAP()
};