📄 configdlg.cpp
字号:
// ConfigDlg.cpp : implementation file
//
#include "stdafx.h"
#include "SMT5K.h"
#include "ConfigDlg.h"
#include "SM5000.h"
#include "SM5000chip.h"
#include "SerialPort.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
extern CSm5000Chip chip;
extern int CurrentAxis;
extern CSerialPort m_ComPort;
extern CString m_strTXDataCOM1; //COM1发送数据
extern int ChipSel ;
/////////////////////////////////////////////////////////////////////////////
// CConfigDlg dialog
CConfigDlg::CConfigDlg(CWnd* pParent /*=NULL*/)
: CDialog(CConfigDlg::IDD, pParent)
{
int m_WR1;
int m_WR2;
int m_WR3;
int m_WR5;
m_WR1 = chip.GetWR1(CurrentAxis);
m_WR2 = chip.GetWR2(CurrentAxis);
m_WR3 = chip.GetWR3(CurrentAxis);
m_WR5 = chip.GetWR5();
m_AxisU_En = 1;//FALSE;
m_AxisX_En = 1;//FALSE;
m_AxisY_En = 1;//FALSE;
m_AxisZ_En = 1;//FALSE;
m_IN0_En = GetBit(m_WR1, 1);
m_IN1_En = GetBit(m_WR1, 3);
m_IN2_En = GetBit(m_WR1, 5);
m_IN3_En = GetBit(m_WR1, 7);
m_IN0_L = GetBit(m_WR1, 0);
m_IN1_L = GetBit(m_WR1, 2);
m_IN2_L = GetBit(m_WR1, 4);
m_IN3_L = GetBit(m_WR1, 6);
m_INT0_En = GetBit(m_WR1, 8);
m_INT1_En = GetBit(m_WR1, 9);
m_INT2_En = GetBit(m_WR1,10);
m_INT3_En = GetBit(m_WR1,11);
m_INT4_En = GetBit(m_WR1,12);
m_INT5_En = GetBit(m_WR1,13);
m_INT6_En = GetBit(m_WR1,14);
m_INT7_En = GetBit(m_WR1,15);
m_INPOS_En = GetBit(m_WR2,15);
m_INP_L = GetBit(m_WR2,14);
m_Alarm_En = GetBit(m_WR2,13);
m_ALM_L = GetBit(m_WR2,12);
m_PIND = GetBit(m_WR2,10,2);
m_PINMD = GetBit(m_WR2, 9);
m_DIR_L = GetBit(m_WR2, 8);
m_PLS_L = GetBit(m_WR2, 7);
m_PLSMD = 1;//GetBit(m_WR2, 6);
m_CMPSL = GetBit(m_WR2, 5);
m_HLMTM = GetBit(m_WR2, 4);
m_HLMTP = GetBit(m_WR2, 3);
m_LMTMD = GetBit(m_WR2, 2);
m_SLMTM_En = GetBit(m_WR2, 1);
m_SLMTP_En = GetBit(m_WR2, 0);
m_MANLD = GetBit(m_WR3, 0);
m_DSNDE = GetBit(m_WR3, 1);
m_SACC = GetBit(m_WR3, 2);
m_EXOP = GetBit(m_WR3, 3, 2);
m_OUTSL = GetBit(m_WR3, 7);
if( ChipSel == 2 )
{
if( CurrentAxis == 1 )
{
m_HLMTP_En = GetBit(m_WR5, 2);
m_HLMTM_En = GetBit(m_WR5, 3);
}
else
{
m_HLMTP_En = GetBit(m_WR5, 0);
m_HLMTM_En = GetBit(m_WR5, 1);
}
m_EMGN_L = GetBit(m_WR5, 4);
m_EMGN_En = GetBit(m_WR5, 5);
}
else
{
m_HLMTP_En = 1;//GetBit(m_WR3, 12);
m_HLMTM_En = 1;//GetBit(m_WR3, 13);
m_EMGN_L = GetBit(m_WR3, 14);
m_EMGN_En = 1;//GetBit(m_WR3, 15);
}
//{{AFX_DATA_INIT(CConfigDlg)
//}}AFX_DATA_INIT
}
void CConfigDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CConfigDlg)
DDX_Check(pDX, IDC_CHECK_ALARM, m_Alarm_En);
DDX_Check(pDX, IDC_CHECK_AU, m_AxisU_En);
DDX_Check(pDX, IDC_CHECK_AX, m_AxisX_En);
DDX_Check(pDX, IDC_CHECK_AY, m_AxisY_En);
DDX_Check(pDX, IDC_CHECK_AZ, m_AxisZ_En);
DDX_Check(pDX, IDC_CHECK_HLMTM, m_HLMTM_En);
DDX_Check(pDX, IDC_CHECK_HLMTP, m_HLMTP_En);
DDX_Check(pDX, IDC_CHECK_IE_0, m_INT0_En);
DDX_Check(pDX, IDC_CHECK_IE_1, m_INT1_En);
DDX_Check(pDX, IDC_CHECK_IE_2, m_INT2_En);
DDX_Check(pDX, IDC_CHECK_IE_3, m_INT3_En);
DDX_Check(pDX, IDC_CHECK_IE_4, m_INT4_En);
DDX_Check(pDX, IDC_CHECK_IE_5, m_INT5_En);
DDX_Check(pDX, IDC_CHECK_IE_6, m_INT6_En);
DDX_Check(pDX, IDC_CHECK_IE_7, m_INT7_En);
DDX_Check(pDX, IDC_CHECK_IN0, m_IN0_En);
DDX_Check(pDX, IDC_CHECK_IN1, m_IN1_En);
DDX_Check(pDX, IDC_CHECK_IN2, m_IN2_En);
DDX_Check(pDX, IDC_CHECK_IN3, m_IN3_En);
DDX_Check(pDX, IDC_CHECK_INPOS, m_INPOS_En);
DDX_Check(pDX, IDC_CHECK_SLMTM, m_SLMTM_En);
DDX_Check(pDX, IDC_CHECK_SLMTP, m_SLMTP_En);
DDX_Radio(pDX, IDC_CMPSL_0, m_CMPSL);
DDX_Radio(pDX, IDC_DIR_LEVEL_0, m_DIR_L);
DDX_Radio(pDX, IDC_DSNDE_0, m_DSNDE);
DDX_Radio(pDX, IDC_EXOP_00, m_EXOP);
DDX_Radio(pDX, IDC_HLMTP_LEVEL_0, m_HLMTP);
DDX_Radio(pDX, IDC_HLMTM_LEVEL_0, m_HLMTM);
DDX_Radio(pDX, IDC_IN0_LEVEL_0, m_IN0_L);
DDX_Radio(pDX, IDC_IN1_LEVEL_0, m_IN1_L);
DDX_Radio(pDX, IDC_IN2_LEVEL_0, m_IN2_L);
DDX_Radio(pDX, IDC_IN3_LEVEL_0, m_IN3_L);
DDX_Radio(pDX, IDC_INPOS_LEVEL_0, m_INP_L);
DDX_Radio(pDX, IDC_LMTMD_0, m_LMTMD);
DDX_Radio(pDX, IDC_MANLD_0, m_MANLD);
DDX_Radio(pDX, IDC_OUTSL_0, m_OUTSL);
DDX_Radio(pDX, IDC_PIND_00, m_PIND);
DDX_Radio(pDX, IDC_PINMD_0, m_PINMD);
DDX_Radio(pDX, IDC_PLS_LEVEL_0, m_PLS_L);
DDX_Radio(pDX, IDC_PLSMD_0, m_PLSMD);
DDX_Radio(pDX, IDC_SACC_0, m_SACC);
DDX_Radio(pDX, IDC_ALARM_LEVEL_0, m_ALM_L);
DDX_Check(pDX, IDC_CHECK_EMGN, m_EMGN_En);
DDX_Radio(pDX, IDC_EMGN_LEVEL_0, m_EMGN_L);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CConfigDlg, CDialog)
//{{AFX_MSG_MAP(CConfigDlg)
ON_BN_CLICKED(IDC_RESTORE, OnRestore)
ON_BN_CLICKED(IDC_CHECK_AX, OnCheckAx)
ON_BN_CLICKED(IDC_CHECK_AY, OnCheckAy)
ON_BN_CLICKED(IDC_CHECK_AZ, OnCheckAz)
ON_BN_CLICKED(IDC_CHECK_AU, OnCheckAu)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CConfigDlg message handlers
void CConfigDlg::OnOK()
{
// TODO: Add extra validation here
CDialog::OnOK();
int m_WR1;
int m_WR2;
int m_WR3;
int WR5Old, WR5New, m_WR5;
m_WR1 = Bit2Int(
m_INT7_En,
m_INT6_En,
m_INT5_En,
m_INT4_En,
m_INT3_En,
m_INT2_En,
m_INT1_En,
m_INT0_En,
m_IN3_En,
m_IN3_L,
m_IN2_En,
m_IN2_L,
m_IN1_En,
m_IN1_L,
m_IN0_En,
m_IN0_L
);
m_WR2 = Bit2Int(
m_INPOS_En,
m_INP_L,
m_Alarm_En,
m_ALM_L,
0,
m_PIND,
m_PINMD,
m_DIR_L,
m_PLS_L,
m_PLSMD,
m_CMPSL,
m_HLMTM,
m_HLMTP,
m_LMTMD,
m_SLMTM_En,
m_SLMTP_En
);
if( ChipSel == 2 )
m_WR3 = Bit2Int(
0,
0,
0,
0,
0,
0,
0,
0,
m_OUTSL,
0,
0,
0,
m_EXOP,
m_SACC,
m_DSNDE,
m_MANLD
);
else
m_WR3 = Bit2Int(
m_EMGN_En,
m_EMGN_L,
m_HLMTM_En,
m_HLMTP_En,
0,
0,
0,
0,
m_OUTSL,
0,
0,
0,
m_EXOP,
m_SACC,
m_DSNDE,
m_MANLD
);
if( ChipSel == 2 )
{
WR5Old = chip.GetWR5();
WR5New = Bit2Int(
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
m_EMGN_En,
m_EMGN_L,
m_HLMTM_En,
m_HLMTP_En,
m_HLMTM_En,
m_HLMTP_En
);
m_WR5 = WR5Old & 0xffc0 | WR5New;
}
int mAxis=GetmAxisValue(m_AxisX_En, m_AxisY_En, m_AxisZ_En, m_AxisU_En);
if(mAxis!=0)
{
m_strTXDataCOM1.Empty();
WriteReg( 1, m_WR1, m_AxisX_En, m_AxisY_En, m_AxisZ_En, m_AxisU_En);
WriteReg( 2, m_WR2, m_AxisX_En, m_AxisY_En, m_AxisZ_En, m_AxisU_En);
WriteReg( 3, m_WR3, m_AxisX_En, m_AxisY_En, m_AxisZ_En, m_AxisU_En);
if( ChipSel == 2 ) WriteReg( 5, m_WR5 );
m_ComPort.WriteToPort((LPCTSTR)m_strTXDataCOM1);
}
}
void CConfigDlg::OnRestore()
{
// TODO: Add your control notification handler code here
int AxisArray[4];
m_AxisU_En = 1;
m_AxisX_En = 1;
m_AxisY_En = 1;
m_AxisZ_En = 1;
AxisArray[0] = m_AxisX_En;
AxisArray[1] = m_AxisY_En;
AxisArray[2] = m_AxisZ_En;
AxisArray[3] = m_AxisU_En;
chip.SetWR1(0,AxisArray);
chip.SetWR2(0,AxisArray);
chip.SetWR3(0,AxisArray);
m_IN0_En = 0;
m_IN1_En = 0;
m_IN2_En = 0;
m_IN3_En = 0;
m_IN0_L = 0;
m_IN1_L = 0;
m_IN2_L = 0;
m_IN3_L = 0;
m_INT0_En = 0;
m_INT1_En = 0;
m_INT2_En = 0;
m_INT3_En = 0;
m_INT4_En = 0;
m_INT5_En = 0;
m_INT6_En = 0;
m_INT7_En = 0;
m_INPOS_En = 0;
m_INP_L = 0;
m_Alarm_En = 0;
m_ALM_L = 0;
m_PIND = 0;
m_PINMD = 0;
m_DIR_L = 0;
m_PLS_L = 0;
m_PLSMD = 1;
m_CMPSL = 0;
m_HLMTM = 0;
m_HLMTP = 0;
m_LMTMD = 0;
m_SLMTM_En = 0;
m_SLMTP_En = 0;
m_MANLD = 0;
m_DSNDE = 0;
m_SACC = 0;
m_EXOP = 0;
m_OUTSL = 0;
m_HLMTP_En = 1;
m_HLMTM_En = 1;
m_EMGN_L = 0;
m_EMGN_En = 1;
CDialog::OnInitDialog();
}
void CConfigDlg::OnCheckAx()
{
m_AxisX_En = !m_AxisX_En;
}
void CConfigDlg::OnCheckAy()
{
m_AxisY_En = !m_AxisY_En;
}
void CConfigDlg::OnCheckAz()
{
m_AxisZ_En = !m_AxisZ_En;
}
void CConfigDlg::OnCheckAu()
{
m_AxisU_En = !m_AxisU_En;
}
BOOL CConfigDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
if(ChipSel==2)
{
GetDlgItem(IDC_CHECK_AZ)->EnableWindow(FALSE);
GetDlgItem(IDC_CHECK_AU)->EnableWindow(FALSE);
SetDlgItemText(IDC_CHECK_IN0, "使用STOP0" );
SetDlgItemText(IDC_CHECK_IN1, "使用STOP1" );
SetDlgItemText(IDC_CHECK_IN2, "使用STOP2" );
SetDlgItemText(IDC_CHECK_IN3, "允许EPCLR" );
SetDlgItemText(IDC_IN3_LEVEL_0, "禁止反向计数" );
SetDlgItemText(IDC_IN3_LEVEL_1, "允许反向计数" );
}
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -