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

📄 gsmdecodepdu.c

📁 GSM短信息PDU解码程序
💻 C
字号:
#include <my.h>
//PDU解码:用于接收、阅读短信息
//pSrc:源PDU串指针
//pDst:目标PDU参数指针
//返回:用户信息串长度
uint gsmDecodePdu(const uchar *pSrc,SM_PARAM *pDst)
{
 uint nDstLength;
 uchar tmp;
 uchar buf[256];
 gsmString2Byte(pSrc,&tmp,2);
 tmp=(tmp-1)*2;
 pSrc+=4;
 gsmSerialzeNumbers(pSrc,pDst->SCA,tmp);
 pSrc+=tmp;
 gsmString2Bytes(pSrc,&tmp,2);
 pSrc+=2;
 if(tmp&0x80)
 {
  gsmString2Bytes(pSrc,&tmp,2);
  if(tmp&1) tmp+=1;
  pSrc+=4;
  gsmSerializeNumbers(pSrc,pDst->TPA,tmp);
  pSrc+=tmp;
 }
 gsmString2Byte(pSrc,(uchar *)&pDst->TP_PID,2);
 pSrc+=2;
 gsmString2Byte(pSrc,(uchar *)&pDst->TP_DCS,2);
 pSrc+=2;
 gsmSerializeNumbers(pSrc,pDst->TP_SCTS,14);
 pSrc+=14;
 gsmString2Bytes(pSrc,&tmp,2);
 pSrc+=2;
 if(pDst->TP_DCS==GSM_7BIT)
 {
  nDstLength=gsmString2Bytes(pSrc,buf,tmp&7?(uint)tmp*7/4+2:(uint)tmp*7/4);
  gsmDecode7bit(buf,pDst->TP_UD,nDstLength);
  nDstLength=tmp;
 }
 else if(pDst->TP_DCS==GSM_UCS2)
 {
  nDstLength=gsmString2Bytes(pSrc,buf,tmp*2);
  nDstLength-gsmDecodeUcs2(buf,pDst->TP_UD,nDstLength);
 }
 else
 {
  nDstLength=gsmString2Byte(pSrc,buf,tmp*2);
  nDstLength=gsmDecode8bit(buf,pDst->TP_UD,nDstLength);
 }
 return nDstLength;
}

⌨️ 快捷键说明

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