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

📄 cdmasms.~cpp

📁 针对cdma2000层3信令的SMS的unicode ,解析出文本格式的SMS的源码,在c++builder环境下开发.
💻 ~CPP
📖 第 1 页 / 共 5 页
字号:
					break;
				case 4:
					Type= Type+"Delivery Acknowledgment (mobile-terminated only)";
					break;
				case 5:
					Type= Type+"User Acknowledgment (either direction)";
					break;
		  	}
                Form1->SMSMemo->Lines->Append(Type);

        }

        if(output_sms.OriAddrLen!=0)
        {
                int len;
                int i;
                AnsiString OriStr;
                OriStr = "源地址::";
                len = output_sms.OriAddrLen;
                for(i=0;i<len;i++)
                        OriStr = OriStr+(IntToStr)((int)(output_sms.OriAddr[i]));
                Form1->SMSMemo->Lines->Append(OriStr);

        }

        if(output_sms.DesAddrLen!=0)
        {
                int len;
                int i;
                AnsiString DesStr;
                DesStr = "目的地址::";
                len = output_sms.DesAddrLen;
                for(i=0;i<len;i++)
                        DesStr = DesStr+(IntToStr)((int)(output_sms.DestAddr[i]));
               Form1->SMSMemo->Lines->Append(DesStr);
        }

        if(output_sms.Have_Bearer_reply!=0)
       {
                AnsiString Reply_SEQ;
		  Reply_SEQ="应答序号::"+(IntToStr)((int)(output_sms.Bearer_reply));
		  Form1->SMSMemo->Lines->Append(Reply_SEQ);
	}

	 if(output_sms.Have_Cause_codes!=0)
	 {
                AnsiString Error_class;
		  AnsiString Cause_codes;
		  Error_class="错误类型::";
		  Cause_codes="错误原因::";
		  switch(output_sms.Error_class)
		  {
                            case 0:
							 	Error_class=Error_class+"无错误";
								break;
                            case 2:
							 	Error_class=Error_class+"the error is caused by a temporary condition";
								break;
                            case 3:
							 	Error_class=Error_class+"the error is caused by a permanent condition";
								break;
                            default:
							 	Error_class=Error_class+"保留字段";

		  }
               Form1->SMSMemo->Lines->Append(Error_class);
		  if(output_sms.Error_class!=0)
		  {
		             	switch(output_sms.Cause_codes)
		             		{
		             		             case 0:
										 	Cause_codes=Cause_codes+"Address vacant.";
											break;
		             		             case 1:
										 	Cause_codes=Cause_codes+"Address translation failure.";
											break;
		             		             case 2:
										 	Cause_codes=Cause_codes+"Network resource shortage.";
											break;
		             		             case 3:
										 	Cause_codes=Cause_codes+"Network failure.";
											break;
		             		             case 4:
										 	Cause_codes=Cause_codes+"Invalid Teleservice ID.";
											break;
		             		             case 5:
										 	Cause_codes=Cause_codes+"Other network problem.";
											break;
		             		             default:
										 	Cause_codes=Cause_codes+"保留字段";
																						
		             		}
                              Form1->SMSMemo->Lines->Append(Cause_codes);
		}
	 }

        if(output_sms.callbackLen!=0)
        {
                int len;
                int i;
                AnsiString number;
                number = "回叫号码::";
                len = output_sms.callbackLen;
                for(i=0;i<len;i++)
                        number = number+(IntToStr)((int)(output_sms.callbackNumber[i]));
               Form1->SMSMemo->Lines->Append(number);
        }

       if(output_sms.Res_code!=0)
        {
                AnsiString Res_code;
                Res_code= "用户响应码::";
                Res_code = Res_code+(IntToStr)((int)(output_sms.Res_code));
                Form1->SMSMemo->Lines->Append(Res_code);
        }


        if(output_sms.timerLen!=0)
        {
                int i;
                AnsiString time;
                time = "时间::";
                time = time+(AnsiString)((int)(2000+output_sms.timer.year))+"年";
                time = time+(AnsiString)((int)(output_sms.timer.month))+"月";
                time = time+(AnsiString)((int)(output_sms.timer.day))+"日";
                time = time+(AnsiString)((int)(output_sms.timer.hour))+"时";
                time = time+(AnsiString)((int)(output_sms.timer.minute))+"分";
                time = time+(AnsiString)((int)(output_sms.timer.second))+"秒";
               Form1->SMSMemo->Lines->Append(time);
        }

        if(output_sms.Val_per_A_len!=0)
        {
                AnsiString time;
                time = "绝对有效期::";
                time = time+(AnsiString)((int)(2000+output_sms.Val_per_A.year))+"年";
                time = time+(AnsiString)((int)(output_sms.Val_per_A.month))+"月";
                time = time+(AnsiString)((int)(output_sms.Val_per_A.day))+"日";
                time = time+(AnsiString)((int)(output_sms.Val_per_A.hour))+"时";
                time = time+(AnsiString)((int)(output_sms.Val_per_A.minute))+"分";
                time = time+(AnsiString)((int)(output_sms.Val_per_A.second))+"秒";
               Form1->SMSMemo->Lines->Append(time);
        }

	if(output_sms.Have_Val_per_R!=0)
        {
                int value=0;
		  AnsiString Val_per_R;
                Val_per_R= "相对有效期::";
  	         if(output_sms.Val_per_R<=143)
		  	     	{
                                           value=(output_sms.Val_per_R+1)*5;
						 Val_per_R = Val_per_R+(IntToStr)((int)(value))+"分";
		  	      	}
		  if(output_sms.Val_per_R>=144 && output_sms.Val_per_R<=167)
		  	      	{
		  	                       value=(output_sms.Val_per_R-143)/2+12;
				                Val_per_R = Val_per_R+(IntToStr)((int)(value))+"小时";
						  value=((output_sms.Val_per_R-143)%2)*30;
						  Val_per_R = Val_per_R+(IntToStr)((int)(value))+"分";
				}	

		  if(output_sms.Val_per_R>=168 && output_sms.Val_per_R<=196)
		  	      	{
		                              value=output_sms.Val_per_R-166;
						  Val_per_R = Val_per_R+(IntToStr)((int)(value))+"天";
        		  	}
		  if(output_sms.Val_per_R>=197 && output_sms.Val_per_R<=244)
		  	      	{
		                              value=output_sms.Val_per_R-192;
						  Val_per_R = Val_per_R+(IntToStr)((int)(value))+"星期";
        		  	}
		  if(output_sms.Val_per_R==245)
		  	      	{
		                              Val_per_R = Val_per_R+"不确定";
        		  	}		  
		  if(output_sms.Val_per_R==246)
		  	      	{
		                              Val_per_R = Val_per_R+"立即发送,如果不能立即发送则丢弃。";
        		  	}
		  if(output_sms.Val_per_R==247)
		  	      	{
		                              Val_per_R = Val_per_R+"Valid until mobile becomes inactive/Deliver when mobile next becomes active";
        		  	}
		  if(output_sms.Val_per_R==248)
		  	      	{
		                              Val_per_R = Val_per_R+"Valid until registration area changes,discard if not registered";
        		  	}		
		  if(output_sms.Val_per_R>=249)
		  	      	{
						  Val_per_R = Val_per_R+"保留字段";
        		  	}		  
				Form1->SMSMemo->Lines->Append(Val_per_R);
        }

        if(output_sms.Def_del_time_A_len!=0)
        {
                AnsiString time;
                time = "绝对延迟发送时间::";
                time = time+(AnsiString)((int)(2000+output_sms.Def_del_time_A.year))+"年";
                time = time+(AnsiString)((int)(output_sms.Def_del_time_A.month))+"月";
                time = time+(AnsiString)((int)(output_sms.Def_del_time_A.day))+"日";
                time = time+(AnsiString)((int)(output_sms.Def_del_time_A.hour))+"时";
                time = time+(AnsiString)((int)(output_sms.Def_del_time_A.minute))+"分";
                time = time+(AnsiString)((int)(output_sms.Def_del_time_A.second))+"秒";
               Form1->SMSMemo->Lines->Append(time);
        }

	if(output_sms.Have_Def_del_time_R!=0)
        {
                int value=0;
		  AnsiString Def_del__time_A;
                Def_del__time_A= "相对延迟发送时间::";
  	         if(output_sms.Def_del_time_R<=143)
		  	     	{
                                           value=(output_sms.Def_del_time_R+1)*5;
						 Def_del__time_A = Def_del__time_A+(IntToStr)((int)(value))+"分";
		  	      	}
		  if(output_sms.Def_del_time_R>=144 && output_sms.Def_del_time_R<=167)
		  	      	{
		  	                       value=(output_sms.Def_del_time_R-143)/2+12;
				                Def_del__time_A = Def_del__time_A+(IntToStr)((int)(value))+"小时";
						  value=((output_sms.Def_del_time_R-143)%2)*30;
						  Def_del__time_A = Def_del__time_A+(IntToStr)((int)(value))+"分";
				}	

		  if(output_sms.Def_del_time_R>=168 && output_sms.Def_del_time_R<=196)
		  	      	{
		                              value=output_sms.Def_del_time_R-166;
						  Def_del__time_A = Def_del__time_A+(IntToStr)((int)(value))+"天";
        		  	}
		  if(output_sms.Def_del_time_R>=197 && output_sms.Def_del_time_R<=244)
		  	      	{
		                              value=output_sms.Def_del_time_R-192;
						  Def_del__time_A = Def_del__time_A+(IntToStr)((int)(value))+"星期";
        		  	}
		  if(output_sms.Def_del_time_R==247)
		  	      	{
		                              Def_del__time_A = Def_del__time_A+"Valid until mobile becomes inactive/Deliver when mobile next becomes active";
        		  	}
 
       	Form1->SMSMemo->Lines->Append(Def_del__time_A);
        }

        if(output_sms.Have_Priority_Indicator!=0)
        {
                AnsiString Prio_Ind;
                Prio_Ind= "优先级标志::";
		  switch(output_sms.Priority_Indicator)
		  	{
		  	            case 0:
							Prio_Ind = Prio_Ind+"Normal";
							break;
				     case 1:
					 	       Prio_Ind = Prio_Ind+"Interactive";
                                                 break;
				     case 2:
					 	       Prio_Ind = Prio_Ind+"Urgent";
							break;   
				     case 3:
					 	       Prio_Ind = Prio_Ind+"Emergency";
							break;
		  	}
                
                Form1->SMSMemo->Lines->Append(Prio_Ind);

        }			

	 if(output_sms.Have_Privacy_Indicator!=0)
        {
                AnsiString Priv_Ind;
                Priv_Ind= "密级标志::";
		  switch(output_sms.Privacy_Indicator)
		  	{
		  	            case 0:
							Priv_Ind = Priv_Ind+"Not restricted (privacy level 0)";
							break;
				     case 1:
					 	       Priv_Ind = Priv_Ind+"Restricted (privacy level 1)";
                                                 break;
				     case 2:
					 	       Priv_Ind = Priv_Ind+"Confidential (privacy level 2)";
							break;   
				     case 3:
					 	       Priv_Ind = Priv_Ind+"Secret (privacy level 3)";
							break;
		  	}
                
                Form1->SMSMemo->Lines->Append(Priv_Ind);

        }

       if(output_sms.Have_Reply_Option!=0)
       {
                AnsiString Rep_opt;
		  char User_ack_req;
	         char Dak_req;
		  User_ack_req=(output_sms.Reply_Option>>7)&0x1;
		  Dak_req=(output_sms.Reply_Option>>6)&0x1;
		  if(User_ack_req==0 && Dak_req==0)
		  	{
		              	;
		  	}
		  else 
		  	{
		  	            Rep_opt="Positive user (manual) acknowledgment requested::";
				     if(User_ack_req==0)
					 	Rep_opt+="否";
				     if(User_ack_req==1)
					 	Rep_opt+="是";
				     Form1->SMSMemo->Lines->Append(Rep_opt);
				     Rep_opt="Delivery acknowledgment request::";
				     if(Dak_req==0)
					 	Rep_opt+="否";
				     if(Dak_req==1)
					 	Rep_opt+="是";
				     Form1->SMSMemo->Lines->Append(Rep_opt);
		  	}
       }

        if(output_sms.Have_Num_Of_Msgs!=0)
        {
                AnsiString number;
                number= "消息数量::";
		  number=number+(AnsiString)((int)(output_sms.Num_Of_Msgs));
		  Form1->SMSMemo->Lines->Append(number);
        }

	 if(output_sms.Have_Priority_Indicator!=0)
        {
                AnsiString Alert_Pri;
                Alert_Pri= "提醒优先级标志::";
		  switch(output_sms.Alert_on_msg)
		  	{
		  	            case 0:
							Alert_Pri = Alert_Pri+"Use Mobile default alert";
							break;
				     case 1:
					 	       Alert_Pri = Alert_Pri+"Use Low-priority alert";
                                                 break;
				     case 2:
					 	       Alert_Pri = Alert_Pri+"Use Medium-priority alert";
							break;   
				     case 3:
					 	       Alert_Pri = Alert_Pri+"Use High-priority alert";
							break;
		  	}
                
                Form1->S

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -