📄 speedcollect.cpp
字号:
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 + -