📄 iplfunctest.cpp
字号:
CheckDlgButton(IDC_CHECK_AUTO_DEC, BST_UNCHECKED);
OnCheckAutoDec();
GetDlgItem(IDC_CHECK_AUTO_DEC)->EnableWindow(FALSE);
}
void CIPLFuncTest::OnArctypeCw()
{
m_ArcType = ARC_TYPE_CW;
}
void CIPLFuncTest::OnArctypeCcw()
{
m_ArcType = ARC_TYPE_CCW;
}
void CIPLFuncTest::OnAcctypeCv()
{
m_AccType = ACC_TYPE_CV;
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_VSACC)->EnableWindow(FALSE);
GetDlgItem(IDC_EDIT_VSACC)->EnableWindow(FALSE);
GetDlgItem(IDC_STATIC_VSDEC)->EnableWindow(FALSE);
GetDlgItem(IDC_EDIT_VSDEC)->EnableWindow(FALSE);
}
void CIPLFuncTest::OnAcctypeT()
{
m_AccType = ACC_TYPE_T;
GetDlgItem(IDC_STATIC_SV)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT_SV)->EnableWindow(TRUE);
GetDlgItem(IDC_STATIC_ACC_TIME)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT_ACC_TIME)->EnableWindow(TRUE);
GetDlgItem(IDC_STATIC_DEC_TIME)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT_DEC_TIME)->EnableWindow(TRUE);
GetDlgItem(IDC_STATIC_VSACC)->EnableWindow(FALSE);
GetDlgItem(IDC_EDIT_VSACC)->EnableWindow(FALSE);
GetDlgItem(IDC_STATIC_VSDEC)->EnableWindow(FALSE);
GetDlgItem(IDC_EDIT_VSDEC)->EnableWindow(FALSE);
}
void CIPLFuncTest::OnAcctypeS()
{
m_AccType = ACC_TYPE_FULL_S;
GetDlgItem(IDC_STATIC_SV)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT_SV)->EnableWindow(TRUE);
GetDlgItem(IDC_STATIC_ACC_TIME)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT_ACC_TIME)->EnableWindow(TRUE);
GetDlgItem(IDC_STATIC_DEC_TIME)->EnableWindow(FALSE);
GetDlgItem(IDC_EDIT_DEC_TIME)->EnableWindow(FALSE);
GetDlgItem(IDC_STATIC_VSACC)->EnableWindow(FALSE);
GetDlgItem(IDC_EDIT_VSACC)->EnableWindow(FALSE);
GetDlgItem(IDC_STATIC_VSDEC)->EnableWindow(FALSE);
GetDlgItem(IDC_EDIT_VSDEC)->EnableWindow(FALSE);
}
void CIPLFuncTest::OnAcctypePartS()
{
m_AccType = ACC_TYPE_PART_S;
GetDlgItem(IDC_STATIC_SV)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT_SV)->EnableWindow(TRUE);
GetDlgItem(IDC_STATIC_ACC_TIME)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT_ACC_TIME)->EnableWindow(TRUE);
GetDlgItem(IDC_STATIC_DEC_TIME)->EnableWindow(FALSE);
GetDlgItem(IDC_EDIT_DEC_TIME)->EnableWindow(FALSE);
GetDlgItem(IDC_STATIC_VSACC)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT_VSACC)->EnableWindow(TRUE);
GetDlgItem(IDC_STATIC_VSDEC)->EnableWindow(FALSE);
GetDlgItem(IDC_EDIT_VSDEC)->EnableWindow(FALSE);
}
void CIPLFuncTest::OnKillfocusEditSv()
{
m_SV = GetDlgItemInt(IDC_EDIT_SV);
if(m_SV<0 || m_SV>4000000)
{
AfxMessageBox("数据允许的范围是[0,4000000],请重新输入");
GotoDlgCtrl(GetDlgItem(IDC_EDIT_SV));
}
}
void CIPLFuncTest::OnKillfocusEditV()
{
m_V = GetDlgItemInt(IDC_EDIT_V);
if(m_V<0 || m_V>4000000)
{
AfxMessageBox("数据允许的范围是[0,4000000],请重新输入");
GotoDlgCtrl(GetDlgItem(IDC_EDIT_V));
}
/*
else
{
if(m_AccType==ACC_TYPE_CV)
{
m_SV = m_V;
SetDlgItemInt(IDC_EDIT_SV,m_V,1);
}
}
*/
}
void CIPLFuncTest::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));
}
/*
else
{
if(m_AccType==ACC_TYPE_FULL_S || m_AccType==ACC_TYPE_PART_S)
{
m_DecTime = m_AccTime;
SetDlgItemText(IDC_EDIT_DEC_TIME,str);
}
else if(m_AccType==ACC_TYPE_CV)
{
SetDlgItemInt(IDC_EDIT_DEC_TIME,0,0);
}
}
*/
}
void CIPLFuncTest::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 CIPLFuncTest::OnKillfocusEditVsacc()
{
m_Vsacc = GetDlgItemInt(IDC_EDIT_VSACC);
if(m_Vsacc<0 || m_Vsacc>4000000)
{
AfxMessageBox("数据允许的范围是[0,4000000],请重新输入");
GotoDlgCtrl(GetDlgItem(IDC_EDIT_VSACC));
}
}
void CIPLFuncTest::OnKillfocusEditVsdec()
{
m_Vsdec = GetDlgItemInt(IDC_EDIT_VSDEC);
if(m_Vsdec<0 || m_Vsdec>4000000)
{
AfxMessageBox("数据允许的范围是[0,4000000],请重新输入");
GotoDlgCtrl(GetDlgItem(IDC_EDIT_VSDEC));
}
}
void CIPLFuncTest::OnDeltaposSpinCiplSegNo(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_UPDOWN* pNMUpDown = (NM_UPDOWN*)pNMHDR;
// TODO: Add your control notification handler code here
int LastSegIndex = m_CiplSegIndex;
if(pNMUpDown->iDelta==1)
{
if(m_CiplSegIndex > 1 )
m_CiplSegIndex -= 1;
}
else if(pNMUpDown->iDelta==-1)
{
if(m_CiplSegIndex < CIPL_SEG_MAX-1 )
m_CiplSegIndex += 1;
}
SetDlgItemInt(IDC_EDIT_CIPL_SEG_NR, m_CiplSegIndex, 0);
if( m_CiplSegIndex != LastSegIndex )
CiplChangeSegment(LastSegIndex);
*pResult = 0;
}
void CIPLFuncTest::CiplChangeSegment(int LastSegIndex)
{
// Save current segment data
m_P1Array[LastSegIndex] = m_P1;
m_P2Array[LastSegIndex] = m_P2;
m_P3Array[LastSegIndex] = m_P3;
m_P4Array[LastSegIndex] = m_P4;
m_C1Array[LastSegIndex] = m_C1;
m_C2Array[LastSegIndex] = m_C2;
m_Ax3EnArray[LastSegIndex] = m_Ax3En;
m_Ax4EnArray[LastSegIndex] = m_Ax4En;
m_IplTypeArray[LastSegIndex] = m_IplType;
m_ArcTypeArray[LastSegIndex] = m_ArcType;
m_AxisSelArray[LastSegIndex][0] = m_AxisSel[0];
m_AxisSelArray[LastSegIndex][1] = m_AxisSel[1];
m_AxisSelArray[LastSegIndex][2] = m_AxisSel[2];
m_AxisSelArray[LastSegIndex][3] = m_AxisSel[3];
// restore next segment data
m_P1 = m_P1Array[m_CiplSegIndex];
m_P2 = m_P2Array[m_CiplSegIndex];
m_P3 = m_P3Array[m_CiplSegIndex];
m_P4 = m_P4Array[m_CiplSegIndex];
m_C1 = m_C1Array[m_CiplSegIndex];
m_C2 = m_C2Array[m_CiplSegIndex];
m_Ax3En = m_Ax3EnArray[m_CiplSegIndex];
m_Ax4En = m_Ax4EnArray[m_CiplSegIndex];
m_IplType = m_IplTypeArray[m_CiplSegIndex];
m_ArcType = m_ArcTypeArray[m_CiplSegIndex];
m_AxisSel[0] = m_AxisSelArray[m_CiplSegIndex][0];
m_AxisSel[1] = m_AxisSelArray[m_CiplSegIndex][1];
m_AxisSel[2] = m_AxisSelArray[m_CiplSegIndex][2];
m_AxisSel[3] = m_AxisSelArray[m_CiplSegIndex][3];
// Draw GUI element by new segment data
OnInitDialog();
GetDlgItem(IDC_COMBO_AX1)->EnableWindow(m_CiplSegIndex==1);
}
void CIPLFuncTest::OnDeltaposSpinCiplSegCnt(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_UPDOWN* pNMUpDown = (NM_UPDOWN*)pNMHDR;
// TODO: Add your control notification handler code here
if(pNMUpDown->iDelta==1)
{
if(m_CiplSegCount > 1 )
m_CiplSegCount -= 1;
}
else if(pNMUpDown->iDelta==-1)
{
if(m_CiplSegCount < CIPL_SEG_MAX-1 )
m_CiplSegCount += 1;
}
SetDlgItemInt(IDC_EDIT_CIPL_SEG_CNT, m_CiplSegCount, 0);
*pResult = 0;
}
void CIPLFuncTest::OnChangeEditCiplSegNr()
{
int LastSegIndex = m_CiplSegIndex;
m_CiplSegIndex = GetDlgItemInt(IDC_EDIT_CIPL_SEG_NR);
if(m_CiplSegIndex<1)
{
m_CiplSegIndex = 1;
SetDlgItemInt(IDC_EDIT_CIPL_SEG_NR, m_CiplSegIndex, 0);
}
else if(m_CiplSegIndex>CIPL_SEG_MAX-1)
{
m_CiplSegIndex = CIPL_SEG_MAX-1;
SetDlgItemInt(IDC_EDIT_CIPL_SEG_NR, m_CiplSegIndex, 0);
}
if( m_CiplSegIndex != LastSegIndex )
CiplChangeSegment(LastSegIndex);
}
void CIPLFuncTest::OnChangeEditCiplSegCnt()
{
m_CiplSegCount = GetDlgItemInt(IDC_EDIT_CIPL_SEG_CNT);
if(m_CiplSegCount<1)
{
m_CiplSegCount = 1;
SetDlgItemInt(IDC_EDIT_CIPL_SEG_CNT, m_CiplSegCount, 0);
}
else if(m_CiplSegCount>CIPL_SEG_MAX-1)
{
m_CiplSegCount = CIPL_SEG_MAX-1;
SetDlgItemInt(IDC_EDIT_CIPL_SEG_CNT, m_CiplSegCount, 0);
}
}
int CIPLFuncTest::IplCalcDP(int seg)
{
int DP,DP0,P;
float DecTime;
CString str;
if(m_AccType == ACC_TYPE_T)
DecTime = m_DecTime;
else
DecTime = m_AccTime;
DP0 = (m_SV + m_V)* DecTime/2;
if(m_IplTypeArray[seg]==IPL_TYPE_ARC)
{
P = ArcLength(m_C1Array[seg], m_C2Array[seg], m_P1Array[seg], m_P2Array[seg], m_ArcTypeArray[seg]);
}
else if(m_IplTypeArray[seg]==IPL_TYPE_BP)
{
P = 0; // Temp, no down speed
}
else
{
if(m_Ax4EnArray[seg])
P = max(max(abs(m_P1Array[seg]),abs(m_P2Array[seg])),max(abs(m_P3Array[seg]),abs(m_P4Array[seg])));
else if(m_Ax3EnArray[seg])
P = max(max(abs(m_P1Array[seg]),abs(m_P2Array[seg])),abs(m_P3Array[seg]) );
else
P = max( abs(m_P1Array[seg]),abs(m_P2Array[seg]) );
}
DP = P - DP0;
if(DP < 0)
DP = 0;
return DP;
}
LONG CIPLFuncTest::OnSm5kCnextValid(WPARAM wData, LPARAM lData)
{
int m_WR5;
int m_WR5_LowByte;
if(m_CiplCurrentSeg < m_CiplSegCount)
{
m_CiplCurrentSeg++;
m_strTXDataCOM1.Empty();
int m_Lspd = m_LspdEn? m_LspdType : 0;
if(ChipSel==2)
{
m_WR5_LowByte = chip.GetWR5() & 0x00ff;
m_WR5 =
(m_BpiplIEn <<15) +
(m_CiplIEn <<14) +
(m_CmdStepEn <<13) +
(m_PlsStepEn <<12) +
(m_Lspd << 8) +
m_WR5_LowByte;
}
else
{
m_WR5 =
(m_BpiplIEn <<15) +
(m_CiplIEn <<14) +
(m_Ax4En <<13) +
(m_CmdStepEn <<12) +
(m_PlsStepEn <<11) +
(m_Lspd << 8) +
(m_AxisSel[3]<< 6) +
(m_AxisSel[2]<< 4) +
(m_AxisSel[1]<< 2) +
m_AxisSel[0] ;
}
WriteReg( 5, m_WR5 );
if(m_CiplCurrentSeg==m_CiplSegCount) // Last segment
{
WriteParam ( DP_ADDR, IplCalcDP(m_CiplCurrentSeg), m_AxisSel[0]);
SendDriveCommand( 0x3B, 0, 0, 0, 0 ); // DS_Valid
}
if(m_IplTypeArray[m_CiplCurrentSeg]==IPL_TYPE_LINE)
{
if(m_Ax4EnArray[m_CiplCurrentSeg])
inp_line4(m_AxisSelArray[m_CiplCurrentSeg], m_P1Array[m_CiplCurrentSeg], m_P2Array[m_CiplCurrentSeg], m_P3Array[m_CiplCurrentSeg], m_P4Array[m_CiplCurrentSeg] );
else if(m_Ax3EnArray[m_CiplCurrentSeg])
inp_line3(m_AxisSelArray[m_CiplCurrentSeg], m_P1Array[m_CiplCurrentSeg], m_P2Array[m_CiplCurrentSeg], m_P3Array[m_CiplCurrentSeg] );
else
inp_line2(m_AxisSelArray[m_CiplCurrentSeg], m_P1Array[m_CiplCurrentSeg], m_P2Array[m_CiplCurrentSeg] );
}
else if(m_IplTypeArray[m_CiplCurrentSeg]==IPL_TYPE_ARC)
{
inp_arc2( m_AxisSelArray[m_CiplCurrentSeg], m_C1Array[m_CiplCurrentSeg], m_C2Array[m_CiplCurrentSeg], m_P1Array[m_CiplCurrentSeg], m_P2Array[m_CiplCurrentSeg], m_ArcTypeArray[m_CiplCurrentSeg]);
}
else if(m_IplTypeArray[m_CiplCurrentSeg]==IPL_TYPE_BP)
{
}
m_ComPort.WriteToPort((LPCTSTR)m_strTXDataCOM1);
}
return 0;
}
void CIPLFuncTest::OnButtonDsstop()
{
m_strTXDataCOM1.Empty();
pMonitorIPL->SpeedDownStop();
m_ComPort.WriteToPort((LPCTSTR)m_strTXDataCOM1);
}
void CIPLFuncTest::OnButtonGohome()
{
m_strTXDataCOM1.Empty();
pMonitorIPL->GoHome();
m_ComPort.WriteToPort((LPCTSTR)m_strTXDataCOM1);
}
void CIPLFuncTest::OnButtonImstop()
{
//pMyView->SendMessage(ID_TEST_IMSTOP,0,0);
m_strTXDataCOM1.Empty();
pMonitorIPL->EmergencyStop();
m_ComPort.WriteToPort((LPCTSTR)m_strTXDataCOM1);
}
void CIPLFuncTest::OnUpdateV()
{
AfxMessageBox("该功能暂未实现");
m_strTXDataCOM1.Empty();
WriteParam( 5, m_V, m_AxisSel[0] );
m_ComPort.WriteToPort((LPCTSTR)m_strTXDataCOM1);
}
void CIPLFuncTest::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 CIPLFuncTest::OnKillfocusEditAo()
{
m_AO = GetDlgItemInt(IDC_EDIT_AO);
g_AO = m_AO;
}
void CIPLFuncTest::OnButtonAx1()
{
COtherIplParam OtherIplParam;
if(OtherIplParam.DoModal()==IDOK)
{
m_LP[0] = OtherIplParam.m_LP;
m_CP[0] = OtherIplParam.m_CP;
m_CM[0] = OtherIplParam.m_CM;
m_LP_EN[0] = OtherIplParam.m_LP_EN;
m_CP_EN[0] = OtherIplParam.m_CP_EN;
m_CM_EN[0] = OtherIplParam.m_CM_EN;
}
}
void CIPLFuncTest::OnButtonAx2()
{
COtherIplParam OtherIplParam;
if(OtherIplParam.DoModal()==IDOK)
{
m_LP[1] = OtherIplParam.m_LP;
m_CP[1] = OtherIplParam.m_CP;
m_CM[1] = OtherIplParam.m_CM;
m_LP_EN[1] = OtherIplParam.m_LP_EN;
m_CP_EN[1] = OtherIplParam.m_CP_EN;
m_CM_EN[1] = OtherIplParam.m_CM_EN;
}
}
void CIPLFuncTest::OnButtonAx3()
{
COtherIplParam OtherIplParam;
if(OtherIplParam.DoModal()==IDOK)
{
m_LP[2] = OtherIplParam.m_LP;
m_CP[2] = OtherIplParam.m_CP;
m_CM[2] = OtherIplParam.m_CM;
m_LP_EN[2] = OtherIplParam.m_LP_EN;
m_CP_EN[2] = OtherIplParam.m_CP_EN;
m_CM_EN[2] = OtherIplParam.m_CM_EN;
}
}
void CIPLFuncTest::OnButtonAx4()
{
COtherIplParam OtherIplParam;
if(OtherIplParam.DoModal()==IDOK)
{
m_LP[3] = OtherIplParam.m_LP;
m_CP[3] = OtherIplParam.m_CP;
m_CM[3] = OtherIplParam.m_CM;
m_LP_EN[3] = OtherIplParam.m_LP_EN;
m_CP_EN[3] = OtherIplParam.m_CP_EN;
m_CM_EN[3] = OtherIplParam.m_CM_EN;
}
}
void CIPLFuncTest::OnStepCmd()
{
m_strTXDataCOM1.Empty();
SendDriveCommand(0x3A, 0, 0, 0, 0);
m_ComPort.WriteToPort((LPCTSTR)m_strTXDataCOM1);
}
void CIPLFuncTest::OnStaticBp2()
{
MessageBox("poakdpfew");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -