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 + -
显示快捷键?