⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 smt5kview.cpp

📁 一个很好的VC++程序
💻 CPP
📖 第 1 页 / 共 2 页
字号:
				}
				break;
		
		case 3 :
				if(AxisNo==CurrentAxis)
				{
				pMonitorAxis[0]->UpdateIntSrc(GetBit(lData,0,8));
				}
				break;
		case 4 :
				if(CurrentAxis==0)
					pMonitorAxis[0]->UpdateIO(GetBit(lData,0,8));
				else if(CurrentAxis==1)
					pMonitorAxis[0]->UpdateIO(GetBit(lData,8,8));
				break;
		case 5 :
				if(CurrentAxis==2)
					pMonitorAxis[0]->UpdateIO(GetBit(lData,0,8));
				else if(CurrentAxis==3)
					pMonitorAxis[0]->UpdateIO(GetBit(lData,8,8));
				break;
		case 13 :
				if(AxisNo==CurrentAxis)
				{
				pMonitorAxis[0]->UpdateOUTH(GetBit(lData,7,5));
				}
				break;
		case 14 :
				pMonitorAxis[0]->UpdateOUTL(GetBit(lData,CurrentAxis*4,4));
				break;
		case 15 :
				pMonitorIPL->UpdateWR5(GetBit(lData,0,16));
				break;
		case 20 :
				if(!m_ShowIplState && AxisNo == CurrentAxis )
				{
					pMonitorAxis[0]->UpdateLP(lData);
					if(!m_DrawSelEP)
						AddPointToLPCurve(lData);
				}
				if(AxisIsDrving) 
					pDoc->AddData(0,AxisNo,lData);
					
				break;
		case 21 :
				if(!m_ShowIplState && AxisNo == CurrentAxis )
				{
					pMonitorAxis[0]->UpdateEP(lData);
					if(m_DrawSelEP)
						AddPointToLPCurve(lData);
				}
				if(AxisIsDrving) 
					pDoc->AddData(1,AxisNo,lData);
				break;
		case 22 :
				if(!m_ShowIplState && AxisNo == CurrentAxis )
				{
					pMonitorAxis[0]->UpdateCV(lData);
					AddPointToCVCurve(lData);
				}
				if(AxisNo==pMonitorIPL->m_Axis[0])
					pMonitorIPL->UpdateCV(lData);
				if(AxisIsDrving) 
					pDoc->AddData(2,AxisNo,lData);
				break;
		case 23 :
				if(!m_ShowIplState && AxisNo == CurrentAxis )
				{
		//			pMonitorAxis[0]->UpdateCA(lData);
					AddPointToCACurve(lData);
				}
				if(AxisNo==pMonitorIPL->m_Axis[0])
					pMonitorIPL->UpdateCA(lData);
				if(AxisIsDrving) 
					pDoc->AddData(3,AxisNo,lData);
				break;
		default:
				break;
		}


	return 0;
}


LONG CSMT5KView::OnCommunication(WPARAM ch, LPARAM port)
{
	//HWND hWndReadReg;
	static int wData;
	int lData;
	CString str1;

	if(port==SerialPortNo) //COM1接收到数据
	{
		switch(ch)
		{
		case '$':
			bStart = TRUE;
			break;
		case '!':			// for notes from serial port
			bStart = FALSE;
			m_strRXDataCOM1.Empty();
			break;
		case '#':
			wData = atoi((LPCTSTR)m_strRXDataCOM1);
			m_strRXDataCOM1.Empty();
			break;
		case '*':
			bStart = FALSE;
			lData = atoi((LPCTSTR)m_strRXDataCOM1);
			m_strRXDataCOM1.Empty();

			AfxGetMainWnd()->SendMessage(WM_SM5K_DATA_READ, (WPARAM) wData, (LPARAM) lData );
			SendMessage(WM_SM5K_DATA_READ, (WPARAM) wData, (LPARAM) lData );
			break;
		default:
			if(bStart==TRUE)
			{
				m_strRXDataCOM1 += (char)ch;
			}
		}
	}

	return 0;
}

void CSMT5KView::OnTimer(UINT nIDEvent) 
{
	// TODO: Add your message handler code here and/or call default
	CFormView::OnTimer(nIDEvent);
}


void CSMT5KView::SendString(CString &str, int Port)
{
	CString str1;
	str1='$'+str+"*";
	m_ComPort.WriteToPort((LPCTSTR)str1);
	
	TRACE(str1);
}


void CSMT5KView::OnTestReg() 
{
	// TODO: Add your command handler code here
	
	CRegTestDlg RegTestDlg;
	pRegTestDlg = &RegTestDlg;
	RegTestDlg.DoModal();
}

void CSMT5KView::OnTestConfig() 
{
	CString str;

	CConfigDlg ConfigDlg;
	pConfigDlg = &ConfigDlg;
	ConfigDlg.DoModal();
}


int CSMT5KView::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CFormView::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	// TODO: Add your specialized creation code here
	pMonitorAxis[0] = new CMonitorAxis;
	pMonitorAxis[0]->Create(IDD_MONITOR_AXIS_DLG,this);	
	pMonitorAxis[0]->MoveWindow(0,0,270,500);
	pMonitorAxis[0]->ShowWindow(SW_SHOW);

	pMonitorIPL = new CMonitorIPL;
	pMonitorIPL->Create(IDD_MONITOR_IPL_DLG,this);	
	pMonitorIPL->MoveWindow(0,0,900,500);
	pMonitorIPL->ShowWindow(SW_HIDE);
	
	return 0;
}


void CSMT5KView::SetDrawRange(short ParamID, long Data , short AxisXEn, short AxisYEn, short AxisZEn, short AxisUEn)
{
	if     (ParamID == 6 && Data!=0 )	// P
	{
		if(AxisXEn) m_YDivLP[0] = abs(Data);	
		if(AxisYEn) m_YDivLP[1] = abs(Data);	
		if(AxisZEn) m_YDivLP[2] = abs(Data);	
		if(AxisUEn) m_YDivLP[3] = abs(Data);
	}
	else if(ParamID == 5 && Data!=0 )	// V
	{
		if(AxisXEn) m_YDivCV[0] = Data;	
		if(AxisYEn) m_YDivCV[1] = Data;	
		if(AxisZEn) m_YDivCV[2] = Data;	
		if(AxisUEn) m_YDivCV[3] = Data;
	}
	else if(ParamID == 2 && Data!=0 )  // A
	{
		if(AxisXEn) m_YDivCA[0] = Data;	
		if(AxisYEn) m_YDivCA[1] = Data;	
		if(AxisZEn) m_YDivCA[2] = Data;	
		if(AxisUEn) m_YDivCA[3] = Data;
	}
}

int CSMT5KView::GetAxisLpRange(short AxisNo)
{
	return m_YDivLP[AxisNo];
}

void CSMT5KView::UpdateCurveRect(CRect m_CurveRect)
{
	CRect InvalidRect = m_CurveRect;
	CClientDC ClientDC(this);
	OnPrepareDC(&ClientDC);
	ClientDC.LPtoDP(&InvalidRect);
	InvalidateRect(&InvalidRect);
}


void CSMT5KView::OnDeltaposSpinXRange(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_UPDOWN* pNMUpDown = (NM_UPDOWN*)pNMHDR;
	// TODO: Add your control notification handler code here
	if(pNMUpDown->iDelta==1)	// up
		m_XDiv[CurrentAxis] *= 2;
	else if(pNMUpDown->iDelta==-1)	// down
		m_XDiv[CurrentAxis] /= 2;
	
	UpdateCurveRect(m_RectCV);
	UpdateCurveRect(m_RectCA);
	UpdateCurveRect(m_RectLP);

	*pResult = 0;
}

void CSMT5KView::OnDeltaposSpinCvYRange(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_UPDOWN* pNMUpDown = (NM_UPDOWN*)pNMHDR;
	// TODO: Add your control notification handler code here
	if(pNMUpDown->iDelta==-1)	// up
		m_YDivCV[CurrentAxis] /= 2;
	else if(pNMUpDown->iDelta==1)	// down
		m_YDivCV[CurrentAxis] *= 2;
	
	UpdateCurveRect(m_RectCV);

	*pResult = 0;
}


void CSMT5KView::OnDeltaposSpinLpRange(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_UPDOWN* pNMUpDown = (NM_UPDOWN*)pNMHDR;
	// TODO: Add your control notification handler code here
	if(pNMUpDown->iDelta==-1)	// up
		m_YDivLP[CurrentAxis] /= 2;
	else if(pNMUpDown->iDelta==1)	// down
		m_YDivLP[CurrentAxis] *= 2;
	
	UpdateCurveRect(m_RectLP);
	
	*pResult = 0;
}

void CSMT5KView::OnDeltaposSpinCaRange(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_UPDOWN* pNMUpDown = (NM_UPDOWN*)pNMHDR;
	// TODO: Add your control notification handler code here
	if(pNMUpDown->iDelta==-1)	// up
	{
		m_YDivCA[CurrentAxis] /= 2;
	}
	else if(pNMUpDown->iDelta==1)	// down
	{
		m_YDivCA[CurrentAxis] *= 2;
	}
	
	UpdateCurveRect(m_RectCA);
	
	*pResult = 0;
}


void CSMT5KView::OnTestDrvMove() 
{
	pDrvFuncTestDlg = new CDrvFuncTest;
	pDrvFuncTestDlg->Create(IDD_DRV_FUNC_TEST_DLG,NULL);	
//	pDrvFuncTestDlg->MoveWindow(450,100,550,580);	
	pDrvFuncTestDlg->ShowWindow(SW_SHOW);	

}

void CSMT5KView::OnTestIplMove() 
{
	pIPLFuncTestDlg = new CIPLFuncTest;
	pIPLFuncTestDlg->Create(IDD_IPL_FUNC_TEST_DLG,NULL);	
	pIPLFuncTestDlg->ShowWindow(SW_SHOW);	
}

void CSMT5KView::OnTestWriteReg() 
{
	CWriteReg WriteRegisterDlg;
	WriteRegisterDlg.DoModal();
}

void CSMT5KView::OnTestWriteParam() 
{
	CWriteParam WriteParameterDlg;
	WriteParameterDlg.DoModal();
}

void CSMT5KView::OnTestSendDrvcmd() 
{
	CWriteDrvCmd WriteDrvCommandDlg;
	WriteDrvCommandDlg.DoModal();
}

void CSMT5KView::OnTestSendIplcmd() 
{
	CWriteIPLCmd WriteIPLCommandDlg;
	WriteIPLCommandDlg.DoModal();
}

void CSMT5KView::OnTestReadReg() 
{
	CReadReg ReadRegisterDlg;
	pReadRegisterDlg = &ReadRegisterDlg;
	ReadRegisterDlg.DoModal();
}

void CSMT5KView::OnTestShowDrv() 
{
	m_ShowIplState = 0;

	pMonitorAxis[0]->ShowWindow(SW_SHOW);
	pMonitorIPL->ShowWindow(SW_HIDE);
	pMonitorIPL->KillTimer(2); 
	
	GetDlgItem(IDC_STATIC_DRAW_LP)->ShowWindow(SW_SHOW);
	GetDlgItem(IDC_STATIC_DRAW_CV)->ShowWindow(SW_SHOW);
	GetDlgItem(IDC_STATIC_DRAW_CA)->ShowWindow(SW_SHOW);
	GetDlgItem(IDC_SPIN_LP_RANGE )->ShowWindow(SW_SHOW);
	GetDlgItem(IDC_SPIN_CV_RANGE )->ShowWindow(SW_SHOW);
	GetDlgItem(IDC_SPIN_CA_RANGE )->ShowWindow(SW_SHOW);
	GetDlgItem(IDC_SPIN_X_RANGE  )->ShowWindow(SW_SHOW);
//	GetDlgItem(IDC_STATIC_GROUP  )->ShowWindow(SW_SHOW);
	GetDlgItem(IDC_BUTTON_CLR    )->ShowWindow(SW_SHOW);
}

void CSMT5KView::OnUpdateTestShowDrv(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->SetRadio(!m_ShowIplState);
}

void CSMT5KView::OnTestShowIpl() 
{
	m_ShowIplState = 1;

	pMonitorAxis[0]->ShowWindow(SW_HIDE);
	pMonitorIPL->ShowWindow(SW_SHOW);
	pMonitorIPL->SetTimer(2,300,NULL); 
	
	GetDlgItem(IDC_STATIC_DRAW_LP)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_STATIC_DRAW_CV)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_STATIC_DRAW_CA)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_SPIN_LP_RANGE )->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_SPIN_CV_RANGE )->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_SPIN_CA_RANGE )->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_SPIN_X_RANGE  )->ShowWindow(SW_HIDE);
//	GetDlgItem(IDC_STATIC_GROUP  )->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_BUTTON_CLR    )->ShowWindow(SW_HIDE);
}

void CSMT5KView::OnUpdateTestShowIpl(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->SetRadio(m_ShowIplState);
}

void CSMT5KView::OnButtonClr() 
{
	// TODO: Add your control notification handler code here

	CSMT5KDoc *pDoc = GetDocument();
	
	pDoc->ClearData(0);
	pDoc->ClearData(1);
	pDoc->ClearData(2);
	pDoc->ClearData(3);

	UpdateCurveRect(m_RectLP);
	UpdateCurveRect(m_RectCV);
	UpdateCurveRect(m_RectCA);
	
}

void CSMT5KView::OnTestDownSpeed() 
{
	m_strTXDataCOM1.Empty();
	pMonitorAxis[0]->SpeedDownStop();	
	pMonitorIPL->SpeedDownStop();	
	m_ComPort.WriteToPort((LPCTSTR)m_strTXDataCOM1);
}

void CSMT5KView::OnTestImstop() 
{
	m_strTXDataCOM1.Empty();
	pMonitorAxis[0]->EmergencyStop();	
	pMonitorIPL->EmergencyStop();	
	m_ComPort.WriteToPort((LPCTSTR)m_strTXDataCOM1);
}

void CSMT5KView::OnTestGoHome() 
{
	m_strTXDataCOM1.Empty();
	//pMonitorAxis[0]->GoHome();	
	pMonitorIPL->GoHome();	
	m_ComPort.WriteToPort((LPCTSTR)m_strTXDataCOM1);
}

void CSMT5KView::OnButton2() 
{
	m_DrawSelEP = 0;
	UpdateCurveRect(m_RectLP);
}

void CSMT5KView::OnButton6() 
{
	m_DrawSelEP = 1;
	UpdateCurveRect(m_RectLP);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -