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

📄 dataexp.cpp

📁 串口通讯演示程序
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		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 + -