?? demo1dlg.cpp
字號:
////////////////////////////////////////////////////
//選擇了Tab2(圓弧運動參數設定)
GetDlgItem(IDC_STATIC_ARC_XAXES)->ShowWindow(iStatus1);
GetDlgItem(IDC_STATIC_ARC_YAXES)->ShowWindow(iStatus1);
GetDlgItem(IDC_STATIC_ARC_VLOWSPEED)->ShowWindow(iStatus1);
GetDlgItem(IDC_STATIC_ARC_VHIGHSPEED)->ShowWindow(iStatus1);
GetDlgItem(IDC_STATIC_ARC_VACCEL)->ShowWindow(iStatus1);
GetDlgItem(IDC_STATIC_ARC_XCEN)->ShowWindow(iStatus1);
GetDlgItem(IDC_STATIC_ARC_YCEN)->ShowWindow(iStatus1);
GetDlgItem(IDC_STATIC_ARC_R)->ShowWindow(iStatus1);
GetDlgItem(IDC_EDIT_ARC_XAXES)->ShowWindow(iStatus1);
GetDlgItem(IDC_EDIT_ARC_YAXES)->ShowWindow(iStatus1);
GetDlgItem(IDC_EDIT_ARC_VLOWSPEED)->ShowWindow(iStatus1);
GetDlgItem(IDC_EDIT_ARC_VHIGHSPEED)->ShowWindow(iStatus1);
GetDlgItem(IDC_EDIT_ARC_VACCEL)->ShowWindow(iStatus1);
GetDlgItem(IDC_EDIT_ARC_XCEN)->ShowWindow(iStatus1);
GetDlgItem(IDC_EDIT_ARC_YCEN)->ShowWindow(iStatus1);
GetDlgItem(IDC_EDIT_ARC_R)->ShowWindow(iStatus1);
GetDlgItem(IDC_GROUP_ARC_SPEEDTYPE)->ShowWindow(iStatus1);
GetDlgItem(IDC_RADIO_ARC_CON)->ShowWindow(iStatus1);
GetDlgItem(IDC_RADIO_ARC_FAST)->ShowWindow(iStatus1);
//////////////////////////////////////////////////
//選擇了Tab3(直線插補運動參數設定)
GetDlgItem(IDC_EDIT_LXAXES)->ShowWindow(iStatus2);
GetDlgItem(IDC_EDIT_LXSTEP)->ShowWindow(iStatus2);
GetDlgItem(IDC_EDIT_LYAXES)->ShowWindow(iStatus2);
GetDlgItem(IDC_EDIT_LYSTEP)->ShowWindow(iStatus2);
GetDlgItem(IDC_EDIT_LLOWSPEED)->ShowWindow(iStatus2);
GetDlgItem(IDC_EDIT_LHIGHSPEED)->ShowWindow(iStatus2);
GetDlgItem(IDC_EDIT_LACCEL)->ShowWindow(iStatus2);
GetDlgItem(IDC_STATIC_LXAXES)->ShowWindow(iStatus2);
GetDlgItem(IDC_STATIC_LXSTEP)->ShowWindow(iStatus2);
GetDlgItem(IDC_STATIC_LYAXES)->ShowWindow(iStatus2);
GetDlgItem(IDC_STATIC_LYSTEP)->ShowWindow(iStatus2);
GetDlgItem(IDC_STATIC_LLOWSPEED)->ShowWindow(iStatus2);
GetDlgItem(IDC_STATIC_LHIGHSPEED)->ShowWindow(iStatus2);
GetDlgItem(IDC_STATIC_LACCEL)->ShowWindow(iStatus2);
GetDlgItem(IDC_RADIO_LINE_CON)->ShowWindow(iStatus2);
GetDlgItem(IDC_RADIO_LINE_FAST)->ShowWindow(iStatus2);
GetDlgItem(IDC_GROUP_LINE_SPEEDTYPE)->ShowWindow(iStatus2);
}
void CDemo1Dlg::OnRadioXaxes()
{
// TODO: Add your control notification handler code here
m_iAxes=IDC_RADIO_XAXES;
SetRadioButton();
}
void CDemo1Dlg::OnRadioYaxes()
{
// TODO: Add your control notification handler code here
m_iAxes=IDC_RADIO_YAXES;
SetRadioButton();
}
///////////////////////////////////
//設置單選按鈕狀態
void CDemo1Dlg::SetRadioButton()
{
CheckRadioButton(IDC_RADIO_XAXES,IDC_RADIO_YAXES,m_iAxes);
CheckRadioButton(IDC_RADIO_CON,IDC_RADIO_FAST,m_iConFast);
CheckRadioButton(IDC_RADIO_PMOVE,IDC_RADIO_VMOVE,m_iPVMove);
CheckRadioButton(IDC_RADIO_AXES1,IDC_RADIO_AXES2,m_iAxesNum);
CheckRadioButton(IDC_RADIO_ARC_CON,IDC_RADIO_ARC_FAST,m_iArcConFast);
CheckRadioButton(IDC_RADIO_LINE_CON,IDC_RADIO_LINE_FAST,m_iLineConFast);
}
void CDemo1Dlg::OnRadioCon()
{
// TODO: Add your control notification handler code here
m_iConFast=IDC_RADIO_CON;
SetRadioButton();
}
void CDemo1Dlg::OnRadioFast()
{
// TODO: Add your control notification handler code here
m_iConFast=IDC_RADIO_FAST;
SetRadioButton();
}
void CDemo1Dlg::OnRadioPmove()
{
// TODO: Add your control notification handler code here
m_iPVMove=IDC_RADIO_PMOVE;
SetRadioButton();
}
void CDemo1Dlg::OnRadioVmove()
{
// TODO: Add your control notification handler code here
m_iPVMove=IDC_RADIO_VMOVE;
SetRadioButton();
}
void CDemo1Dlg::OnRadioAxes1()
{
// TODO: Add your control notification handler code here
m_iAxesNum=IDC_RADIO_AXES1;
SetRadioButton();
}
void CDemo1Dlg::OnRadioAxes2()
{
// TODO: Add your control notification handler code here
m_iAxesNum=IDC_RADIO_AXES2;
SetRadioButton();
}
////////////////////////////////
//初始化運動參數設定
void CDemo1Dlg::InitParam()
{
m_iAxes=IDC_RADIO_XAXES; //以X軸為單軸
m_iConFast=IDC_RADIO_CON; //直線運動常速運動
m_iPVMove=IDC_RADIO_PMOVE; //直線運動為點位運動
m_iAxesNum=IDC_RADIO_AXES1; //直線運動為單軸運動
m_iArcConFast=IDC_RADIO_ARC_CON; //圓弧運動為常速運動
m_iLineConFast=IDC_RADIO_LINE_CON; //直線插補為常速運動
//////////////////////////////////////////////
//直線運動
m_sXAxes="1"; //X軸參數
m_sXLowSpeed="2000";
m_sXHighSpeed="4000";
m_sXAccel="2000";
m_sXStep="4000";
m_sYAxes="2"; //Y軸參數
m_sYLowSpeed="2000";
m_sYHighSpeed="4000";
m_sYAccel="2000";
m_sYStep="4000";
//////////////////////////////////////////////
//直線插補
m_sLXAxes="3"; //X軸軸號
m_sLXStep="4000"; //X軸運動距離
m_sLYAxes="4"; //Y軸軸號
m_sLYStep="4000"; //Y軸運動距離
m_sLLowSpeed="2000";
m_sLHighSpeed="4000";
m_sLAccel="2000";
UpdateData(FALSE);
}
void CDemo1Dlg::OnBtnStartmove()
{
// TODO: Add your control notification handler code here
int ChX,ChY;
int StepX,StepY;
int DirX,DirY;
// int iSelect;
// long CenX,CenY;
// float Angle;
//////////////////////////////////////////
//設置繪圖比例
CString cStr="1";
m_cG.GetDlgItemText(IDC_EDIT_FACTOR,cStr);
m_cG.m_lfFactor=atof(cStr);
//////////////////////////////////////////
//讀取運動參數
UpdateData(TRUE);
// if(m_bBatch) set_batch_flag(1); //批處理模式
// else set_batch_flag(0);
// set_maxspeed(1,8191);
m_iSelect=m_cTabSet.GetCurSel();
if(m_iSelect==0) //直線運動
{
ChX=atoi(m_sXAxes); ChY=atoi(m_sYAxes);
StepX=atoi(m_sXStep); StepY=atoi(m_sYStep);
if(StepX>=0)DirX=1;
else DirX=-1;
if(StepY>=0)DirY=1;
else DirY=-1;
set_maxspeed(ChX,atoi(m_sXHighSpeed));
set_maxspeed(ChY,atoi(m_sYHighSpeed));
set_conspeed(ChX,atoi(m_sXLowSpeed));
set_conspeed(ChY,atoi(m_sYLowSpeed));
set_profile(ChX,atoi(m_sXLowSpeed),atoi(m_sXHighSpeed),atoi(m_sXAccel));
set_profile(ChY,atoi(m_sYLowSpeed),atoi(m_sYHighSpeed),atoi(m_sYAccel));
if(m_iConFast==IDC_RADIO_CON)
{
if(m_iPVMove==IDC_RADIO_PMOVE)
{
if(m_iAxesNum==IDC_RADIO_AXES1)
{
if(m_iAxes==IDC_RADIO_XAXES)
con_pmove(ChX,StepX);
else
con_pmove(ChY,StepY);
}
else
{
con_pmove2(ChX,StepX,ChY,StepY);
}
}
else
{
if(m_iAxesNum==IDC_RADIO_AXES1)
{
if(m_iAxes==IDC_RADIO_XAXES)
con_vmove(ChX,DirX);
else
con_vmove(ChY,DirY);
}
else
{
con_vmove2(ChX,DirX,ChY,DirY);
}
}
}
else
{
if(m_iPVMove==IDC_RADIO_PMOVE)
{
if(m_iAxesNum==IDC_RADIO_AXES1)
{
if(m_iAxes==IDC_RADIO_XAXES)
fast_pmove(ChX,StepX);
else
fast_pmove(ChY,StepY);
}
else
{
fast_pmove2(ChX,StepX,ChY,StepY);
}
}
else
{
if(m_iAxesNum==IDC_RADIO_AXES1)
{
if(m_iAxes==IDC_RADIO_XAXES)
fast_vmove(ChX,DirX);
else
{
fast_vmove(ChY,DirY);
}
}
else
{
fast_vmove2(ChX,DirX,ChY,DirY);
}
}
}
}
else //直線插補運動
{
StepX=atoi(m_sLXStep); StepY=atoi(m_sLYStep);
ChX=atoi(m_sLXAxes); ChY=atoi(m_sLYAxes);
set_vector_conspeed(atof(m_sLLowSpeed));
set_vector_profile(atof(m_sLLowSpeed),atof(m_sLHighSpeed),atof(m_sLAccel));
ChX=atoi(m_sLXAxes); ChY=atoi(m_sLYAxes);
if(m_iLineConFast==IDC_RADIO_LINE_CON)
{
con_line2(ChX,StepX,ChY,StepY);
}
else
{
fast_line2(ChX,StepX,ChY,StepY);
}
}
}
void CDemo1Dlg::OnBtnSuddenstop()
{
// TODO: Add your control notification handler code here
CString strx,stry;
if(m_iSelect==0)
{
strx=m_sXAxes;
stry=m_sYAxes;
}
else//m_iSelect=1
{
strx=m_sLXAxes;
stry=m_sLYAxes;
}
sudden_stop(atoi(strx));
sudden_stop(atoi(stry));
}
void CDemo1Dlg::OnBtnDescendstop()
{
// TODO: Add your control notification handler code here
CString strx,stry;
if(m_iSelect==0)
{
strx=m_sXAxes;
stry=m_sYAxes;
}
else//m_iSelect=1
{
strx=m_sLXAxes;
stry=m_sLYAxes;
}
decel_stop(atoi(strx));
decel_stop(atoi(stry));
}
BOOL CDemo1Dlg::DestroyWindow()
{
// TODO: Add your specialized code here and/or call the base class
KillTimer(1);
return CDialog::DestroyWindow();
}
void CDemo1Dlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
long PosX,PosY;
double dbPosX,dbPosY;
CString sMsg,strx,stry;
// int iErr[10];
int i;
if(m_iSelect==0)
{
strx=m_sXAxes;
stry=m_sYAxes;
}
else//m_iSelect=1
{
strx=m_sLXAxes;
stry=m_sLYAxes;
}
i=get_abs_pos(atoi(strx),&dbPosX); //獲取X軸位置
i=get_abs_pos(atoi(stry),&dbPosY); //獲取Y軸位置
sMsg.Format("%d,%d",atoi(strx),atoi(stry));
PosX = (long)dbPosX; PosY = (long)dbPosY;
m_cG.LineToPos(PosX,PosY); //畫線
// for(i=1;i<11;i++)
// iErr[i-1]=get_err(i); //讀取錯誤代碼
// sMsg.Format("Err: %d %d %d %d %d %d %d %d %d %d"
// ,iErr[0],iErr[1],iErr[2],iErr[3],iErr[4]
// ,iErr[5],iErr[6],iErr[7],iErr[8],iErr[9]);
GetDlgItem(IDC_STATIC_MSG)->SetWindowText(sMsg);
//顯示錯誤代碼
CDialog::OnTimer(nIDEvent);
}
void CDemo1Dlg::OnBtnReset()
{
// TODO: Add your control notification handler code here
CString strx,stry;
if(m_iSelect==0)
{
strx=m_sXAxes;
stry=m_sYAxes;
}
else//m_iSelect=1
{
strx=m_sLXAxes;
stry=m_sLYAxes;
}
reset_pos(atoi(strx));
reset_pos(atoi(stry));
}
void CDemo1Dlg::OnRadioArcCon()
{
// TODO: Add your control notification handler code here
m_iArcConFast=IDC_RADIO_ARC_CON;
SetRadioButton();
}
void CDemo1Dlg::OnRadioArcFast()
{
// TODO: Add your control notification handler code here
m_iArcConFast=IDC_RADIO_ARC_FAST;
SetRadioButton();
}
void CDemo1Dlg::OnRadioLineCon()
{
// TODO: Add your control notification handler code here
m_iLineConFast=IDC_RADIO_LINE_CON;
SetRadioButton();
}
void CDemo1Dlg::OnRadioLineFast()
{
// TODO: Add your control notification handler code here
m_iLineConFast=IDC_RADIO_LINE_FAST;
SetRadioButton();
}
void CDemo1Dlg::OnExit()
{
// TODO: Add your command handler code here
SendMessage(WM_CLOSE,0,0);
}
void CDemo1Dlg::OnCardinfo()
{
// TODO: Add your command handler code here
CString sInfo,str;
long nType,ma[3],mi1[3],mi2[3],Rtn;
CAboutDlg dlgAbout;
sInfo.Format("計算機內插有 %d 張板卡。共有 %d 根軸。\n",glTotalCards,glTotalAxes);
Rtn = get_lib_ver(&ma[0], &mi1[0], &mi2[0]);
Rtn = get_sys_ver(&ma[1], &mi1[1], &mi2[1]);
Rtn = get_card_ver(1, &nType, &ma[2], &mi1[2], &mi2[2]);
str.Format("板卡類型號 :%d\n",nType);
sInfo = sInfo + str;
str.Format("函數庫版本號 :%d.%d.%d\n",ma[0], mi1[0], mi2[0]);
sInfo = sInfo + str;
str.Format("驅動程序版本號 :%d.%d.%d\n",ma[1], mi1[1], mi2[1]);
sInfo = sInfo + str;
str.Format("硬件版本號 :%d.%d.%d\n",ma[2], mi1[2], mi2[2]);
sInfo = sInfo + str;
/*
for(i = 1;i<=glTotalAxes;i++)
{
sudden_stop(i);
}
for(i = 1;i<= glTotalAxes;i++)
{
reset_pos(i);
}
*/
dlgAbout.m_sCardInfo = sInfo;//.GetDlgItem(IDC_CARDINFO)->SetWindowText(sInfo);
dlgAbout.DoModal();
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -