📄 msgtext.cpp
字号:
sprintf(Str,"%sh",Str2);
AddString(nDrawX*PtRate,nDrawY*PtRate,Str,strlen(Str));
strcpy(Str2,"");
nDrawY+=DltY;
}
}
if(K!=0) {
sprintf(Str,"%sh",Str2);
AddString(nDrawX*PtRate,nDrawY*PtRate,Str,strlen(Str));
strcpy(Str2,"");
nDrawY+=DltY;
}
nDrawX=X0;
}//IF
else I+=Len2;
}
else {
switch(FieldNo)
{
case 2: // 2 field
bDrawOK=TRUE;
if(bDrawOK) {
sprintf(Str,"xxh");
AddString(nDrawX*PtRate,nDrawY*PtRate,Str,strlen(Str));
nDrawX=X0;
}
//data fields
Len2=BUFDISPLAY[I];
I++;
Len3=0;
if(Len2==0) {
Len2=BUFDISPLAY[I]; //bitnum
I++;
if((Len2%8)==0)
Len3=Len2/8;
else Len3=Len2/8+1;
}
else {
Len3=Len2;
}
if(bDrawOK) {
ShowType=RADIORESHead_Crit[FieldNo-1][3];
strcpy(Str2,"");
for(J=0;J<Len3;++J) {
bData=BUFDISPLAY[I];
I++;
Num=8;
if(Len2!=Len3 && J==(Len2/8))
Num=Len2%8;
bEnd=GetDataStr(bData,Num,ShowType);
if(!bEnd) {
sprintf(Str2,"?: %02Xh",bData);
I+=(Len3-1-J);
break;
}
strcat(Str2,DataStr);
}
strcpy(Str1,RADIORESHead[FieldNo-1]);
if(ShowType==1)
sprintf(Str,": %sb",Str2);
else {
if(ShowType==2)
sprintf(Str,": %sh",Str2);
else sprintf(Str,": %s",Str2);
}
nDrawX+=DeltaXL;
AddString(nDrawX*PtRate,nDrawY*PtRate,Str1,strlen(Str1));
strcat(Str," ");
strcat(Str,"数据链路识别");
nDrawX+=DeltaX;
AddString(nDrawX*PtRate ,nDrawY*PtRate,Str,strlen(Str));
nDrawX=X0;
nDrawY+=DltY;
} //if(bshow)
else I+=Len3;
break;
case 3:
if(DetailType==0) //overview :not main field
bDrawOK=FALSE;
else bDrawOK=TRUE;
if(bDrawOK) {
sprintf(Str,"xxh");
AddString(nDrawX*PtRate,nDrawY*PtRate,Str,strlen(Str));
nDrawX=X0;
}
//data fields
Len2=BUFDISPLAY[I];
I++;
Len3=0;
if(Len2==0) {
Len2=BUFDISPLAY[I]; //bitnum
I++;
if((Len2%8)==0)
Len3=Len2/8;
else Len3=Len2/8+1;
}
else {
Len3=Len2;
}
if(bDrawOK) {
ShowType=RADIORESHead_Crit[FieldNo-1][3];
strcpy(Str2,"");
for(J=0;J<Len3;++J) {
bData=BUFDISPLAY[I];
I++;
Num=8;
if(Len2!=Len3 && J==(Len2/8))
Num=Len2%8;
bEnd=GetDataStr(bData,Num,ShowType);
if(!bEnd) {
sprintf(Str2,"?: %02Xh",bData);
I+=(Len3-1-J);
break;
}
strcat(Str2,DataStr);
}
strcpy(Str1,RADIORESHead[FieldNo-1]);
if(ShowType==1)
sprintf(Str,": %sb",Str2);
else {
if(ShowType==2)
sprintf(Str,": %sh",Str2);
else sprintf(Str,": %s",Str2);
}
nDrawX+=DeltaXL;
AddString(nDrawX*PtRate,nDrawY*PtRate,Str1,strlen(Str1));
strcat(Str," ");
strcat(Str,"长度指示");
nDrawX+=DeltaX;
AddString(nDrawX*PtRate ,nDrawY*PtRate,Str,strlen(Str));
nDrawX=X0;
nDrawY+=DltY;
} //if(bshow)
else I+=Len3;
break;
case 4:
//data fields
Len2=BUFDISPLAY[I];
I++;
Len3=0;
if(Len2==0) {
Len2=BUFDISPLAY[I]; //bitnum
I++;
if((Len2%8)==0)
Len3=Len2/8;
else Len3=Len2/8+1;
}
else {
Len3=Len2;
}
if(Len2!=Len3 && Len2<8) { //协议鉴别器
bPseudo=FALSE;
bDrawOK=TRUE;
if(bDrawOK) { //first judge show or not so put it here
sprintf(Str,"xxh");
AddString(nDrawX*PtRate,nDrawY*PtRate,Str,strlen(Str));
nDrawX=X0;
}
bData=BUFDISPLAY[I];
I++;
if((bData&0xf0)==0x50)
DataKind=9; //moblity
else if((bData&0xf0)==0x30)
DataKind=10; //callcontrol
else if((bData&0xf0)==0x60)
DataKind=8; //radio res
else { //error handle
if(bDrawOK) {
sprintf(Str,"DTAP");
nDrawX+=DeltaXL;
AddString(nDrawX*PtRate,nDrawY*PtRate,Str,strlen(Str));
sprintf(Str,": ? ProtocolDiscriminator= %xh",bData);
nDrawX+=DeltaXL;
AddString(nDrawX*PtRate,nDrawY*PtRate,Str,strlen(Str));
nDrawX=X0;
I--;
while(1) {
if(BUFDISPLAY[I]==0xcc && BUFDISPLAY[I+1]==0xee) {
I++;
break;
}
I++;
if(I>Len+4) {
return;
}
}
break;
}
}
if(bDrawOK) { //FieldNo must +1
ShowType=RADIORESHead_Crit[FieldNo][3];
strcpy(Str2,"");
Num=8;
if(Len2<8)
Num=Len2%8;
bEnd=GetDataStr(bData,Num,ShowType);
if(!bEnd) {
sprintf(Str2,"?: %02Xh",bData);
I+=(Len3-1-J);
break;
}
strcat(Str2,DataStr);
strcpy(Str1,RADIORESHead[FieldNo]);
if(ShowType==1)
sprintf(Str,": %sb",Str2);
else {
if(ShowType==2)
sprintf(Str,": %sh",Str2);
else sprintf(Str,": %s",Str2);
}
nDrawX+=DeltaXL;
AddString(nDrawX*PtRate,nDrawY*PtRate,Str1,strlen(Str1));
nDrawX+=DeltaX;
strcat(Str," ");
strcat(Str,"协议鉴别器");
if(DataKind==9) //moblity
strcat(Str,":移动管理(MOBILITY)");
else if(DataKind==10) //callcontrol
strcat(Str,":呼叫控制管理(CALLCONTROL)");
else if(DataKind==8) //radio res
strcat(Str,":无线资源管理(RADIORES)");
AddString(nDrawX*PtRate,nDrawY*PtRate,Str,strlen(Str));
nDrawX=X0;
nDrawY+=DltY;
}
}
else { //Layer2PseudoLI
if(DetailType==0) //overview :not main field
bDrawOK=FALSE;
else bDrawOK=TRUE;
if(bDrawOK) { //first judge show or not so put it here
sprintf(Str,"xxh");
AddString(nDrawX*PtRate,nDrawY*PtRate,Str,strlen(Str));
nDrawX=X0;
}
bData=BUFDISPLAY[I];
I++;
bPseudo=TRUE;
if(bDrawOK) {
ShowType=RADIORESHead_Crit[FieldNo-1][3];
strcpy(Str2,"");
Num=8;
bEnd=GetDataStr(bData,Num,ShowType);
if(!bEnd) {
sprintf(Str2,"?: %02Xh",bData);
I+=(Len3-1-J);
break;
}
strcat(Str2,DataStr);
strcpy(Str1,RADIORESHead[FieldNo-1]);
if(ShowType==1)
sprintf(Str,": %sb",Str2);
else {
if(ShowType==2)
sprintf(Str,": %sh",Str2);
else sprintf(Str,": %s",Str2);
}
nDrawX+=DeltaXL;
AddString(nDrawX*PtRate,nDrawY*PtRate,Str1,strlen(Str1));
strcat(Str," ");
strcat(Str,"第二层伪长");
nDrawX+=DeltaX;
AddString(nDrawX*PtRate ,nDrawY*PtRate,Str,strlen(Str));
nDrawX=X0;
nDrawY+=DltY;
}
else I+=Len3;
nDrawY+=DltY;
}
break;
case 5:
if(bPseudo) { //协议鉴别器
bDrawOK=TRUE;
if(bDrawOK) { //first judge show or not so put it here
sprintf(Str,"xxh");
AddString(nDrawX*PtRate,nDrawY*PtRate,Str,strlen(Str));
nDrawX=X0;
}
//data fields
Len2=BUFDISPLAY[I];
I++;
Len3=0;
if(Len2==0) {
Len2=BUFDISPLAY[I]; //bitnum
I++;
if((Len2%8)==0)
Len3=Len2/8;
else Len3=Len2/8+1;
}
else {
Len3=Len2;
}
bData=BUFDISPLAY[I];
I++;
if((bData&0xf0)!=0x60)
{ //error handle
if(bDrawOK) {
sprintf(Str,"DTAP");
nDrawX+=DeltaXL;
AddString(nDrawX*PtRate,nDrawY*PtRate,Str,strlen(Str));
sprintf(Str,": ? ProtocolDiscriminator= %xh",bData);
nDrawX+=DeltaXL;
AddString(nDrawX*PtRate,nDrawY*PtRate,Str,strlen(Str));
nDrawX=X0;
I--;
while(1) {
if(BUFDISPLAY[I]==0xcc && BUFDISPLAY[I+1]==0xee) {
I++;
break;
}
I++;
if(I>Len+4) {
return;
}
}
break;
}
}
if(bDrawOK) {
ShowType=RADIORESHead_Crit[FieldNo-1][3];
strcpy(Str2,"");
Num=8;
if(Len2!=Len3 && Len2<8)
Num=Len2%8;
bEnd=GetDataStr(bData,Num,ShowType);
if(!bEnd) {
sprintf(Str2,"?: %02Xh",bData);
I+=(Len3-1-J);
break;
}
strcat(Str2,DataStr);
strcpy(Str1,RADIORESHead[FieldNo-1]);
if(ShowType==1)
sprintf(Str,": %sb",Str2);
else {
if(ShowType==2)
sprintf(Str,": %sh",Str2);
else sprintf(Str,": %s",Str2);
}
nDrawX+=DeltaXL;
AddString(nDrawX*PtRate,nDrawY*PtRate,Str1,strlen(Str1));
nDrawX+=DeltaX;
strcat(Str," ");
strcat(Str,"协议鉴别器");
strcat(Str,":动态资源管理");
AddString(nDrawX*PtRate,nDrawY*PtRate,Str,strlen(Str));
nDrawX=X0;
nDrawY+=DltY;
}
}
else {
if(DetailType==0) //overview :not main field
bDrawOK=FALSE;
else bDrawOK=TRUE;
//data fields
Len2=BUFDISPLAY[I];
I++;
Len3=0;
if(Len2==0) {
Len2=BUFDISPLAY[I]; //bitnum
I++;
if((Len2%8)==0)
Len3=Len2/8;
else Len3=Len2/8+1;
}
else {
Len3=Len2;
}
if(bDrawOK) {
ShowType=RADIORESHead_Crit[FieldNo-1][3];
strcpy(Str2,"");
for(J=0;J<Len3;++J) {
bData=BUFDISPLAY[I];
I++;
Num=8;
if(Len2!=Len3 && J==(Len2/8))
Num=Len2%8;
bEnd=GetDataStr(bData,Num,ShowType);
if(!bEnd) {
sprintf(Str2,"?: %02Xh",bData);
I+=(Len3-1-J);
break;
}
strcat(Str2,DataStr);
}
strcpy(Str1,RADIORESHead[FieldNo-1]);
if(ShowType==1)
sprintf(Str,": %sb",Str2);
else {
if(ShowType==2)
sprintf(Str,": %sh",Str2);
else sprintf(Str,": %s",Str2);
}
nDrawX+=DeltaXL;
AddString(nDrawX*PtRate,nDrawY*PtRate,Str1,strlen(Str1));
strcat(Str," ");
strcat(Str,"跳指示");
nDrawX+=DeltaX;
AddString(nDrawX*PtRate ,nDrawY*PtRate,Str,strlen(Str));
nDrawX=X0;
nDrawY+=DltY;
} //if(bshow)
else I+=Len3;
}
if(bDrawOK) { //first judge show or not so put it here
sprintf(Str,"xxh");
AddString(nDrawX*PtRate,nDrawY*PtRate,Str,strlen(Str));
nDrawX=X0;
}
break;
case 6:
if(bPseudo) { //跳指示
if(DetailType==0) //overview :not main field
bDrawOK=FALSE;
else bDrawOK=TRUE;
if(bDrawOK) { //first judge show or not so put it here
sprintf(Str,"xxh");
AddString(nDrawX*PtRate,nDrawY*PtRate,Str,strlen(Str));
nDrawX=X0;
}
//data fields
Len2=BUFDISPLAY[I];
I++;
Len3=0;
if(Len2==0) {
Len2=BUFDISPLAY[I]; //bitnum
I++;
if((Len2%8)==0)
Len3=Len2/8;
else Len3=Len2/8+1;
}
else {
Len3=Len2;
}
if(bDrawOK) {
ShowType=RADIORESHead_Crit[FieldNo-1][3];
strcpy(Str2,"");
for(J=0;J<Len3;++J) {
bData=BUFDISPLAY[I];
I++;
Num=8;
if(Len2!=Len3 && J==(Len2/8))
Num=Len2%8;
bEnd=GetDataStr(bData,Num,ShowType);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -