teachmode.cpp
来自「机械手IPC控制器伺服运动程序」· C++ 代码 · 共 401 行
CPP
401 行
// TeachMode.cpp : implementation file
//
#include "stdafx.h"
#include "alfa.h"
#include "TeachMode.h"
#include "Main.h"
#include "Math.h"
#include "io.h"
#include "sys.h"
#include "MCCL.h"
#define DATAFILE _T("teach.bkp")
#define DATAGLBFILE _T("dataglb.bkp")
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CTeachMode dialog
CTeachMode::CTeachMode(CWnd* pParent /*=NULL*/)
: CDialog(CTeachMode::IDD, pParent)
{
//{{AFX_DATA_INIT(CTeachMode)
//}}AFX_DATA_INIT
Curindex=-1;
flag=0;
}
void CTeachMode::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CTeachMode)
DDX_Control(pDX, IDC_COMBO3, m_combo3);
DDX_Control(pDX, IDC_LIST1, m_list1);
DDX_Control(pDX, IDC_LIST4, m_list4);
DDX_Control(pDX, IDC_COMBO2, m_combo2);
DDX_Control(pDX, IDC_COMBO1, m_combo);
DDX_Text(pDX, IDC_EDIT29, m_num);
DDX_Text(pDX, IDC_EDIT1, m_encmx_str);
DDX_Text(pDX, IDC_EDIT22, m_encmz_str);
DDX_Text(pDX, IDC_EDIT23, m_encsx_str);
DDX_Text(pDX, IDC_EDIT24, m_encsz_str);
DDX_Text(pDX, IDC_EDIT25, m_encmy_str);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CTeachMode, CDialog)
//{{AFX_MSG_MAP(CTeachMode)
ON_CBN_SELCHANGE(IDC_COMBO1, OnSelchangeCombo1)
ON_CBN_SELCHANGE(IDC_COMBO2, OnSelchangeCombo2)
ON_BN_CLICKED(IDC_BUTTON2, OnButton2)
ON_LBN_SELCHANGE(IDC_LIST1, OnSelchangeList1)
ON_BN_CLICKED(IDC_BTN_ADD, OnBtnAdd)
ON_BN_CLICKED(IDC_BTN_INSERT, OnBtnInsert)
ON_BN_CLICKED(IDC_BTN_REMOVE, OnBtnRemove)
ON_WM_SHOWWINDOW()
ON_BN_CLICKED(IDC_BUTTON3, OnButtonSave)
ON_BN_CLICKED(IDC_BUTTON4, OnBtnSet)
ON_BN_CLICKED(IDC_BUTTON5, OnBtnSaveAs)
ON_CBN_SELCHANGE(IDC_COMBO3, OnSelchangeCombo3)
ON_BN_CLICKED(IDC_RADIO1, OnRadioSpec)
ON_BN_CLICKED(IDC_RADIO3, OnRadioPublic)
ON_BN_CLICKED(IDC_BTN_UPDATE, OnBtnUpdate)
ON_CBN_DROPDOWN(IDC_COMBO1, OnDropdownCombo1)
ON_CBN_DROPDOWN(IDC_COMBO2, OnDropdownCombo2)
ON_CBN_DROPDOWN(IDC_COMBO3, OnDropdownCombo3)
ON_WM_DESTROY()
ON_BN_CLICKED(IDC_CHECK17, OnCheck17)
ON_BN_CLICKED(IDC_BUTTON41, OnButton41)
ON_BN_CLICKED(IDC_BUTTON43, OnButton43)
ON_WM_TIMER()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CTeachMode message handlers
BOOL CTeachMode::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
h_SkinDialog.SubClassDialog(m_hWnd);
CFont combofont;
combofont.CreatePointFont(200, "System");
m_combo.SetFont(&combofont);
m_combo2.SetFont(&combofont);
m_combo3.SetFont(&combofont);
for(int i=0; i<sizeof(functionm)/sizeof(functionm[0]); i++)
m_combo.AddString(functionm[i].FunName);
for(i=0; i<sizeof(functions)/sizeof(functions[0]); i++)
m_combo2.AddString(functions[i].FunName);
dlgstack=new CStack();
dlgstack->Create(IDD_STACK,this);
CRect rtsub,rtlist,rt;
dlgstack->GetWindowRect(rtsub);
m_list1.GetWindowRect(rtlist);
dlgstack->MoveWindow(rtlist.Width()+rtlist.left-3,154,
rtsub.Width(),rtsub.Height());
dlgstack2=new CStack2();
dlgstack2->Create(IDD_STACK2,this);
dlgstack2->MoveWindow(rtlist.Width()+rtlist.left-3,154,
rtsub.Width(),rtsub.Height());
dlgmoutput=new CMoutput;
dlgmoutput->Create(IDD_MOUTPUT,this);
dlgmoutput->MoveWindow(rtlist.Width()+rtlist.left-3,154,
rtsub.Width(),rtsub.Height());
dlgminput=new CMinput;
dlgminput->Create(IDD_MINPUT,this);
dlgminput->MoveWindow(rtlist.Width()+rtlist.left-3,154,
rtsub.Width(),rtsub.Height());
dlgmline=new CMline;
dlgmline->Create(IDD_MLINE,this);
dlgmline->MoveWindow(rtlist.Width()+rtlist.left-3,154,
rtsub.Width(),rtsub.Height());
dlgspeedm=new CSpeedM;
dlgspeedm->Create(IDD_SPEEDM,this);
dlgspeedm->MoveWindow(rtlist.Width()+rtlist.left-3,154,
rtsub.Width(),rtsub.Height());
dlgmdelay=new CMdelay;
dlgmdelay->Create(IDD_MDELAY,this);
dlgmdelay->MoveWindow(rtlist.Width()+rtlist.left-3,154,
rtsub.Width(),rtsub.Height());
dlgvacdec=new CVacDetect;
dlgvacdec->Create(IDD_VACDETECT,this);
dlgvacdec->MoveWindow(rtlist.Width()+rtlist.left-3,154,
rtsub.Width(),rtsub.Height());
dlgmnip=new CMnip;
dlgmnip->Create(IDD_MNIP,this);
dlgmnip->MoveWindow(rtlist.Width()+rtlist.left-3,154,
rtsub.Width(),rtsub.Height());
dlgside=new CSide;
dlgside->Create(IDD_SIDE,this);
dlgside->MoveWindow(rtlist.Width()+rtlist.left-3,154,
rtsub.Width(),rtsub.Height());
dlgcorrect=new CCorrect;
dlgcorrect->Create(IDD_CORRECT,this);
dlgcorrect->MoveWindow(rtlist.Width()+rtlist.left-3,154,
rtsub.Width(),rtsub.Height());
dlgmnop=new CMnop;
dlgmnop->Create(IDD_MNOP,this);
dlgmnop->MoveWindow(rtlist.Width()+rtlist.left-3,154,
rtsub.Width(),rtsub.Height());
dlgsoutput=new CSoutput;
dlgsoutput->Create(IDD_SOUTPUT,this);
dlgsoutput->GetWindowRect(rt);
dlgsoutput->MoveWindow(rtlist.Width()+rtlist.left-3,154+rtsub.Height(),
rt.Width(),rt.Height());
dlgsinput=new CSinput;
dlgsinput->Create(IDD_SINPUT,this);
dlgsinput->MoveWindow(rtlist.Width()+rtlist.left-3,154+rtsub.Height(),
rt.Width(),rt.Height());
dlgsline=new CSline;
dlgsline->Create(IDD_SLINE,this);
dlgsline->MoveWindow(rtlist.Width()+rtlist.left-3,154+rtsub.Height(),
rt.Width(),rt.Height());
dlgspeeds=new CSpeedS;
dlgspeeds->Create(IDD_SPEEDS,this);
dlgspeeds->MoveWindow(rtlist.Width()+rtlist.left-3,154+rtsub.Height(),
rt.Width(),rt.Height());
dlgsnip=new CSnip;
dlgsnip->Create(IDD_SNIP,this);
dlgsnip->MoveWindow(rtlist.Width()+rtlist.left-3,154+rtsub.Height(),
rt.Width(),rt.Height());
dlgnipdec=new CNipDetect;
dlgnipdec->Create(IDD_NIPDETECT,this);
dlgnipdec->MoveWindow(rtlist.Width()+rtlist.left-3,154+rtsub.Height(),
rt.Width(),rt.Height());
dlgsdelay=new CSdelay;
dlgsdelay->Create(IDD_SDELAY,this);
dlgsdelay->MoveWindow(rtlist.Width()+rtlist.left-3,154+rtsub.Height(),
rt.Width(),rt.Height());
dlgsnop=new CSnop;
dlgsnop->Create(IDD_SNOP,this);
dlgsnop->MoveWindow(rtlist.Width()+rtlist.left-3,154+rtsub.Height(),
rt.Width(),rt.Height());
dlgemo=new CEmo;
dlgemo->Create(IDD_EMO,this);
dlgemo->GetWindowRect(rtsub);
dlgemo->MoveWindow(rtlist.Width()+rtlist.left-3,418,
rtsub.Width(),rtsub.Height());
dlgemc=new CEmc;
dlgemc->Create(IDD_EMC,this);
dlgemc->MoveWindow(rtlist.Width()+rtlist.left-3,418,
rtsub.Width(),rtsub.Height());
dlgpinput=new CPinput;
dlgpinput->Create(IDD_PINPUT,this);
dlgpinput->MoveWindow(rtlist.Width()+rtlist.left-3,418,
rtsub.Width(),rtsub.Height());
dlgpoutput=new CPoutput;
dlgpoutput->Create(IDD_POUTPUT,this);
dlgpoutput->MoveWindow(rtlist.Width()+rtlist.left-3,418,
rtsub.Width(),rtsub.Height());
dlgaccross=new CAccross;
dlgaccross->Create(IDD_ACCROSS,this);
dlgaccross->MoveWindow(rtlist.Width()+rtlist.left-3,418,
rtsub.Width(),rtsub.Height());
FileDataType=0;
LoadRecords();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
// Master
void CTeachMode::OnSelchangeCombo1()
{
// TODO: Add your control notification handler code here
dlgmline->ShowWindow(FALSE);
dlgspeedm->ShowWindow(FALSE);
dlgmoutput->ShowWindow(FALSE);
dlgminput->ShowWindow(FALSE);
dlgstack->ShowWindow(FALSE);
dlgstack2->ShowWindow(FALSE);
dlgmnip->ShowWindow(FALSE);
dlgmdelay->ShowWindow(FALSE);
dlgvacdec->ShowWindow(FALSE);
dlgcorrect->ShowWindow(FALSE);
dlgside->ShowWindow(FALSE);
dlgmnop->ShowWindow(FALSE);
switch(m_combo.GetCurSel()) {
case Line:
dlgmline->ShowWindow(TRUE);
dlgm=dlgmline;
break;
case Speed:
dlgspeedm->ShowWindow(TRUE);
dlgm=dlgspeedm;
break;
case Outon:
case Outoff:
dlgmoutput->ShowWindow(TRUE);
dlgm=dlgmoutput;
break;
case Waitinput:
dlgminput->ShowWindow(TRUE);
dlgm=dlgminput;
break;
case Vac1on:
case Vac2on:
case Vac3on:
case Vac4on:
case Vac5on:
case Vac1off:
case Vac2off:
case Vac3off:
case Vac4off:
case Vac5off:
case Ckon:
case Ckoff:
dlgmnip->ShowWindow(TRUE);
dlgm=dlgmnip;
break;
case Mdelay:
dlgmdelay->ShowWindow(TRUE);
dlgm=dlgmdelay;
break;
case Vac1Dec:
case Vac2Dec:
case Vac3Dec:
case Vac4Dec:
case Vac5Dec:
case CkDec:
dlgvacdec->ShowWindow(TRUE);
dlgm=dlgvacdec;
break;
case Correct:
dlgcorrect->ShowWindow(TRUE);
dlgm=dlgcorrect;
break;
case Side:
dlgside->ShowWindow(TRUE);
dlgm=dlgside;
break;
case Stack1:
dlgstack->ShowWindow(TRUE);
dlgm=dlgstack;
break;
case Stack2:
dlgstack2->ShowWindow(TRUE);
dlgm=dlgstack2;
break;
case Mnop:
dlgmnop->ShowWindow(TRUE);
dlgm=dlgmnop;
break;
}
}
// Slave
void CTeachMode::OnSelchangeCombo2()
{
// TODO: Add your control notification handler code here
dlgsline->ShowWindow(FALSE);
dlgspeeds->ShowWindow(FALSE);
dlgsoutput->ShowWindow(FALSE);
dlgsinput->ShowWindow(FALSE);
dlgsnip->ShowWindow(FALSE);
dlgsdelay->ShowWindow(FALSE);
dlgnipdec->ShowWindow(FALSE);
dlgsnop->ShowWindow(FALSE);
switch(m_combo2.GetCurSel())
{
case Line:
dlgsline->ShowWindow(TRUE);
dlgs=dlgsline;
break;
case Speed:
dlgspeeds->ShowWindow(TRUE);
dlgs=dlgspeeds;
break;
case Outon:
case Outoff:
dlgsoutput->ShowWindow(TRUE);
dlgs=dlgsoutput;
break;
case Waitinput:
dlgsinput->ShowWindow(TRUE);
dlgs=dlgsinput;
break;
case Nipon:
case Nipoff:
dlgsnip->ShowWindow(TRUE);
dlgs=dlgsnip;
break;
case NipDec:
dlgnipdec->ShowWindow(TRUE);
dlgs=dlgnipdec;
break;
case Sdelay:
dlgsdelay->ShowWindow(TRUE);
dlgs=dlgsdelay;
break;
default:
dlgsnop->ShowWindow(TRUE);
dlgs=dlgsnop;
break;
}
}
// Exit
void CTeachMode::OnButton2()
{
// TODO: Add your control notification handler code here
if(m_CycleSt>0) {
if(MessageBox("祘Α刚笲锣い ! 絋﹚瞒秨 ?", "alfa",
MB_OKCANCEL|MB_ICONEXCLAMATION)==IDCANCEL) return;
else {
m_CycleSt=0;
// MCC_AbortMotion(0);
// MCC_AbortMotion(1);
// MCC_AbortMotion(2);
MCC_AbortMotionEx(MX_DecTime*0.1, GROUP_INDEX0);
MCC_AbortMotionEx(SX_DecTime*0.1, GROUP_INDEX1);
MCC_AbortMotionEx(Y_DecTime*0.1, GROUP_INDEX2);
if((wInput0 & 0x0001)>0) OUTPUT0=OUTPUT0 & ~0xD100;
else if((wInput0 & 0x4000)>0) OUTPUT0=OUTPUT0 & ~0x4000;
}
}
else if(MessageBox("絋﹚瞒秨 ? ", "alfa", MB_OKCANCEL|MB_ICONEXCLAMATION)==IDCANCEL)
return;
OUTPUT0=OUTPUT0 | 0x0200;
MCC_SetRIOOutputValue(OUTPUT0, RIO_SET1, RIO_PORT0, CARD_INDEX);
KillTimer(55);
DiagID=0;
ShowWindow(FALSE);
CMain * main=(CMain *)GetParent();
ShowWindow(FALSE);
main->dlgmainfrm->ShowWindow(TRUE);
}
void CTeachMode::ShowCommand(int index)
{
int i, j=m_list1.GetCount();
if(index>=0)
for(i=index; i<j; i++)
m_list1.DeleteString(index);
else
index=Curindex;
char que[100],quesub[20];
for(i=index; i<=Curindex; i++)
{
memset(que,0,100);
memset(quesub,0,20);
sprintf(que,"%4d ", i+1);
if(command[i].fpublic==1)
{
switch(command[i].pubpara.funid)
{
case 0:
strcat(que, " 绢︽(Y=");
sprintf(quesub, "%7.2f", command[i].pubpara.y);
strcat(que, quesub);
strcat(que, ")");
strcat(que, " 硉
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?