#pragma once
|
#include "afxdialogex.h"
|
#include "BlButton.h"
|
#include "BLLabel.h"
|
#include "RegexEdit.h"
|
#include "CPLC.h"
|
|
// 每页定位点显示个数
|
#define AXIS_PAGE_SIZE 5
|
|
// Label控件
|
#define LABEL_MAX 6
|
#define LABEL_FLS 0
|
#define LABEL_DOG 1
|
#define LABEL_RLS 2
|
#define LABEL_READY 3
|
#define LABEL_BUSY 4
|
#define LABEL_ERR 5
|
|
// RegexEdit控件
|
#define EDIT_MAX 10
|
#define EDIT_MANUAL_SPEED 0
|
#define EDIT_AUTO_SPEED 1
|
#define EDIT_ACCE_TIME 2
|
#define EDIT_DECE_TIME 3
|
#define EDIT_MICROMENTUM 4
|
#define EDIT_ANCHOR_POINT1 5
|
#define EDIT_ANCHOR_POINT2 6
|
#define EDIT_ANCHOR_POINT3 7
|
#define EDIT_ANCHOR_POINT4 8
|
#define EDIT_ANCHOR_POINT5 9
|
|
// BUTTON控件
|
#define BTN_MAX 15
|
#define BTN_PAGE1 0
|
#define BTN_PAGE2 1
|
#define BTN_PAGE3 2
|
#define BTN_PAGE4 3
|
#define BTN_PAGE5 4
|
#define BTN_JOG_ADD 5
|
#define BTN_JOG_SUB 6
|
#define BTN_JOG_SEV 7
|
#define BTN_JOG_OPR 8
|
#define BTN_JOG_STOP 9
|
#define BTN_POINT1 10
|
#define BTN_POINT2 11
|
#define BTN_POINT3 12
|
#define BTN_POINT4 13
|
#define BTN_POINT5 14
|
|
// CAxisSettingsDlg 对话框
|
|
enum class AxisOperationType {
|
OPR = 0, // 回原点
|
JOG_ADD, // 正向点动
|
JOG_SUB, // 反向点动
|
STOP, // 停止操作
|
SEV_ON, // 使能
|
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 SetLabelColor(CBLLabel& label, COLORREF color);
|
void SetLabelColorBasedOnState(CBLLabel& label, BOOL bState, COLORREF colorTrue, COLORREF colorFalse);
|
void UpdateLabels();
|
void UpdateRegexEdit(CRegexEdit* pRegexEdit, const ValueRange& range, const CString& title);
|
void updatePageButtonStates();
|
void HideEditCursor(int nCtrlID);
|
int getCurrentSelectedAxisID();
|
void initializeAxisIDCombo();
|
void refreshAxisDetails(int nAxisId);
|
void refreshPositionDetails(int nAxisId, int pageNumber);
|
void UpdatePositionRange(PositionRange& position, int pageNumber, int pageSize, int currentIndex);
|
void updateAxisSelection(int offset);
|
void updateDataFromUI(int nAxisId);
|
void switchToPage(int targetPage);
|
bool ParsePLCAddress(const CString& address, MC::SOFT_COMPONENT& component, int& addr);
|
void writeAxisDataToPLC(int nAxisId);
|
void handleAxisOperation(AxisOperationType eOpType, bool bPressed);
|
void readPLCDataToUI(int nAxisId);
|
|
private:
|
CPLC* m_pPLC;
|
int m_nInitialWidth;
|
int m_nInitialHeight;
|
|
// 当前选中的定位页面索引
|
int m_currentPage;
|
|
// 配方名称
|
CString m_strRecipeName;
|
|
// 控件
|
CBlButton* m_pBlBtns[BTN_MAX];
|
CBLLabel* m_pBlLabels[LABEL_MAX];
|
CRegexEdit* m_pRegexEdit[EDIT_MAX];
|
CComboBox m_comboAxisNO;
|
CStatic m_staticAxisNO, m_staticAxisDescription, m_staticStartAddress;
|
//CEdit m_editManualSpeed, m_editAutoSpeed, m_editAccelerationTime, m_editDecelerationTime, m_editJogDistance;
|
|
std::map<int, CRect> m_mapCtrlLayouts;
|
std::map<int, CFont*> m_mapFonts;
|
|
// 读到的数据
|
BOOL m_bSEV;
|
double m_fCurPos;
|
double m_fManualSpeed;
|
double m_fAutoSpeed;
|
double m_fPrm;
|
int m_nLoad;
|
int m_nErrCode;
|
int m_nAlarmCode;
|
BOOL m_bFLS;
|
BOOL m_bDOG;
|
BOOL m_bRLS;
|
BOOL m_bReady;
|
BOOL m_bBusy;
|
BOOL m_bErr;
|
DWORD m_nBtnsFlashState6;
|
DWORD m_nBtnsFlashState8;
|
|
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 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();
|
DECLARE_MESSAGE_MAP()
|
};
|