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

📄 mainfrm.cpp

📁 一个用于无刷直流电动机的驱动与控制程序.里面所用的采集卡的型号为MC08.
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	
	int itemnumber =pApp->m_nHitNumber ;//树型控件点击编号
	BOOL bopendataflag=FALSE;

	CString m_DataName;
	int i;
	int first[80];
	float second[80];	
	float third[80];
	float four[80];
	float five[80];
	float six[80];

	for (i=0;i<80;i++)
	{
		first[i]=i+1;
		second[i]=0;	
		third[i]=0;
		four[i]=0;
		five[i]=0;
		six[i]=0;
	}

	switch(itemnumber) 
	{	
		case 0x011:		//效率试验
			bopendataflag=TRUE;
			break;
		case 0x012:		//超载试验
			bopendataflag=TRUE;
			break;
		case 0x013:		//传动精度试验
			bopendataflag=TRUE;		
			break;
		case 0x014:		//过度过程试验
			bopendataflag=TRUE;
			//MessageBox("过度过程试验");
			break;
		case 0x015:		//启动力矩试验
			bopendataflag=TRUE;
			break;
		case 0x016:		//空程回差试验
			bopendataflag=TRUE;
			break;
		case 0x017:		//刚度及回差试验
			bopendataflag=TRUE;		
			break;
		default:
			bopendataflag=FALSE;
			break;
	}
	if (bopendataflag)
	{	
		switch(itemnumber) 
		{
	
			case 0x011:		//效率试验
				for (i=0;i<60;i++)
				{
					second[i]=(float)(pApp->pCTestFormDoc->pPowerInRate[i]);
					third[i]=(float)(pApp->pCTestFormDoc->pPowerOutRate[i]);
					four[i]=(float)(pApp->pCTestFormDoc->pPowerInTorque[i]);
					five[i]=(float)(pApp->pCTestFormDoc->pPowerOutTorque[i]);
					six[i]=(float)(pApp->pCTestFormDoc->pPowerData[i]);					
				}
				
				second[60]=(float)(pApp->pCTestFormDoc->motorRate);		//所设定电机转速
				third[60]=(float)(pApp->pCTestFormDoc->motorDirect);	//所设定电机转向				
				break;
			case 0x012:		//超载试验
				for (i=0;i<60;i++)
				{
					second[i]=(float)(pApp->pCTestFormDoc->pPowerInRate[i]);
					third[i]=(float)(pApp->pCTestFormDoc->pPowerOutRate[i]);
					four[i]=(float)(pApp->pCTestFormDoc->pPowerInTorque[i]);
					five[i]=(float)(pApp->pCTestFormDoc->pPowerOutTorque[i]);
					six[i]=(float)(pApp->pCTestFormDoc->pPowerData[i]);					
				}				
				second[60]=(float)(pApp->pCTestFormDoc->motorRate);	//所设定电机转速
				third[60]=(float)(pApp->pCTestFormDoc->motorDirect);//所设定电机转向
				break;
			case 0x013:		//传动精度试验
				for (i=0;i<72;i++)
				{
					second[i]=(float)(pApp->pCTestFormDoc->pErrorData[i]);					
				}				
				second[72]=(float)(pApp->pCTestFormDoc->motorRate);	//所设定电机转速
				third[72]=(float)(pApp->pCTestFormDoc->motorDirect);//所设定电机转向						
				break;
			case 0x014:		//过度过程试验
				for (i=0;i<21;i++)
				{
					second[i]=(float)(pApp->pCTestFormDoc->pPowerOutRate[i]);										
				}				
				second[21]=(float)(pApp->pCTestFormDoc->motorRate);	//所设定电机转速
				third[21]=(float)(pApp->pCTestFormDoc->motorDirect);	//所设定电机转向
//				i=(int) (four[21]);			//超载试验上升范围上界
//				first[0]=(int) (five[21]);	//超载试验上升范围下界
				six[21]=(float)(pApp->pCTestFormDoc->nTotalCoderNumber);//稳定范围							
				//MessageBox("过度过程试验");
				break;
			case 0x015:		//启动力矩试验
				for (i=0;i<7;i++)
				{
					second[i]=(float)(pApp->pCTestFormDoc->pTangleData[i]);
					four[i]=(float)(pApp->pCTestFormDoc->pTourqeData[i]);					
				}				
				second[7]=(float)(pApp->pCTestFormDoc->torquearm);//力臂长度
				third[7]=(float)(pApp->pCTestFormDoc->light);	//加载重量
				break;
			case 0x016:		//空程回差试验
				for (i=0;i<72;i++)
				{
					second[i]=(float)(pApp->pCTestFormDoc->Berrordata[i]);									
				}				
				second[72]=(float)(pApp->pCTestFormDoc->motorRate);	//所设定电机转速
				third[72]=(float)(pApp->pCTestFormDoc->motorDirect);//所设定电机转向
				four[72]=(float)(pApp->pCTestFormDoc->motorTangle);	//所设定电机正向转角
				five[72]=(float)(pApp->pCTestFormDoc->motorCTangle);//所设定电机反向转角				
				break;
			case 0x017:		//刚度及回差试验
				for (i=0;i<33;i++)
				{
					second[i]=(float)(pApp->pCTestFormDoc->Rtorquedata[i]);
					third[i]=(float)(pApp->pCTestFormDoc->Rerrordata[i]);									
				}				
				second[33]=(float)(pApp->pCTestFormDoc->nTotalCoderNumber);//单向加载次数
				third[33]=(float)(pApp->pCTestFormDoc->torquearm);	//力臂长度
				five[33]=(float)(pApp->pCTestFormDoc->light);		//卸载重量				
				break;
			default:				
				break;
			}

		CFileDialog m_FileSaveDialog(FALSE,
							  "xls|txt",
							  NULL,
							  OFN_HIDEREADONLY,							  
							  "(*.xls)|*.xls|(*.txt)|*.txt||",	
							  this);
	
		if(m_FileSaveDialog.DoModal()==IDOK)
		{
     		m_DataName=m_FileSaveDialog.GetFileName();
     		FILE *file;
	    	file=fopen(m_DataName,"w");	
			fprintf(file,"序号\t第一个值\t第二个值\t第三个值\t第四个值\t第五个值\t\n");
			for( i=0;i<80;i++)
			{
		fprintf(file,"%f\t%f\t%f\t%f\t%f\t%f\t\n",&first[i],&second[i],&third[i],&four[i],&five[i],&six[i]);
			//	fscanf(file,"%d\n",&num[i]);
			}
		  	fclose(file);
			
		}
	}
	else
		MessageBox("请在进行具体的试验之后才进行保存数据的操作!");
}

void CMainFrame::OnOpen() 
{
	// TODO: Add your command handler code here
	CTestFormApp *pApp=(CTestFormApp *)AfxGetApp();	
	
	int itemnumber =pApp->m_nHitNumber ;//树型控件点击编号
	BOOL bopendataflag=FALSE;

	CString m_DataName;
	int i;
	int first[80];
	float second[80];	
	float third[80];
	float four[80];
	float five[80];
	float six[80];

	switch(itemnumber) 
	{
	
		case 0x011:		//效率试验
			bopendataflag=TRUE;
			break;
		case 0x012:		//超载试验
			bopendataflag=TRUE;
			break;
		case 0x013:		//传动精度试验
			bopendataflag=TRUE;		
			break;
		case 0x014:		//过度过程试验
			bopendataflag=TRUE;
			//MessageBox("过度过程试验");
			break;
		case 0x015:		//启动力矩试验
			bopendataflag=TRUE;
			break;
		case 0x016:		//空程回差试验
			bopendataflag=TRUE;
			break;
		case 0x017:		//刚度及回差试验
			bopendataflag=TRUE;		
			break;
		default:
			bopendataflag=FALSE;
			break;
	}
	if (bopendataflag)
	{
		for (i=0;i<80;i++)
		{
			first[i]=0;
			second[i]=0;	
			third[i]=0;
			four[i]=0;
			five[i]=0;
			six[i]=0;
		}

		CFileDialog m_FileOpenDialog(TRUE,
	 						  "txt|xls",
							  NULL,
							  OFN_HIDEREADONLY,
							  "历史数据文件(*.txt)|*.txt|历史数据文件(*.xls)|*.xls||",
  							  this);
	
		if(m_FileOpenDialog.DoModal()==IDOK)
		{
     		m_DataName=m_FileOpenDialog.GetFileName();			
     		FILE *file;
			if(!fopen(m_DataName,"r"))
			{			
				AfxMessageBox("不能打开文件");
				return ;
			}
	    	file=fopen(m_DataName,"r");	
			fscanf(file,"序号\t第一个值\t第二个值\t第三个值\t第四个值\t第五个值\t\n");
			for( i=0;i<80;i++)
			{
		fscanf(file,"%d\t%f\t%f\t%f\t%f\t%f\t\n",&first[i],&second[i],&third[i],&four[i],&five[i],&six[i]);
			//	fscanf(file,"%d\n",&num[i]);
			}
		  	fclose(file);
			switch(itemnumber) 
			{	
				case 0x011:		//效率试验
					for (i=0;i<60;i++)
					{
						pApp->pCTestFormDoc->pPowerInRate[i] =second[i];
						pApp->pCTestFormDoc->pPowerOutRate[i] =third[i];
						pApp->pCTestFormDoc->pPowerInTorque[i] =four[i];
						pApp->pCTestFormDoc->pPowerOutTorque[i] =five[i];
						pApp->pCTestFormDoc->pPowerData[i] =six[i];					
					}
					pApp->pCTestFormDoc->nPowerNumber=60;
					pApp->pCTestFormDoc->motorRate=second[60];	//所设定电机转速
					pApp->pCTestFormDoc->motorDirect=(int) (third[60]);	//所设定电机转向				
					pApp->pCTestFormView->powerDrawDlg.SendMessage(WM_OPENDATA,0,0);//发送消息至绘图窗口
					pApp->pMotorDlgBase->powDlg.SendMessage(WM_OPENDATA,0,0);//发送消息至主控窗口
					break;
				case 0x012:		//超载试验
					for (i=0;i<60;i++)
					{
						pApp->pCTestFormDoc->pPowerInRate[i] =second[i];
						pApp->pCTestFormDoc->pPowerOutRate[i] =third[i];
						pApp->pCTestFormDoc->pPowerInTorque[i] =four[i];
						pApp->pCTestFormDoc->pPowerOutTorque[i] =five[i];
						pApp->pCTestFormDoc->pPowerData[i] =six[i];					
					}
					pApp->pCTestFormDoc->nPowerNumber=60;
					pApp->pCTestFormDoc->motorRate=second[60];	//所设定电机转速
					pApp->pCTestFormDoc->motorDirect=(int) (third[60]);	//所设定电机转向
					pApp->pCTestFormView->overDrawDlg.SendMessage(WM_OPENDATA,0,0);//发送消息至绘图窗口
					pApp->pMotorDlgBase->overDlg.SendMessage(WM_OPENDATA,0,0);//发送消息至主控窗口
					break;
				case 0x013:		//传动精度试验
					for (i=0;i<72;i++)
					{
						pApp->pCTestFormDoc->pErrorData[i] =second[i];					
					}	
					pApp->pCTestFormDoc->nTotalCoderNumber=72;
					pApp->pCTestFormDoc->motorRate=second[72];	//所设定电机转速
					pApp->pCTestFormDoc->motorDirect=(int) (third[72]);	//所设定电机转向
					pApp->pCTestFormView->prvDrawDlg.SendMessage(WM_OPENDATA,0,0);//发送消息至绘图窗口
					pApp->pMotorDlgBase->prvDlg.SendMessage(WM_OPENDATA,0,0);//发送消息至主控窗口		
					break;
				case 0x014:		//过度过程试验
					for (i=0;i<21;i++)
					{
						pApp->pCTestFormDoc->pPowerOutRate[i] =second[i];										
					}
					pApp->pCTestFormDoc->nPowerNumber=21;
					pApp->pCTestFormDoc->motorRate=second[21];	//所设定电机转速
					pApp->pCTestFormDoc->motorDirect=(int) (third[21]);	//所设定电机转向
					i=(int) (four[21]);			//超载试验上升范围上界
					first[0]=(int) (five[21]);	//超载试验上升范围下界
					pApp->pCTestFormDoc->nTotalCoderNumber=(int) (six[21]);//稳定范围
					pApp->pCTestFormView->respDrawDlg.SendMessage(WM_OPENDATA,0,0);//发送消息至绘图窗口
					pApp->pMotorDlgBase->respDlg.SendMessage(WM_OPENDATA,i,first[0]);//发送消息至主控窗口				
					//MessageBox("过度过程试验");
					break;
				case 0x015:		//启动力矩试验
					for (i=0;i<7;i++)
					{
						pApp->pCTestFormDoc->pTangleData[i] =second[i];
						pApp->pCTestFormDoc->pTourqeData[i] =four[i];					
					}	
					pApp->pCTestFormDoc->nPowerNumber=7;
					pApp->pCTestFormDoc->torquearm = second[7];//力臂长度
					pApp->pCTestFormDoc->light=third[7];	//加载重量
					pApp->pCTestFormView->startDrawDlg.SendMessage(WM_OPENDATA,0,0);//发送消息至绘图窗口
					pApp->pMotorDlgBase->startDlg.SendMessage(WM_OPENDATA,0,0);//发送消息至主控窗口
					break;
				case 0x016:		//空程回差试验
					for (i=0;i<72;i++)
					{
						pApp->pCTestFormDoc->Berrordata[i] =second[i];									
					}
					pApp->pCTestFormDoc->nPowerNumber=72;
					pApp->pCTestFormDoc->motorRate=second[72];	//所设定电机转速
					pApp->pCTestFormDoc->motorDirect=(int) (third[72]);	//所设定电机转向
					pApp->pCTestFormDoc->motorTangle = four[72];	//所设定电机正向转角
					pApp->pCTestFormDoc->motorCTangle = five[72];	//所设定电机反向转角
					pApp->pCTestFormView->blankeDrawDlg.SendMessage(WM_OPENDATA,0,0);//发送消息至绘图窗口
					pApp->pMotorDlgBase->blankDlg.SendMessage(WM_OPENDATA,0,0);//发送消息至主控窗口

					break;
				case 0x017:		//刚度及回差试验
					for (i=0;i<33;i++)
					{
						pApp->pCTestFormDoc->Rtorquedata[i] =second[i];
						pApp->pCTestFormDoc->Rerrordata[i] =third[i];									
					}
					pApp->pCTestFormDoc->nPowerNumber=33;
					pApp->pCTestFormDoc->nTotalCoderNumber =(long)(second[33]);//单向加载次数
					pApp->pCTestFormDoc->torquearm = third[33];	//力臂长度
					pApp->pCTestFormDoc->light=five[33];		//卸载重量
					pApp->pCTestFormView->rigidDrawDlg.SendMessage(WM_OPENDATA,0,0);//发送消息至绘图窗口
					pApp->pMotorDlgBase->rigidDlg.SendMessage(WM_OPENDATA,0,0);//发送消息至主控窗口
					break;
				default:				
					break;
			}
		}
	}
	else
		MessageBox("请选择具体的试验项目之后才进行打开历史数据的操作!");
}

⌨️ 快捷键说明

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