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

📄 analysis.cpp

📁 一个用C++写的电力系统故障录波数据管理系统
💻 CPP
📖 第 1 页 / 共 5 页
字号:
 *jj=0;
 in1=*(in+1)+*(in+2);
 in2=*(in+2)+*(in+3);
 in3=*(in+3)+*(in+4);
 in4=*(in+4)+*(in+5);
 in5=*(in+5)+*(in+6);
 in6=*(in+6)+*(in+7);
 
 un2=*(un+2)+*(un+3);
 un5=*(un+5)+*(un+6);

 d1=(in3-in1)/dt;
 d2=(in6-in4)/dt;
 dd=in2*d2-in5*d1;
 if(fabs(dd)<.1)return(0);
 x=(un5*in2-un2*in5)/dd;
 r=(d2*un2-d1*un5)/dd;
 z=r*r+x*x;
 if(z<zzd*zzd)*jj=1;
 return(0);
}



int CAnalysis::pqc(double *u,double *i,int *jj,int n)
{
 double z,x,r,d1,dd,d2,*in,*un,in1,in2,in3,in4,in5,in6,un2,un5;
 in=i+n;un=u+n;
 *jj=0;
 in1=*(in+1)+*(in+2);
 in2=*(in+2)+*(in+3);
 in3=*(in+3)+*(in+4);
 in4=*(in+4)+*(in+5);
 in5=*(in+5)+*(in+6);
 in6=*(in+6)+*(in+7);
 un2=*(un+2)+*(un+3);
 un5=*(un+5)+*(un+6);

 d1=(in3-in1)/dt;
 d2=(in6-in4)/dt;
 dd=in2*d2-in5*d1;
 if(fabs(dd)<.1){*jj=1; return(0);}
 x=(un5*in2-un2*in5)/dd;
 r=(d2*un2-d1*un5)/dd;
 z=r*r+x*x;
 if(z>100*zzd*zzd)*jj=1;
 return(0);
}



int CAnalysis::tbpfx( double *i1,double *i2, double *u1,double *u2,int *jp,int m,int n)
{
 
 double dd, x, r, d1 ,d2, a1 ,a2 , v1 ,v2, dtt;
 double *i1n,*i2n,*i1m,*i2m;

 i1n=i1+n;
 i2n=i2+n;
 i1m=i1+m;
 i2m=i2+m;
 
 dtt=314.25926*.001*.98359*2;

 d1=((*(i1n+5)-*(i2n+5)-*(i1m+5)+*(i2m+5))-
    (*(i1n+3)-*(i2n+3)-*(i1m+3)+*(i2m+3)))/dtt
  +((*(i1n+6)-*(i2n+6)-*(i1m+6)+*(i2m+6))-
    (*(i1n+4)-*(i2n+4)-*(i1m+4)+*(i2m+4)))/dtt;
d2=((*(i1n+9)-*(i2n+9)-*(i1m+9)+*(i2m+9))-
    (*(i1n+7)-*(i2n+7)-*(i1m+7)+*(i2m+7)))/dtt
  +((*(i1n+10)-*(i2n+10)-*(i1m+10)+*(i2m+10))-
    (*(i1n+8)-*(i2n+8)-*(i1m+8)+*(i2m+8)))/dtt;
a1=*(i1n+4)-*(i2n+4)-*(i1m+4)+*(i2m+4)+
   *(i1n+5)-*(i2n+5)-*(i1m+5)+*(i2m+5);
a2=*(i1n+8)-*(i2n+8)-*(i1m+8)+*(i2m+8)+
	*(i1n+9)-*(i2n+9)-*(i1m+9)+*(i2m+9);
v1=*(u1+n+4)-*(u2+n+4)-*(u1+m+4)+*(u2+m+4)+
   *(u1+n+5)-*(u2+n+5)-*(u1+m+5)+*(u2+m+5);
v2=*(u1+n+8)-*(u2+n+8)-*(u1+m+8)+*(u2+m+8)+
   *(u1+n+9)-*(u2+n+9)-*(u1+m+9)+*(u2+m+9);
 dd = a1*d2-a2*d1;
 if(fabs(dd)<.1)
   { *jp=1; return(0); }
 x=(v1*a2-v2*a1)/dd;
 r=(v2*d1-v1*d2)/dd;
 if(5*x+r>0)*jp=1;
 else *jp=-1;

return(0);
}





void CAnalysis::convcaps(void)
{
 int location_x,location_y,i,j,y,n;
 
 unsigned int series;

 unsigned int xl,xl1[10],mxl=3;
 xl=location_x=location_y=bl_se=0;
 do	{
	for(i=0; i<(int)mxl; i++)xl1[i]=0;
	for(i=0;i<(int)mxl;i++)
		{for(j=0;j<se_se;j++)
			{if((se+j)->trait == xl+11+i)
				{y=(se+j)->line;
				if((int)xl1[i]<y)xl1[i]=y;
				}
			}
		}
	for(i=0;i<(int)mxl;i++)if(xl1[i])break;
	if(i == (int)mxl)break;
for(series=0;series!=3000;series++)
	{for (i=0;i!=se_se;i++)
		{if((series != (se+i)->order)||((se+i)->trait!=10))continue;
		y=0;
		for(n=0;n < (int)mxl;n++)
			{if(y)break;
			for(j=0;j<se_se;j++)if((series==(se+j)->order)
			&&((se+j)->trait==11+xl+n)){y=1;break;}
			}
		if(!y)continue;
		(se+i)->x=location_x;
		(se+i)->y=location_y;
		escan1(&location_x,&location_y,i);
		location_x+=(se+i)->line+24;
		y=location_y;
		for(n=0; n < (int)mxl;n++)
		{
		if(!xl1[n])break;
		for(j=0;j!=se_se;j++)
			{if((series!=(se+j)->order)||((se+j)->trait!=11+xl+n))
			continue;
			(se+j)->y=location_y=(se+i)->y;
			(se+j)->x=location_x;
			escan1(&location_x,&location_y,j);
			if(y<location_y)y=location_y;
			break;
			};
		location_x+=xl1[n];
			}
		location_x=(se+i)->x;
		location_y=y;
		}
	}
	xl+=mxl;
	}while(1);
}






void CAnalysis::escan1(int * location_x,int * location_y,int a)
{

int x,i,r1,k,l;
unsigned char c[80],x1,*y;
k=1;
i=(se+a)->line/16*2;
y=c;
strncpy((char *)y+6,(char *)(se+a)->caps,70);
if((se+a)->trait==10)
	{
	r1=((se+a)->order+1)/10;
	if((se+a)->order>100)r1=r1%100;
	if(!r1)r1=10;
	*(y+0)=dig[2*r1];*(y+1)=dig[2*r1+1];
	r1=((se+a)->order+1)%10;
	*(y+2)=dig[2*r1];*(y+3)=dig[2*r1+1];
	*(y+4)=dig[20];*(y+5)=dig[21];
	if(k)y=y+6;
	}
else	y=y+6;
x=strlen((char *)y);
if(strlen((char *)y)>79){*(y+79)=0;};
while(x>i)
	{
	for(l=i;l!=0;l--)if(*(y+l)==32)break;
	if(!l)l=i;
	x1=*(y+l);
	*(y+l)=0;
	(bl+bl_se)->order=(se+a)->order;
	(bl+bl_se)->trait=(se+a)->trait;
	(bl+bl_se)->line=l*8;
	(bl+bl_se)->arrange=(se+a)->arrange*9/8;
	strncpy((char *)((bl+bl_se)->caps), (char *)y,32);
	(bl+bl_se)->x=*location_x;
	(bl+bl_se)->y=*location_y;
	*location_x=(se+a)->x;
	*location_y+=(bl+bl_se)->arrange;
	*(y+l)=x1;
	while(*(y+l)==32)y++;
	if((se+a)->trait!=10)	y+=l;
	else	{y+=l-6;
		*(y+0)=*(y+2)=dig[20];*(y+1)=*(y+3)=dig[21];
		*(y+4)=dig[20];*(y+5)=dig[21];
		if(k)y+=6;
		}
	x=strlen((char *)y);
	bl_se++;
	}
(bl+bl_se)->order=(se+a)->order;
(bl+bl_se)->trait=(se+a)->trait;
(bl+bl_se)->line=i*8;
(bl+bl_se)->arrange=(se+a)->arrange*9/8+6;
strncpy((char *)((bl+bl_se)->caps), (char *)y, 32);
(bl+bl_se)->x=*location_x;
(bl+bl_se)->y=*location_y;
*location_x=(se+a)->x;
*location_y+=(bl+bl_se)->arrange;
bl_se++;

}



void CAnalysis::convcap(int mxl)
{
 int location_x,location_y, i, j,y,n;
 int xl,xl1[10];
 UINT series;

 xl=location_x=location_y=bl_se=0;
 do{
	 for(i=0;i<mxl;i++)xl1[i]=0;
	 for(i=0;i<mxl;i++)
		{
		 for(j=0; j<se_se; j++)
			  {
				if((int )((se+j)->trait) == xl+11+i)
				  {
					y=(se+j)->line/16*2;
					if(xl1[i]<y)
					  xl1[i]=y;
				  }
			  }
		}
	for(i=0;i<mxl;i++)
		if(xl1[i])
		   break;
	if(i==mxl)
	  break;
  for(series=0;series!=3000;series++)
	  {
//		if(strcmp((bl+9)->caps, "故障持续时间")==0)
//      if(strcmp((bl+9)->caps, "15:35:50.030")==0)
		 for (i=0;i!=se_se;i++)
			  {
				if((series!=(se+i)->order)||((se+i)->trait!=10))
					continue;
				y=0;
				for(n=0;n<mxl;n++)
					{
					 if(y)
					  break;
					 for(j=0;j<se_se;j++)
						 if((series == (int)((se+j)->order)) && 
						    ((int)((se+j)->trait) == 11+xl+n))
							{ y=1; break; }
					}
				if(!y)
					continue;
				(se+i)->x=location_x;
				(se+i)->y=location_y;
				escan2(&location_x,&location_y,i);
				location_x+=(se+i)->line/16*2+2;
				y=location_y;
				for(n=0;n<mxl;n++)
					{
					 if(!xl1[n])
						  break;
					 for(j=0;j!=se_se;j++)
						 {
						  if((series != (int)(se+j)->order)|| ((int)(se+j)->trait != 11+xl+n))
								continue;
						  (se+j)->y=location_y=(se+i)->y;
						  (se+j)->x=location_x;
						  escan2(&location_x,&location_y,j);
						  if(y<location_y)y=location_y;
						  break;
						 }
					 location_x+=xl1[n];
					}
				location_x=(se+i)->x;
				location_y=y;
			  }
		 }
	 xl+=mxl;
  }while(1);
}



int CAnalysis::wscani(void)
{
	int i,x,y,l,j,gg;
	char far *c,*s;
	FILE *fp;
	y=0; 
	l=0; 
	for(i=0; i < bl_se; i++)
		{
			x = (bl+i)->x + (bl+i)->line;
			if(y < x) y = x;
			x = (bl+i)->y + (bl+i)->arrange;
			if( l < x ) l = x;
		}
	if(y>40)l=l*2;
	for(i=0;i<bl_se;i++)
		{
			if( (int)((bl+i)->y + (bl+i)->arrange) > l/2)
				{
					do{
						if(i>=bl_se-1)break;
						if((bl+i+1)->order!=(bl+i)->order){j=(bl+i+1)->y;break;}
						i++;
					}while(1);
					break;
				}
		}
	gg=i;
	i++;
	while(i<bl_se)
		{
			(bl+i)->x+=40;
			(bl+i)->y-=j;
			i++;
		}
	for(x=j=0;j<bl_se;j++)
		{
			if( x < (int)((bl+j)->y))x=(bl+j)->y;
		}
	x++;
	fp=fopen(m_strReportFile, "w+");
	if(fp == NULL)
		{
			AfxMessageBox(_T("不能创建文件") + m_strReportFile);
			return(-1);
		}
	c=(char far *)malloc(600);
	for(j=0;j<=x;j++)
		{
			for(i=0;i<600;i++)*(c+i)=' ';
			y=0;
			for(gg=i=0;i<bl_se;i++)
				{
					if((int)(bl+i)->y == j)
						{
							s = (char *)(bl+i)->caps;
							l=0;gg=(bl+i)->x;
							while(*(s+l))
								{ *(c+gg+l) = *(s+l); l++; }
							y=gg+l;
						}
				}
			*(c+y)=10;*(c+y+1)=0;
			fprintf(fp,"%s",c);
		}
	fprintf(fp,"%c",12);
	fclose(fp);
	free(c);
	return(1);
}


int CAnalysis::pscani(int *g)
{

 int i=0,x,y,p,l,a,kk=2,j,gg,hh;
 for(l=i=0;i<bl_se;i++)
	{
	if((bl+i)->x+(bl+i)->line>320)kk=1;
	if(l < (int)((bl+i)->y+(bl+i)->arrange))
	   l = (bl+i)->y + (bl+i)->arrange;
	}
 if(kk==1)page=400;
 else page=800;
if(*g>l){*g=l-page;goto end;}
i=-1;
while(i<bl_se-1)
	{i++;
	if((int )(bl+i)->y >= *g)
		{if(!i){a=*g=(bl+i)->y;gg=i;break;}
		if((bl+i)->order==(bl+i+1)->order)continue;
		gg=i+1;
		a=(bl+i+1)->y;break;
		}
	}
p=((l-a)/kk>480)?480:(l-a)/kk;
for(i=gg+1;i<bl_se-1;i++)
	{
	if((int)((bl+i)->y+(bl+i)->arrange+4) > a+p)
		{
		j=i;
		if(i+1>=bl_se)break;
		while((bl+j+1)->order==(bl+j)->order)
			{
			if(j>=bl_se)break;
			if((int)((bl+j)->y+(bl+j)->arrange) > a+480){j=i;break;}
			j++;
			}
            {i=j;break;}
		}
	}
hh=i;if(hh>=bl_se)hh=bl_se-1;
for(i=gg;i<=hh;i++)
	{
	y=(bl+i)->y-a;
	x=(bl+i)->x;
//	TextOut(hdc,x,y,(bl+i)->caps, strlen((bl+i)->caps));
	}
if((hh>=bl_se-1)||(kk==1))goto end;
gg=hh+1;
a=(bl+gg)->y;
for(i=gg+1;i<bl_se-1;i++)
	{
	if((int)((bl+i)->y+(bl+i)->arrange) >a+p)
		{
		j=i;
		if(i+1>=bl_se)break;
		while((bl+j+1)->order==(bl+j)->order)
			{
			if(j>=bl_se)break;
			if((int)((bl+j)->y+(bl+j)->arrange) > a+480){j=i;break;}
			j++;
			}
		if(i!=j){i=j;break;}
		while((bl+i)->order==(bl+i-1)->order)i--;
		i--;
		break;
		}
	}
hh=i;if(hh>=bl_se)hh=bl_se-1;
for(i=gg;i<=hh;i++)
	{
	y=(bl+i)->y-a;
	x=(bl+i)->x+320;
//	TextOut(hdc,x,y,(bl+i)->caps, strlen((bl+i)->caps));
	}
end:
return(l);
}

void CAnalysis::escan2(int * location_x,int * location_y,int a)
{
 
 int x,i,k,l;
 unsigned char c[80],x1,*y;

k=1;
i=(se+a)->line/16*2;
y=c;
strncpy((char *)y, (char *)(se+a)->caps,70);
x=strlen((char *)y);
if(strlen((char *)y)>79){*(y+79)=0;};
while(x>i)
	{
	for(l=i;l!=0;l--)if(*(y+l)==32)break;
	if(!l)l=i;
	x1=*(y+l);
	*(y+l)=0;
	(bl+bl_se)->order=(se+a)->order;
	(bl+bl_se)->trait=(se+a)->trait;
	(bl+bl_se)->line=l;
	(bl+bl_se)->arrange=(se+a)->arrange/16;
	strncpy((char *)(bl+bl_se)->caps,(char *)y,32);
	(bl+bl_se)->x=*location_x;
	(bl+bl_se)->y=*location_y;
	*location_x=(se+a)->x;
	*location_y+=(bl+bl_se)->arrange;
	y+=l;*y=x1;
	while(*y==32)y++;
	x=strlen((char *)y);
	bl_se++;
	}
(bl+bl_se)->order=(se+a)->order;
(bl+bl_se)->trait=(

⌨️ 快捷键说明

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