📄 drvfunctest.cpp
字号:
void CDrvFuncTest::OnKillfocusEditPos()
{
m_Position = GetDlgItemInt(IDC_EDIT_POS);
}
void CDrvFuncTest::OnKillfocusEditP()
{
m_P = GetDlgItemInt(IDC_EDIT_P2);
if(m_P<0 || m_P>2147483647)
{
AfxMessageBox("数据允许的范围是[0,2147483647],请重新输入");
GotoDlgCtrl(GetDlgItem(IDC_EDIT_P2));
}
}
void CDrvFuncTest::OnKillfocusEditCompp()
{
m_COMPP = GetDlgItemInt(IDC_EDIT_COMPP);
}
void CDrvFuncTest::OnKillfocusEditCompm()
{
m_COMPM = GetDlgItemInt(IDC_EDIT_COMPM);
}
void CDrvFuncTest::OnKillfocusEditSv()
{
m_SV = GetDlgItemInt(IDC_EDIT_SV);
if(m_SV<0 || m_SV>4000000)
{
AfxMessageBox("数据允许的范围是[0,4000000],请重新输入");
GotoDlgCtrl(GetDlgItem(IDC_EDIT_SV));
}
}
void CDrvFuncTest::OnKillfocusEditV()
{
m_V = GetDlgItemInt(IDC_EDIT_V);
if(m_V<0 || m_V>4000000)
{
AfxMessageBox("数据允许的范围是[0,4000000],请重新输入");
GotoDlgCtrl(GetDlgItem(IDC_EDIT_V));
}
}
void CDrvFuncTest::OnKillfocusEditVaAcc()
{
m_VaAcc = GetDlgItemInt(IDC_EDIT_VA_ACC);
if(m_VaAcc<0 || m_VaAcc>4000000)
{
AfxMessageBox("数据允许的范围是[0,4000000],请重新输入");
GotoDlgCtrl(GetDlgItem(IDC_EDIT_VA_ACC));
}
}
void CDrvFuncTest::OnKillfocusEditVaDec()
{
m_VaDec = GetDlgItemInt(IDC_EDIT_VA_DEC);
if(m_VaDec<0 || m_VaDec>4000000)
{
AfxMessageBox("数据允许的范围是[0,4000000],请重新输入");
GotoDlgCtrl(GetDlgItem(IDC_EDIT_VA_DEC));
}
}
void CDrvFuncTest::OnKillfocusEditAo()
{
m_AO = GetDlgItemInt(IDC_EDIT_AO);
g_AO = m_AO;
}
void CDrvFuncTest::OnKillfocusEditAccTime()
{
CString str;
GetDlgItemText(IDC_EDIT_ACC_TIME,str);
m_AccTime = atof(str);
if(m_AccTime<0 )
{
AfxMessageBox("数据不能小于0,请重新输入");
GotoDlgCtrl(GetDlgItem(IDC_EDIT_ACC_TIME));
}
}
void CDrvFuncTest::OnKillfocusEditDecTime()
{
CString str;
GetDlgItemText(IDC_EDIT_DEC_TIME,str);
m_DecTime = atof(str);
if(m_DecTime<0 )
{
AfxMessageBox("数据不能小于0,请重新输入");
GotoDlgCtrl(GetDlgItem(IDC_EDIT_DEC_TIME));
}
}
void CDrvFuncTest::OnUpdateV()
{
m_strTXDataCOM1.Empty();
WriteParam( 5, m_V, CurrentAxis );
m_ComPort.WriteToPort((LPCTSTR)m_strTXDataCOM1);
}
void CDrvFuncTest::OnUpdateLpEp()
{
m_strTXDataCOM1.Empty();
WriteParam( 9, m_LP, (CurrentAxis==0), (CurrentAxis==1), (CurrentAxis==2), (CurrentAxis==3) );
WriteParam(10, m_LP, (CurrentAxis==0), (CurrentAxis==1), (CurrentAxis==2), (CurrentAxis==3) );
m_ComPort.WriteToPort((LPCTSTR)m_strTXDataCOM1);
}
void CDrvFuncTest::OnReadLpep()
{
m_LP = pMonitorAxis[0]->GetLP(CurrentAxis);
SetDlgItemInt(IDC_EDIT_LP,m_LP,1);
}
void CDrvFuncTest::OnUpdateCompp()
{
m_strTXDataCOM1.Empty();
WriteParam(11, m_COMPP, (CurrentAxis==0), (CurrentAxis==1), (CurrentAxis==2), (CurrentAxis==3) );
m_ComPort.WriteToPort((LPCTSTR)m_strTXDataCOM1);
}
void CDrvFuncTest::OnUpdateCompm()
{
m_strTXDataCOM1.Empty();
WriteParam(12, m_COMPM, (CurrentAxis==0), (CurrentAxis==1), (CurrentAxis==2), (CurrentAxis==3) );
m_ComPort.WriteToPort((LPCTSTR)m_strTXDataCOM1);
}
void CDrvFuncTest::OnUpdateP2()
{
m_strTXDataCOM1.Empty();
WriteParam( 6, m_P, (CurrentAxis==0), (CurrentAxis==1), (CurrentAxis==2), (CurrentAxis==3) );
m_ComPort.WriteToPort((LPCTSTR)m_strTXDataCOM1);
}
void CDrvFuncTest::OnUpdatePos()
{
int NewP;
m_strTXDataCOM1.Empty();
NewP = max(0, m_Position - m_LP);
WriteParam( 6, NewP, (CurrentAxis==0), (CurrentAxis==1), (CurrentAxis==2), (CurrentAxis==3) );
m_ComPort.WriteToPort((LPCTSTR)m_strTXDataCOM1);
}
void CDrvFuncTest::OnStart()
{
CString str;
int m_Vsacc;
int m_P_signed;
m_strTXDataCOM1.Empty();
WriteParam ( LP_ADDR, m_LP ,CurrentAxis );
WriteParam ( EP_ADDR, m_LP ,CurrentAxis );
WriteParam ( CP_ADDR, m_COMPP ,CurrentAxis );
WriteParam ( CM_ADDR, m_COMPM ,CurrentAxis );
WriteParam ( AO_ADDR, m_AO ,CurrentAxis );
if(m_Direction==DIR_NEG)
{
m_P_signed = - m_P; //(mp为输出脉冲数)
}
else
{
m_P_signed = m_P;
}
if(m_AccType==ACC_TYPE_FULL_S)//完全S曲线
m_Vsacc = 0;
else if(m_VaAcc<((m_SV+m_V)/2)) //S加速末速
m_Vsacc = m_VaAcc;
else
m_Vsacc = 0;
if(m_V < m_SV ) m_SV = m_V;
if(m_DrvType==DRV_TYPE_C)
{
if( m_ExppEn ) //外部脉冲驱动
SetExop (1, CurrentAxis );
else
SetExop (0, CurrentAxis );
if(m_AccType==ACC_TYPE_FULL_S || m_AccType==ACC_TYPE_PART_S)
sv_move(CurrentAxis,m_SV,m_V,m_AccTime,m_Vsacc,m_Direction);
else if(m_AccType==ACC_TYPE_T)
tv_move(CurrentAxis,m_SV,m_V,m_AccTime,m_Direction);
else if(m_AccType==ACC_TYPE_CV)
cv_move(CurrentAxis,m_V,m_Direction);
}
else
{
if( m_ExppEn && m_PulsarEn)
{
SetExop (3, CurrentAxis );
}
else if( m_ExppEn )
{
SetExop (2, CurrentAxis );
}
else
{
SetExop (0, CurrentAxis );
}
if(m_AccType==ACC_TYPE_FULL_S || m_AccType==ACC_TYPE_PART_S)
{
if(m_PosType==POS_TYPE_ABS) //绝对位置
start_sa_move(CurrentAxis,m_Position,m_SV,m_V,m_AccTime,m_DecTime,m_Vsacc,m_VaDec);
else
start_sr_move(CurrentAxis,m_P_signed,m_SV,m_V,m_AccTime,m_DecTime,m_Vsacc,m_VaDec);
}
else if(m_AccType==ACC_TYPE_T)
{
if(m_PosType==POS_TYPE_ABS)
start_ta_move(CurrentAxis,m_Position,m_SV,m_V,m_AccTime,m_DecTime);
else
start_tr_move(CurrentAxis,m_P_signed,m_SV,m_V,m_AccTime,m_DecTime);
}
else if(m_AccType==ACC_TYPE_CV)
{
if(m_PosType==POS_TYPE_ABS)
start_ca_move(CurrentAxis,m_Position,m_V);
else
start_cr_move(CurrentAxis,m_P_signed,m_V);
}
}
m_ComPort.WriteToPort((LPCTSTR)m_strTXDataCOM1);
}
BOOL CDrvFuncTest::OnInitDialog()
{
CDialog::OnInitDialog();
CRect rect;
GetClientRect(&rect);
MoveWindow(270,130,rect.Width() + 15,rect.Height() + 35,TRUE);
// TODO: Add extra initialization here
GetDlgItem(IDC_STATIC_POS)->EnableWindow(FALSE);
GetDlgItem(IDC_EDIT_POS)->EnableWindow(FALSE);
GetDlgItem(IDC_UPDATE_POS)->EnableWindow(FALSE);
GetDlgItem(IDC_STATIC_SV)->EnableWindow(FALSE);
GetDlgItem(IDC_EDIT_SV)->EnableWindow(FALSE);
GetDlgItem(IDC_STATIC_ACC_TIME)->EnableWindow(FALSE);
GetDlgItem(IDC_EDIT_ACC_TIME)->EnableWindow(FALSE);
GetDlgItem(IDC_STATIC_DEC_TIME)->EnableWindow(FALSE);
GetDlgItem(IDC_EDIT_DEC_TIME)->EnableWindow(FALSE);
GetDlgItem(IDC_STATIC_VA_ACC)->EnableWindow(FALSE);
GetDlgItem(IDC_EDIT_VA_ACC)->EnableWindow(FALSE);
GetDlgItem(IDC_STATIC_VA_DEC)->EnableWindow(FALSE);
GetDlgItem(IDC_EDIT_VA_DEC)->EnableWindow(FALSE);
GetDlgItem(IDC_STATIC_AO)->EnableWindow(FALSE);
GetDlgItem(IDC_EDIT_AO)->EnableWindow(FALSE);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CDrvFuncTest::OnDsstop()
{
m_strTXDataCOM1.Empty();
pMonitorAxis[0]->SpeedDownStop();
m_ComPort.WriteToPort((LPCTSTR)m_strTXDataCOM1);
}
void CDrvFuncTest::OnImstop()
{
m_strTXDataCOM1.Empty();
pMonitorAxis[0]->EmergencyStop();
m_ComPort.WriteToPort((LPCTSTR)m_strTXDataCOM1);
}
void CDrvFuncTest::OnHome()
{
m_strTXDataCOM1.Empty();
pMonitorAxis[0]->GoHome();
m_ComPort.WriteToPort((LPCTSTR)m_strTXDataCOM1);
}
void CDrvFuncTest::OnCheckAutoDec()
{
m_AutoDec = ! m_AutoDec;
g_AutoDec = m_AutoDec;
GetDlgItem(IDC_EDIT_DEC_TIME)->EnableWindow(!m_AutoDec);
GetDlgItem(IDC_STATIC_DEC_TIME)->EnableWindow(!m_AutoDec);
}
void CDrvFuncTest::OnCheckPulsar()
{
m_PulsarEn = ! m_PulsarEn;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -