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

📄 msgtext.cpp

📁 七号信令解码器
💻 CPP
📖 第 1 页 / 共 5 页
字号:
								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 + -