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

📄 speedcollect.cpp

📁 采集电压 用研华6220板卡采集电压值 实时显示 电压变化
💻 CPP
📖 第 1 页 / 共 2 页
字号:

	dcMemory.TextOut(x0+2*dd2,zero+15,lcx);

	dd1 = (int)set_t + 100;
	lcx.Format("%d", dd1);

	dcMemory.TextOut(x0+2*dd2+200,zero+15,lcx);

	dd1 = (int)set_t + 200;
	lcx.Format("%d", dd1);

	dcMemory.TextOut(x0+2*dd2+400,zero+15,lcx);

	dd1 = (int)set_t + 300;
	lcx.Format("%d", dd1);

	dcMemory.TextOut(x0+2*dd2+600,zero+15,lcx);

	dd1 = (int)set_t + 400;
	lcx.Format("%d", dd1);

	dcMemory.TextOut(x0+2*dd2+800,zero+15,lcx);

	dd1 = (int)set_t + 500;
	lcx.Format("%d", dd1);

	dcMemory.TextOut(x0+2*dd2+1000,zero+15,lcx);

	int i, j;
	for(j=0;j<6;j++)
	{
		for(i=0;i<5;i++)
		{
			if(i==0)
			{
				dcMemory.MoveTo(x0+2*dd2+200*j,zero);
				dcMemory.LineTo(x0+2*dd2+200*j,zero+20);
			}
			else
			{					
				dcMemory.MoveTo(x0+2*dd2+200*j+i*40,zero);
				dcMemory.LineTo(x0+2*dd2+200*j+i*40,zero+10);
			
			}
		}
	}

}

	
void SpeedCollect::DrawSampleVCurve()
{
	g_mutex.Lock();
	int size = mypaintpoint.GetSize();
	g_mutex.Unlock();
	if(size<=0)
		return;
	
	
	CPen newPen;
	CPen *oldpen;
	newPen.CreatePen(PS_SOLID,2,RGB(255,0,0));//红
	oldpen=dcMemory.SelectObject(&newPen);	
	PENREADY=TRUE;

   	POINT now_point,old_point;
	int i, first_nouse;
	first_nouse = -1;
		
	old_point.x=long(x0+2*(mypaintpoint[0].t));
	old_point.y=zero-int((mypaintpoint[0].test_v));
	if(old_point.x <0)
		first_nouse = 0;

	dcMemory.MoveTo(old_point);		

	for(i = 0; i < size; i++)
	{
		now_point.x = x0 + (int)(2*mypaintpoint[i].t);
		now_point.y = zero - int(mypaintpoint[i].test_v);
		dcMemory.LineTo(now_point); 

		if(now_point.x <0)
			first_nouse = i;

	}
	//剔除画不上的点
	if(first_nouse >= 0)
	{
		g_mutex.Lock();
		for(i =0; i<first_nouse; i++)
		{
			mypaintpoint.RemoveAt(0);
		}
		g_mutex.Unlock();
	}

	dcMemory.SelectObject(oldpen);
	newPen.DeleteObject();
	PENREADY=FALSE;

}


void SpeedCollect::DrawSampleRVCurve()
{
	CPen newPen;
	CPen *oldpen;
	
	//wxl  draw other curve
	
	newPen.CreatePen(PS_SOLID,2,RGB(0,0,0));//黑
	oldpen=dcMemory.SelectObject(&newPen);
	PENREADY=TRUE;
   	POINT now_point,old_point;
	//curvex0;
	g_mutex.Lock();
	int size = mypaintpoint.GetSize();
	g_mutex.Unlock();
	if(size<=0)
		return;
		
	old_point.x=long(x0+2*(mypaintpoint[0].t));
	old_point.y=zero-int((mypaintpoint[0].test_v)*100/(fr*12*PI));//Samplev[0];
	dcMemory.MoveTo(old_point);		

	for(int i = 0; i < size; i++)
	{
		now_point.x = x0 + (int)(2*mypaintpoint[i].t);
		now_point.y = zero - int((mypaintpoint[0].test_v)*100/(fr*12*PI));
		dcMemory.LineTo(now_point); 


	}


	
	dcMemory.SelectObject(oldpen);
	newPen.DeleteObject();
	PENREADY=FALSE;

}

void SpeedCollect::SampleData()
{
	
	mysearchcurve.test_v=SampleParam.speed_meas_v;
	
	
	c_mutex.Lock();
	mysearchcurve.t=ControlParam.run_time+SampleParam.speed_meas_t;
	c_mutex.Unlock();

  
	
	g_mutex.Lock();//加锁	
	array_searchcurve.Add(mysearchcurve);
	mypaintpoint.Add(mysearchcurve);

	g_mutex.Unlock();//解锁


}

void SpeedCollect::DrawAll(void)
{

	CClientDC dc(this); // device context for painting
	dc.SetBkColor(GetSysColor(COLOR_BTNFACE));//设置背景颜色;
	dc.SetTextColor(RGB(0,0,0));
	CFont myFont1;
	CFont *pFont=GetFont(); 
	LOGFONT lf;
	if(pFont!=NULL)
		pFont->GetObject(sizeof(LOGFONT),&lf);
	else
		::GetObject(GetStockObject(SYSTEM_FONT),sizeof(LOGFONT),&lf);
	lf.lfHeight=15;
	lf.lfWidth=8;
	myFont1.CreateFontIndirect(&lf); 
	CFont *PreFont=dc.SelectObject(&myFont1);
	//
	char dis[15],str[2]=" ";
	int i;

	t=ControlParam.run_time+SampleParam.speed_meas_t;

	e_v=SampleParam.speed_meas_v;
	v=e_v/(fr*2*PI);
	

   

	
	//时间
	ftoat(t);
	ftoat1(hour,3,dis);//dis=string
	for(i=0;i<3;i++)
	{
		if(OldT[i]!=dis[i])
		{
			str[0]=dis[i];
			
			dc.TextOut(STARTX1+i*8+84,STARTY1,str);//200
			OldT[i]=dis[i];
		}
	}
	dc.TextOut(STARTX1+108,STARTY1,":");//245
	ftoat1(minute,2,dis);//dis=string
	for(i=0;i<2;i++)
	{
		if(OldT1[i]!=dis[i])
		{
			str[0]=dis[i];
			
			dc.TextOut(STARTX1+112+i*8,STARTY1,str);
			OldT1[i]=dis[i];
		}
	}
	dc.TextOut(STARTX1+132,STARTY1,":");
	ftoat1(secend,2,dis);//dis=string
	for(i=0;i<2;i++)
	{
		if(OldT2[i]!=dis[i])
		{
			str[0]=dis[i];
			
			dc.TextOut(STARTX1+140+i*8,STARTY1,str);
			OldT2[i]=dis[i];
		}
	}

	//速度
	ftoa(v,3,1,dis);
	for(i=0;i<5;i++)
	{
		if(OldV[i]!=dis[i])
		{
			str[0]=dis[i];
			dc.TextOut(STARTX2+80+i*8,STARTY1,str);
			OldV[i]=dis[i];
		}
	}
	//转速度
	ftoa(e_v,5,0,dis);
	for(i=0;i<5;i++)
	{
		if(OldRV[i]!=dis[i])
		{
			str[0]=dis[i];
			dc.TextOut(STARTX3+80+i*8,STARTY1,str);
			OldRV[i]=dis[i];
		}
	}

	

	dc.SelectObject(PreFont);
	myFont1.DeleteObject();

}
void SpeedCollect::DrawGrid()
{
	/////shan ge
	CPen newPen;
	CPen *oldpen;

	newPen.CreatePen(PS_DASH,1,RGB(192,192,192));//灰
	oldpen=dcMemory.SelectObject(&newPen);

	int lx=WRect.right;
	int ly=(WRect.bottom-BOTTOM_LENTH)/6;
	for(int m=0;m<7;m++)
	{
	dcMemory.MoveTo(STARTX,int(zero)-m*ly);
	dcMemory.LineTo(STARTX+lx,int(zero)-m*ly);
	}
	dcMemory.SelectObject(oldpen);
	newPen.DeleteObject();


}

void SpeedCollect::timerProc()
{

	////sample l t
	if(IsStartTest)
	{
		while(_inp(SysParam.basein+0))count++;
		
		if(count==0)Sample();
		while(count>=1)
		{
			count==-1;
			EndDialog(0);
		}
	}
	
	else
	{
	//	while(count>=0)count==-1;
		Sample(FALSE);
	}
	////赋值

	if(nTime>=100)
	{
		
		SampleData();
		nTime = 0;
	}
	nTime++;

}

void SpeedCollect::Sample(BOOL f)
{
	unsigned long couna1=0;
	unsigned long counc2=0;
	double count_meas_v =0;
	double count_meas_t=0;
	double spe=0;

	counc2 = Get6220Counter(7);	//4-2

	couna1 = Get6220Counter(0);		//2-1

	SYSTEMTIME  st;  
			  ::GetSystemTime(&st);
		sample_t=st.wMinute*60*1000+st.wSecond*1000+st.wMilliseconds;

	if(f)
	{
		

		if(_inp(SysParam.basein+0))
		{
			count=-1;
			if(count>=1)EndDialog(0);
		}
		//if(count==1)break;		
		
		if(!IsStartTest)
		{
			SampleParam.speed_meas_v = 0;
		}
		else
		{
			if(SampleParam.old_count_l>=couna1)
				count_meas_v=(SampleParam.old_count_l-couna1);//m
			else
				count_meas_v=(SampleParam.old_count_l+65535-couna1);//m 
		}

		if(SampleParam.old_count_t>=counc2)
			count_meas_t=(SampleParam.old_count_t-counc2)/8000.;
		else
			count_meas_t=(SampleParam.old_count_t+65535-counc2)/8000.;
		

		
		c_mutex.Lock();
		SampleParam.speed_meas_t=sample_t-xt;
		
		spe=count_meas_v*rpm_num/(count_meas_t*3.6);
		SampleParam.speed_meas_v=spe;
		
//		SampleParam.avg_meas_v=spe*60/fr;
		
		SampleParam.old_count_t+=count_meas_t;
		c_mutex.Unlock();
		if (spe>ControlParam.OtherParam.v_max) 
		{
			OutAlarmLampOn(TRUE);
			
			EndDialog(0);
			return;
		}
	}


	SampleParam.old_count_l=couna1;
	SampleParam.old_count_t=counc2;
}

⌨️ 快捷键说明

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