📄 dataexp.cpp
字号:
if(RunNT)
str1.Format("%d年 ",*ip+1980);
else
str1.Format("%dYear ",*ip+1980);
str+=str1;
ip++;
if(RunNT)
str1.Format("%d月 ",*ip);
else
str1.Format("%dMonth ",*ip);
str+=str1;
ip++;
if(RunNT)
str1.Format("%d日 ",*ip);
else
str1.Format("%dDay ",*ip);
str+=str1;
ip++;
if(RunNT)
str1.Format("%d时 ",*ip);
else
str1.Format("%dHour ",*ip);
str+=str1;
ip++;
if(RunNT)
str1.Format("%d分 ",*ip);
else
str1.Format("%dMinute ",*ip);
str+=str1;
*LineNo=No;
return str+"\n";
}
if(buf[0]==0x02)
{
if(buf[8]==0)//密钥
{
str.Format("%d ",++No);
if(RunNT)
str+="密钥 ";
else
str+="Key ";
dw=buf[3];
dw<<=8;
dw|=buf[2];
dw<<=8;
dw|=buf[1];
if(RunNT)
str1.Format("用户ID=%d ",dw);
else
str1.Format("UserID=%d ",dw);
str+=str1;
dw=buf[7];
dw<<=8;
dw|=buf[6];
dw<<=8;
dw|=buf[5];
dw<<=8;
dw|=buf[4];
if(RunNT)
str1.Format("ID密码=%X ",dw);
else
str1.Format("IDpassword=%X ",dw);
str+=str1;
if(RunNT)
str+="密钥= ";
else
str+="Key= ";
for(i=0;i<16;i++)
{
str1.Format("%02X ",buf[i+9]);
str+=str1;
}
}
else//开台
{
str.Format("%d ",++No);
if(RunNT)
str+="管理 ";
else
str+="Manage ";
dw=buf[3];
dw<<=8;
dw|=buf[2];
dw<<=8;
dw|=buf[1];
if(RunNT)
str1.Format("用户ID=%d ",dw);
else
str1.Format("UserID=%d ",dw);
str+=str1;
dw=buf[7];
dw<<=8;
dw|=buf[6];
dw<<=8;
dw|=buf[5];
dw<<=8;
dw|=buf[4];
if(RunNT)
str1.Format("ID密码=%d ",dw);
else
str1.Format("IDpassword=%d ",dw);
str+=str1;
if(RunNT)
str1.Format("台号=%d ",buf[9]);
else
str1.Format("StationNo.=%d ",buf[9]);
str+=str1;
if(RunNT)
str1.Format("信道号=%d ",buf[10]);
else
str1.Format("ChannelNo.=%d ",buf[10]);
str+=str1;
if(RunNT)
str1.Format("到期日=");
else
str1.Format("EndTime=");
str+=str1;
if(RunNT)
str1.Format("%d年 ",buf[11]);
else
str1.Format("%dYear ",buf[11]);
str+=str1;
if(RunNT)
str1.Format("%d月 ",buf[12]);
else
str1.Format("%dMonth ",buf[12]);
str+=str1;
if(RunNT)
str1.Format("%d日 ",buf[13]);
else
str1.Format("%dDay ",buf[13]);
str+=str1;
}
*LineNo=No;
return str+"\n";
}
if(buf[0]==0x17)
{
str.Format("%d ",++No);
if(RunNT)
str+="股票总数 ";
else
str+="StockTotal ";
dw=buf[4];
dw<<=8;
dw|=buf[3];
dw<<=8;
dw|=buf[2];
dw<<=8;
dw|=buf[1];
if(RunNT)
str1.Format("上海:%u支, ",dw);
else
str1.Format("ShangHai:%u, ",dw);
str+=str1;
dw=buf[8];
dw<<=8;
dw|=buf[7];
dw<<=8;
dw|=buf[6];
dw<<=8;
dw|=buf[5];
if(RunNT)
str1.Format("深圳:%u支 ",dw);
else
str1.Format("ShenZhen:%u ",dw);
str+=str1;
*LineNo=No;
return str+"\n";
}
int k=0;
switch(buf[0])
{
case 0x11:
str.Format("%d ",++No);
if(RunNT)
str+="上海完整指数 ";
else
str+="SH Full Share Index ";
str+=BinToStr(&buf[1],6);
str+=" ";
k=15;
for(i=0;i<7;i++)
{
str+=BinToStr2(&buf[k],4);
str+=" ";
k+=4;
}
str+="\n";
break;
case 0x21:
str.Format("%d ",++No);
if(RunNT)
str+="深圳完整指数 ";
else
str+="SZ Full Share Index ";
str+=BinToStr(&buf[1],6);
str+=" ";
k=15;
for(i=0;i<7;i++)
{
str+=BinToStr2(&buf[k],4);
str+=" ";
k+=4;
}
str+="\n";
break;
case 0x12:
str.Format("%d ",++No);
if(RunNT)
str+="上海完整个股 ";
else
str+="SH Full Stock ";
str+=BinToStr(&buf[1],6);
str+=" ";
k=15;
for(i=0;i<5;i++)
{
str+=BinToStr2(&buf[k],2);
str+=" ";
k+=2;
}
for(i=0;i<6;i++)
{
str+=BinToStr2(&buf[k],2);
str+=" ";
k+=2;
str+=BinToStr2(&buf[k],4);
str+=" ";
k+=4;
}
for(i=0;i<2;i++)
{
str+=BinToStr2(&buf[k],4);
str+=" ";
k+=4;
}
str+="\n";
break;
case 0x22:
str.Format("%d ",++No);
if(RunNT)
str+="深圳完整个股 ";
else
str+="SZ Full Stock ";
str+=BinToStr(&buf[1],6);
str+=" ";
k=15;
for(i=0;i<5;i++)
{
str+=BinToStr2(&buf[k],2);
str+=" ";
k+=2;
}
for(i=0;i<6;i++)
{
str+=BinToStr2(&buf[k],2);
str+=" ";
k+=2;
str+=BinToStr2(&buf[k],4);
str+=" ";
k+=4;
}
for(i=0;i<2;i++)
{
str+=BinToStr2(&buf[k],4);
str+=" ";
k+=4;
}
str+="\n";
break;
case 0x13:
str.Format("%d ",++No);
if(RunNT)
str+="上海开盘指数 ";
else
str+="SH Open Share Index ";
str+=BinToStr(&buf[1],6);
str+=" ";
k=15;
for(i=0;i<4;i++)
{
str+=BinToStr2(&buf[k],4);
str+=" ";
k+=4;
}
str+="\n";
break;
case 0x23:
str.Format("%d ",++No);
if(RunNT)
str+="深圳开盘指数 ";
else
str+="SZ Open Share Index ";
str+=BinToStr(&buf[1],6);
str+=" ";
k=15;
for(i=0;i<4;i++)
{
str+=BinToStr2(&buf[k],4);
str+=" ";
k+=4;
}
str+="\n";
break;
case 0x14:
str.Format("%d ",++No);
if(RunNT)
str+="上海开盘个股 ";
else
str+="SH Open Stock ";
str+=BinToStr(&buf[1],6);
str+=" ";
k=15;
for(i=0;i<4;i++)
{
str+=BinToStr2(&buf[k],2);
str+=" ";
k+=2;
}
str+="\n";
break;
case 0x24:
str.Format("%d ",++No);
if(RunNT)
str+="深圳开盘个股 ";
else
str+="SZ Open Stock ";
str+=BinToStr(&buf[1],6);
str+=" ";
k=15;
for(i=0;i<4;i++)
{
str+=BinToStr2(&buf[k],2);
str+=" ";
k+=2;
}
str+="\n";
break;
case 0x15:
str.Format("%d ",++No);
if(RunNT)
str+="上海实时指数 ";
else
str+="SH RealTime Share Index ";
str+=BinToStr(&buf[1],6);
str+=" ";
k=7;
for(i=0;i<5;i++)
{
str+=BinToStr2(&buf[k],4);
str+=" ";
k+=4;
}
str+="\n";
break;
case 0x25:
str.Format("%d ",++No);
if(RunNT)
str+="深圳实时指数 ";
else
str+="SZ RealTime Share Index ";
str+=BinToStr(&buf[1],6);
str+=" ";
k=7;
for(i=0;i<5;i++)
{
str+=BinToStr2(&buf[k],4);
str+=" ";
k+=4;
}
str+="\n";
break;
case 0x16:
str.Format("%d ",++No);
if(RunNT)
str+="上海实时个股 ";
else
str+="SH RealTime Stock ";
str+=BinToStr(&buf[1],6);
str+=" ";
k=7;
str+=BinToStr2(&buf[k],2);
str+=" ";
k+=2;
index=buf[8];
index=(index<<8)|buf[7];
wtemp=0x8000;
for(i=0;i<3;i++)
{
if((wtemp & index)!=0)
{
str+=BinToStr2(&buf[k],2);
str+=" ";
k+=2;
}
wtemp>>=1;
}
for(i=0;i<6;i++)
{
if((wtemp & index)!=0)
{
str+=BinToStr2(&buf[k],2);
str+=" ";
k+=2;
}
wtemp>>=1;
if((wtemp & index)!=0)
{
str+=BinToStr2(&buf[k],4);
str+=" ";
k+=4;
}
wtemp>>=1;
}
for(i=0;i<2;i++)
{
str+=BinToStr2(&buf[k],4);
str+=" ";
k+=4;
}
str+="\n";
break;
case 0x26:
str.Format("%d ",++No);
if(RunNT)
str+="深圳实时个股 ";
else
str+="SZ RealTime Stock ";
str+=BinToStr(&buf[1],6);
str+=" ";
k=7;
str+=BinToStr2(&buf[k],2);
str+=" ";
k+=2;
index=buf[8];
index=(index<<8)|buf[7];
wtemp=0x8000;
for(i=0;i<3;i++)
{
if((wtemp & index)!=0)
{
str+=BinToStr2(&buf[k],2);
str+=" ";
k+=2;
}
wtemp>>=1;
}
for(i=0;i<6;i++)
{
if((wtemp & index)!=0)
{
str+=BinToStr2(&buf[k],2);
str+=" ";
k+=2;
}
wtemp>>=1;
if((wtemp & index)!=0)
{
str+=BinToStr2(&buf[k],4);
str+=" ";
k+=4;
}
wtemp>>=1;
}
for(i=0;i<2;i++)
{
str+=BinToStr2(&buf[k],4);
str+=" ";
k+=4;
}
str+="\n";
break;
case 0x18:
str.Format("%d ",++No);
if(RunNT)
str+="上海历史数据 ";
else
str+="SH History Data ";
str+=BinToStr(&buf[1],6)+"\n";
break;
case 0x28:
str.Format("%d ",++No);
if(RunNT)
str+="深圳历史数据 ";
else
str+="SZ History Data ";
str+=BinToStr(&buf[1],6)+"\n";
break;
case 0x19:
str.Format("%d ",++No);
if(RunNT)
str+="上海分时数据 ";
else
str+="SH Minute Data ";
str+="SH Minute Data ";
str+=BinToStr(&buf[1],6)+"\n";
break;
case 0x29:
str.Format("%d ",++No);
if(RunNT)
str+="深圳分时数据 ";
else
str+="SZ Minute Data ";
str+=BinToStr(&buf[1],6)+"\n";
break;
case 0x1a:
str+=BinToStr(&buf[11],64);
break;
case 0x1b:
str+=BinToStr(buf,200);
break;
case 0x1c:
str+=BinToStr(&buf[9],64);
break;
case 0x1d:
str+=BinToStr(&buf[11],64);
break;
default:
*LineNo=No;
return str;
}
*LineNo=No;
return str;
}
CString DataExp_3(BYTE *buf,int *len)//解码
{
CString str,str1;
str.Empty();
for(int i=0;i<*len;i++)
{
str1.Format("%02X ",buf[i]);
str+=str1;
}
return str;
}
void ErrRate(int flag,CUManageView* pObject)
{
if(flag==0)
{
pObject->app->ErrCodeRate.ErrCodeRate=
pObject->app->ExpErrRate(pObject->app->ErrCodeRate.ErrLen,pObject->app->ErrCodeRate.TotalLen);
pObject->app->ErrCodeRate_m.ErrLen+=pObject->app->ErrCodeRate.ErrLen;
pObject->app->ErrCodeRate_m.TotalLen+=pObject->app->ErrCodeRate.TotalLen;
pObject->app->ErrCodeRate_t.ErrLen+=pObject->app->ErrCodeRate.ErrLen;
pObject->app->ErrCodeRate_t.TotalLen+=pObject->app->ErrCodeRate.TotalLen;
pObject->app->ErrCodeRate.ErrLen=0;
pObject->app->ErrCodeRate.TotalLen=0;
}
else
{
pObject->app->ErrCodeRate2.ErrCodeRate=
pObject->app->ExpErrRate(pObject->app->ErrCodeRate2.ErrLen,pObject->app->ErrCodeRate2.TotalLen);
pObject->app->ErrCodeRate2_m.ErrLen+=pObject->app->ErrCodeRate2.ErrLen;
pObject->app->ErrCodeRate2_m.TotalLen+=pObject->app->ErrCodeRate2.TotalLen;
pObject->app->ErrCodeRate2_t.ErrLen+=pObject->app->ErrCodeRate2.ErrLen;
pObject->app->ErrCodeRate2_t.TotalLen+=pObject->app->ErrCodeRate2.TotalLen;
pObject->app->ErrCodeRate2.ErrLen=0;
pObject->app->ErrCodeRate2.TotalLen=0;
}
}
CString BinToStr(BYTE *buf,int len)
{
char stemp[200];
int i;
BYTE *bp;
CString str;
str.Empty();
if(len<=0 || len>200)
return str;
bp=buf;
for(i=0;i<len;i++)
{
stemp[i]=(char)(*bp);
bp++;
}
stemp[len]=0;
str.Format("%s",stemp);
return str;
}
CString BinToStr2(BYTE *buf,int len)
{
DWORD dval;
CString str;
str.Empty();
if(len==2)
{
dval=buf[1];
dval<<=8;
dval|=buf[0];
}
else if(len==4)
{
dval=buf[3];
dval<<=8;
dval|=buf[2];
dval<<=8;
dval|=buf[1];
dval<<=8;
dval|=buf[0];
}
else
return str;
str.Format("%X ",dval);
return str;
}
WORD CheckSum(BYTE *buf, int len)
{
int i;
BYTE bv1,bv2;
if(len<=0)
return 0;
bv1=0;
bv2=0;
for(i=0;i<len;i++)
{
bv1+=buf[i];
if(i%2==0)
bv2-=buf[i];
else
bv2+=buf[i];
}
return bv1<<8|bv2;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -