📄 convert.cpp
字号:
*(c+8) = wyymax; *(c+9) = wyymin;
absmax = (fabs(wyymax) > fabs(wyymin)) ? fabs(wyymax):fabs(wyymin);
if(w==3)
xx=x+48;
else
xx=x;
m_ChannelsData[xx].max = wyymax;
m_ChannelsData[xx].min = wyymin;
m_ChannelsData[xx].absMax = absmax;
m_ChannelsData[xx].absMin = absmin;
//////wyy do modify end
return (1);
}
////////////////////// readdat //////////////////////////
//
int CConvert::readdat(double far *buf,int ith,int d,int s,char tra)
{
int i,j,retur=0;
double v1,v2,v3,gf1,gf2;
unsigned char c[29],sc;
unsigned char far *cc,*caps;
unsigned long int y,yy;
SHORT g1,g2,g3,g;
PSHORT ic;
y=segm[d][ith/12]/28;
caps=(unsigned char far *)malloc(29);
if(caps==NULL)
{ AfxMessageBox("内存不够", MB_OK); return (-1); }
switch(ith/12%4) //CPU
{
case 0:sc=0x90;break;
case 1:sc=0xb0;break;
case 2:sc=0xd0;break;
case 3:sc=0xf0;break;
default:sc=0;
}
switch(tra)
{
case 1: //电压
case 2: //电流
dingzhi2(ith,&v3); // v3为 sys1.dat中的三个系数之一:0.12, 0.88, 0.1524
v1=sin(3.1415926/20*7)/sin(3.1415926/20*s)*v3; //V1 = sin(7Pai/20)/sin(3Pai/20)*V3
v2=sin(3.1415926/20*7)/sin(3.1415926/20*5)*v3; //V2 = sin(7Pai/20)/sin(5Pai/20)*V3
switch( (seguik+d)->c )
{
case 1: //AB
for(i=0; i < (int)((seguik+d)->l-s); i++)
{
do{
memcpy(caps, m_DataBuffer+y*28L, sizeof(char)*28);
// fseek(fpdat, y*28L, 0); fread(caps, 28, 1, fpdat);
ic=(PSHORT)(caps+1+ith%12*2);
y++;
}while((*caps & 0xf0) !=sc);
yy=y;
g1 = ic[0];
j=0;
do{
memcpy(caps, m_DataBuffer+y*28L, sizeof(char)*28);
//fseek(fpdat, y*28L, 0); fread(caps, 28, 1, fpdat);
ic=(PSHORT )(caps+1+ith%12*2);
y++;
if((*caps & 0xf0)==sc)j++;
}while(j!=s);
g2=*ic;
g=g1-g2-s*250u;
*(buf+i)=g*v1;
y=yy;
}
if(!d)
{
uith0[ith]=0.0;
for(i=0; i<20; i++)
uith0[ith] += (*(buf+i));
uith0[ith] = uith0[ith]/20.;
}
for(i=0; i !=(int)((seguik+d)->l-s); i++)
{
(*(buf+i)) -= uith0[ith];
if( (*(buf+i)) < 0.00000001 && (*(buf+i)) > -0.00000001 ) (*(buf+i)) = 0.0;
}
break;
case 2:
for(i=0;i< (int)((seguik+d)->l-2);i++)
{
do{
memcpy(caps, m_DataBuffer+y*28L, sizeof(char)*28);
// fseek(fpdat, y*28L, 0); fread(caps, 28, 1, fpdat);
ic=(PSHORT )(caps+1+ith%12*2);
y++;
}while((*(caps+0)&0xf0)!=sc);
yy=y;g1=*ic;
do{
memcpy(caps, m_DataBuffer+y*28L, sizeof(char)*28);
//fseek(fpdat, y*28L, 0); fread(caps, 28, 1, fpdat);
ic=(PSHORT )(caps+1+ith%12*2); y++;
}while((*(caps+0)&0xf0)!=sc);
g2=*ic;
do{
memcpy(caps, m_DataBuffer+y*28L, sizeof(char)*28);
// fseek(fpdat, y*28L, 0); fread(caps, 28, 1, fpdat);
ic=(PSHORT )(caps+1+ith%12*2); y++;
}while((*(caps+0)&0xf0)!=sc);
g3=*ic;
g=g1-g2-1250;
gf1=(g-*(uith0+ith)*5/v1/s)*v2;
g=g2-g3-1250;
gf2=(g-*(uith0+ith)*5/v1/s)*v2;
*(buf+i)=sqrt(fabs(gf1*gf1)+fabs(gf2*gf2));
y=yy;
}
break;
case 3:
case 4:
for(i=0;i < (int)((seguik+d)->l/4); i++)
{
do{
memcpy(caps, m_DataBuffer+y*28L, sizeof(char)*28);
//fseek(fpdat, y*28L, 0); fread(caps, 28, 1, fpdat);
ic=(PSHORT)(caps+1+ith%12*2);
y++;
}while((*(caps+0)&0xf0)!=sc);
g1=*ic-5*250u;
gf1=(g1-*(uith0+ith)*5/v1/s)*v2;
do{
memcpy(caps, m_DataBuffer+y*28L, sizeof(char)*28);
// fseek(fpdat, y*28L, 0); fread(caps, 28, 1, fpdat);
ic=(PSHORT )(caps+1+ith%12*2); y++;
}while((*(caps+0)&0xf0)!=sc);
g2=*ic-5*250u; gf2=(g2-*(uith0+ith)*5/v1/s)*v2;
*(buf+i)=sqrt(gf1*gf1+gf2*gf2);
for(j=0;j<2;j++)
{
do{
memcpy(caps, m_DataBuffer+y*28L, sizeof(char)*28);
//fseek(fpdat, y*28L, 0); fread(caps, 28, 1, fpdat);
y++;
}while((*(caps+0)&0xf0)!=sc);
}
}
break;
}
free(caps);
return(retur);
case 3:
switch(ith/24%4)
{
case 0:sc=0x90;break;
case 1:sc=0xb0;break;
case 2:sc=0xd0;break;
case 3:sc=0xf0;break;
default:sc=0;
}
y=segm[d][ith/24]/28;
g=0x80>>(ith%24%8);
switch((seguik+d)->c)
{
case 1:
for(i=0;i<(int)((seguik+d)->l-s);i++)
{
do{
memcpy(caps, m_DataBuffer+y*28L, sizeof(char)*28);
//fseek(fpdat, y*28L, 0); fread(caps, 28, 1, fpdat);
cc=caps+25+ith%24/8; y++;
}while((*(caps+0)&0xf0)!=sc);
g1=*cc&g;
*(buf+i)=g1?1:-1;
}
break;
case 2:
for(g3=i=0;i< (int)((seguik+d)->l-2); i++)
{
do{
memcpy(caps, m_DataBuffer+y*28L, sizeof(char)*28);
//fseek(fpdat, y*28L, 0); fread(caps, 28, 1, fpdat);
cc=caps+25+ith%24/8; y++;
}while((*(caps+0)&0xf0)!=sc);
if(((*caps&0xf)==0x8)||((*caps&0xf)==0x9)||((*caps&0xf)==0xa))
{
if(i)*(buf+i)=*(buf+i-1);
else g3=1;
}
else
{
g1=*cc&g; *(buf+i)=g1?1:-1;
if(g3){*(buf+i-1)=*(buf+i);g3=0;}
}
}
break;
case 3:
case 4:
for(g3=i=0;i<(int)((seguik+d)->l/4);i++)
{
do{
memcpy(caps, m_DataBuffer+y*28L, sizeof(char)*28);
// fseek(fpdat, y*28L, 0); fread(caps, 28, 1, fpdat);
cc=caps+25+ith%24/8; y++;
}while((*(caps+0)&0xf0)!=sc);
if(((*caps&0xf)==0x8)||((*caps&0xf)==0x9)||((*caps&0xf)==0xa))
{
if(i)*(buf+i)=*(buf+i-1);
else g3=1;
}
else
{
g1=*cc&g;
*(buf+i)=g1?1:-1;
if(g3){*(buf+i-1)=*(buf+i);g3=0;}
}
for(j=0;j<3;j++)
{
do{
memcpy(caps, m_DataBuffer+y*28L, sizeof(char)*28);
//fseek(fpdat, y*28L, 0); fread(caps, 28, 1, fpdat);
cc=caps+25+ith%24/8;y++;
}while((*(caps+0)&0xf0)!=sc);
if(g3)
{
if(((*caps&0xf)==0x8)||((*caps&0xf)==0x9)||((*caps&0xf)==0xa))
g1=*cc&g;
*(buf+i)=g1?1:-1;g3=0;
}
}
}
break;
}
break;
case 6:
case 7:
dingzhi2(ith,&v3);
v1=sin(3.1415926/20*7)/sin(3.1415926/20*s)*v3;
v2=sin(3.1415926/20*7)/sin(3.1415926/20*5)*v3;
switch((seguik+d)->c)
{
case 1:
for(i=0;i<(int)((seguik+d)->l-s);i++)
{
do{
memcpy(caps, m_DataBuffer+y*28L, sizeof(char)*28);
//fseek(fpdat, y*28L, 0); fread(caps, 28, 1, fpdat);
ic=(PSHORT )(caps+1+ith%12*2); y++;
}while((*(caps+0)&0xf0)!=sc);
yy=y; g1=*ic; j=0;
do{
memcpy(caps, m_DataBuffer+y*28L, sizeof(char)*28);
//fseek(fpdat, y*28L, 0); fread(caps, 28, 1, fpdat);
ic=(PSHORT)(caps+1+ith%12*2); y++;
if((*(caps+0)&0xf0)==sc)j++;
}while(j!=s);
g2=*ic; g=g1-g2-s*250u; *(buf+i)=g*v1; y=yy;
}
if(!d)
{
for(uith0[ith]=0.,i=0;i<20;i++)uith0[ith]+=*(buf+i);
uith0[ith]=uith0[ith]/20;
}
for(i=0;i != (int)((seguik+d)->l-s); i++)
*(buf+i)-=uith0[ith];
break;
case 2:
for(i=0;i < (int)((seguik+d)->l-1);i++)
{
do{
memcpy(caps, m_DataBuffer+y*28L, sizeof(char)*28);
//fseek(fpdat, y*28L, 0); fread(caps, 28, 1, fpdat);
ic=(PSHORT )(caps+1+ith%12*2); y++;
}while((*(caps+0)&0xf0)!=sc);
yy=y; g1=*ic;
do{
memcpy(caps, m_DataBuffer+y*28L, sizeof(char)*28);
//fseek(fpdat, y*28L, 0); fread(caps, 28, 1, fpdat);
ic=(PSHORT )(caps+1+ith%12*2); y++;
}while((*(caps+0)&0xf0)!=sc);
g2=*ic; g=g1-g2-1250;
*(buf+i)=(g-*(uith0+ith)*5/v1/s)*v2; y=yy;
}
break;
case 3:
case 4:
for(i=0;i < (int)((seguik+d)->l); i++)
{
do{
memcpy(caps, m_DataBuffer+y*28L, sizeof(char)*28);
//fseek(fpdat, y*28L, 0); fread(caps, 28, 1, fpdat);
ic=(PSHORT )(caps+1+ith%12*2); y++;
}while((*(caps+0)&0xf0)!=sc);
g1=*ic-5*250u; *(buf+i)=(g1-*(uith0+ith)*5/v1/s)*v2;
}
break;
}
break;
case 9:
i=dingzhi(1,&j,&v3,(char *)c);
v1=sin(3.1415926/20*7)/sin(3.1415926/20*s)*v3;
v2=sin(3.1415926/20*7)/sin(3.1415926/20*5)*v3;
if((seguik+d)->c==1)
{
for(i=0; i<(int)((seguik+d)->l-s); i++)
{
do{
memcpy(caps, m_DataBuffer+y*28L, sizeof(char)*28);
//fseek(fpdat, y*28L, 0); fread(caps, 28, 1, fpdat);
ic=(PSHORT )(caps+1+ith%12*2);y++;
}while((*(caps+0)&0xf0)!=sc);
yy=y; g1=*ic; j=0;
do{
memcpy(caps, m_DataBuffer+y*28L, sizeof(char)*28);
//fseek(fpdat, y*28L, 0); fread(caps, 28, 1, fpdat);
ic=(PSHORT )(caps+1+ith%12*2); y++;
if((*(caps+0)&0xf0)==sc)j++;
}while(j!=s);
g2=*ic; g=g1-g2-s*250u; *(buf+i)=g*v1; y=yy;
}
if(!d)
{
for(uith0[ith]=0.,i=0;i<20;i++)uith0[ith]+=*(buf+i);
uith0[ith]=0;
uith0[ith]=uith0[ith]/20;
}
for(i=0;i != (int)((seguik+d)->l-s); i++)
*(buf+i)-=uith0[ith];
}
if((seguik+d)->c==2)
{
for(i=0;i<(int)((seguik+d)->l-1); i++)
{
do{
memcpy(caps, m_DataBuffer+y*28L, sizeof(char)*28);
//fseek(fpdat, y*28L, 0); fread(caps, 28, 1, fpdat);
ic=(PSHORT )(caps+1+ith%12*2);y++;
}while((*(caps+0)&0xf0)!=sc);
yy=y; g1=*ic;
do{
memcpy(caps, m_DataBuffer+y*28L, sizeof(char)*28);
//fseek(fpdat, y*28L, 0); fread(caps, 28, 1, fpdat);
ic=(PSHORT )(caps+1+ith%12*2); y++;
}while((*(caps+0)&0xf0)!=sc);
g2=*ic; g=g1-g2-1250;
*(buf+i)=(g-*(uith0+ith)*5/v1/s)*v2; y=yy;
}
}
if(((seguik+d)->c==3)||((seguik+d)->c==4))
{
for(i=0;i<(int)((seguik+d)->l/4);i++)
{
do{
memcpy(caps, m_DataBuffer+y*28L, sizeof(char)*28);
// fseek(fpdat, y*28L, 0); fread(caps, 28, 1, fpdat);
ic=(PSHORT )(caps+1+ith%12*2); y++;
}while((*(caps+0)&0xf0)!=sc);
g1=*ic-5*250u; *(buf+i)=(g1-*(uith0+ith)*5/v1/s)*v2;
for(j=0;j<3;j++)
{
do{
memcpy(caps, m_DataBuffer+y*28L, sizeof(char)*28);
//fseek(fpdat, y*28L, 0); fread(caps, 28, 1, fpdat);
y++;
}while((*(caps+0)&0xf0)!=sc);
}
}
}
break;
default:
v3=50.;
if((seguik+d)->c==1) break;
for(i=retur=g2=j=0; i< (int)((seguik+d)->l); i++)
{
do{
memcpy(caps, m_DataBuffer+y*28L, sizeof(char)*28);
//fseek(fpdat, y*28L, 0); fread(caps, 28, 1, fpdat);
ic=(PSHORT )(caps+25); y++;
}while((*(caps+0)&0xf0)!=sc);
if(((*caps&0xf)==0x8)||((*caps&0xf)==0x9))
{
if((unsigned int)(*ic)==0xffff)
{ if(!g2)g1=retur; else g1++; }
else
{
g3=(*ic)&0xfff; v3=g3/256.;
if((*ic)&0x80)v3=50-v3;
else v3=50+v3;
*(buf+retur)=v3;
while(!g2){*(buf+g1+g2-1)=v3; g2--;}
}
retur++;
}
}
break;
}
free(caps);
return(retur);
}
/////////////////// readdatpqf ////////////////////////////////////////
int CConvert::readdatpqf(double far *p,double far *q,int pi,int qi,int fi)
{
int i,kk,g,g1,x,y,xl[6],s=1;
long j,k,l;
double far *rui,far *rup,far *ruq,far *o,max,min,far *hua,f,far *hup,far *huq;
double ppf,qqf,nax,nin;
double far *va; double far *vb; double far *vc;
double far *ia; double far *ib; double far *ic;
char ci[8];
va=(double far *)malloc(20000);ia=(double far *)malloc(20000);
vb=(double far *)malloc(20000);ib=(double far *)malloc(20000);
vc=(double far *)malloc(20000);ic=(double far *)malloc(20000);
if(pi)j=pi*2000;
else if(qi)j=qi*2000;
else j=fi*2000;
dingzhi(j+1,xl+0,va,ci);
dingzhi(j+2,xl+1,vb,ci);
dingzhi(j+3,xl+2,vc,ci);
dingzhi(j+5,xl+3,ia,ci);
dingzhi(j+6,xl+4,ib,ci);
dingzhi(j+7,xl+5,ic,ci);
if(!(p||q)) goto endf;
if(pi)o=p;
else o=q;
i=j=k=0;
do{
rui=o+k; rup=p+k; ruq=q+k;
*(rui+1)=(seguik+i)->t;
*(rui+2)=(seguik+i)->dt;
*(rui+3)=(seguik+i)->c;
if(pi) {*(rup+1)=*(rui+1); *(rup+2)=*(rui+2); *(rup+3)=*(rui+3);}
if(qi) {*(ruq+1)=*(rui+1); *(ruq+2)=*(rui+2); *(ruq+3)=*(rui+3);}
g=(seguik+i)->l;
if((seguik+i)->c==1) g=(seguik+i)->l-s;
else if((seguik+i)->c==2) g=(seguik+i)->l-2;
else g=(seguik+i)->l/4;
if( ( (i+1) != ((int)seg1)) && (g>0) )
{
g1= (int)(((seguik+i+1)->t-*(rui+1))/(*(rui+2))+.0005);
if(g>g1)g=g1;
}
if(g<=1)
{
k=j;
rui=o+k;
g = (int)(*(rui+0)-j-10);
if((i+1) != (int) seg1)
{
g1=(int)(((seguik+i+1)->t-*(rui+1))/(*(rui+2))+.0005);
if(g>g1)g=g1;
}
}
else
{
readdat(va,*(xl+0),i,1,6);
readdat(vb,*(xl+1),i,1,6);
readdat(vc,*(xl+2),i,1,6);
readdat(ia,*(xl+3),i,1,7);
readdat(ib,*(xl+4),i,1,7);
readdat(ic,*(xl+5),i,1,7);
kk=(seguik+i)->l;
if(*(rui+3)<1.5)
{
for(x=0;x<kk-20;x++)
{
abpq(va+x,ia+x,vb+x,ib+x,vc+x,ic+x,&ppf,&qqf);
if(pi)*(rup+x+20)=ppf;
if(qi)*(ruq+x+20)=qqf;
}
if(!k)
{
if(pi)
{
min= *(rup+20); max=*(rup+kk-1);
for(x=10;x<20;x++) *(rup+x)=min;
for(x=kk;x<kk+10-s;x++) *(rup+x)=max;
}
if(qi)
{
nin=*(ruq+20); nax=*(ruq+kk-1);
for(x=10;x<20;x++) *(ruq+x)=nin;
for(x=kk;x<kk+10-s;x++) *(ruq+x)=nax;
}
}
else
{
if(pi)
{
ppf=(*(rup+20)-max)*.1;
for(x=10;x<20;x++)*(rup+x)=max+ppf*(x-10);
min=*(rup+20);max=*(rup+kk-1);
for(x=kk;x<kk+10-s;x++)*(rup+x)=max;
}
if(qi)
{
qqf=(*(ruq+20)-nax)*.1;
for(x=10;x<20;x++)*(ruq+x)=nax+qqf*(x-10);
nin=*(ruq+20);nax=*(ruq+kk-1);
for(x=kk;x<kk+10-s;x++)*(ruq+x)=nax;
}
}
}
else if(*(rui+3)<2.5)
{
for(x=0;x<kk-4;x++)
{cdpq(va+x,ia+x,vb+x,ib+x,vc+x,ic+x,&ppf,&qqf);
if(pi)*(rup+x+12)=ppf;if(qi)*(ruq+x+12)=qqf;
}
if(!k) {if(pi) {
min=*(rup+12);max=*(rup+kk+7);
for(x=10;x<12;x++)*(rup+x)=min;
}
if(qi) {
nin=*(ruq+12);nax=*(ruq+kk+7);
for(x=10;x<12;x++)*(ruq+x)=nin;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -