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

📄 csmscom.cpp

📁 PDU短信的编程
💻 CPP
字号:

#include "class.h"
#include "globlclass.h"
SmsType  CSmsCom:: m_SmsType;
 void CSmsCom::Init(void)
 {
  m_InitFg=GGprsModule.InitNote();
 }
 void CSmsCom:: ReAckSms_NoCenter(const INT8U *DataSrc,INT16U datalen) 
 {
   
   INT16U codelen;
   INT16U tempdatalen;
   INT16U deallen16;
   INT8U tempsrclen;
   INT8U temp8;
   INT8U pDst[400];
   INT8U tempSrc[140+4];
   
   deallen16=0;
   tempdatalen=datalen;
   if((m_SmsType.TP_DCS&0x0c)==GSM_UCS2)
      temp8=64;
   else
      temp8=138;
     m_Smlseq=0;
   for(INT8U m=0;m<7;m++)
    {
     if(tempdatalen>temp8)
      {
       tempsrclen=CodeSmsPro(&DataSrc[deallen16],temp8,0,tempSrc);
       deallen16+=temp8;
       tempdatalen-=temp8;
      }
     else
     {
     
       tempsrclen=CodeSmsPro(&DataSrc[deallen16],tempdatalen,1,tempSrc);
       m=7;
     }
    codelen=(GsmEncodePdu_NoCenter(m_SmsType,tempSrc,tempsrclen,pDst));
  
     GGprsModule.SendSmsNByte(pDst,codelen);
   
   }
   
  }
 void CSmsCom:: ReAckSms_Center(const INT8U *DataSrc,INT16U datalen) 
 {
   INT16U codelen;
   INT16U tempdatalen;
   INT16U deallen16;
   INT8U tempsrclen;
   INT8U temp8;
   INT8U pDst[512];
   INT8U tempSrc[140+4];
   
   deallen16=0;
   tempdatalen=datalen;
   if((m_SmsType.TP_DCS&0x0c)==GSM_UCS2)
      temp8=64;
   else
      temp8=138;
     m_Smlseq=0;
   for(INT8U m=0;m<7;m++)
    {
     if(tempdatalen>temp8)
      {
       tempsrclen=CodeSmsPro(&DataSrc[deallen16],temp8,0,pDst);
       deallen16+=temp8;
       tempdatalen-=temp8;
      }
     else
     {
     
       tempsrclen=CodeSmsPro(&DataSrc[deallen16],tempdatalen,1,pDst);
       m=7;
     }
      codelen= (GsmEncodePdu_Center(m_SmsType,tempSrc,tempsrclen,pDst));
   
      GGprsModule.SendSmsNByte(pDst,codelen);
    
   }

  }
  void CSmsCom::AutoSendSms_NoCenter(const INT8U *pSrc,INT16U datalen)
  {
    INT8U tempbuf[8];
    pa.Read(PAP0F4ADD,8,tempbuf);
    SendSms_NoCenter(tempbuf,GSM_8BIT,pSrc, datalen);
  
  }
  void CSmsCom::SendSms_NoCenter(const INT8U *SrcNumber,INT8U type,const INT8U *DataSrc,INT16U datalen)
  {
   INT16U codelen;
   INT16U tempdatalen;
   INT16U deallen16;
   INT8U tempsrclen;
   INT8U temp8;
   INT8U pDst[512];
   INT8U tempSrc[140+4];
   
   deallen16=0;
   tempdatalen=datalen;
   if((type&0x0c)==GSM_UCS2)
      temp8=64;
   else
      temp8=138;
     m_Smlseq=0;
   for(INT8U m=0;m<7;m++)
    {
     if(tempdatalen>temp8)
      {
       tempsrclen=CodeSmsPro(&DataSrc[deallen16],temp8,0,tempSrc);
       deallen16+=temp8;
       tempdatalen-=temp8;
      }
     else
     {
     
       tempsrclen=CodeSmsPro(&DataSrc[deallen16],tempdatalen,1,tempSrc);
       m=7;
     }
     codelen=(AnySmsEncode_NoCenter(SrcNumber,type,tempSrc,tempsrclen,pDst));
   
     GGprsModule.SendSmsNByte(pDst,codelen);

   }
   
  }
  INT8U CSmsCom::CodeSmsPro(const INT8U *pSrc,INT8U pSrcLen,INT8U type,INT8U *pDst)
  {
     BufToBuf(&pDst[2],pSrc,pSrcLen);
     pDst[0]=m_Smseq;
     pDst[1]=m_Smseq>>8;
     pDst[1]&=0x0f;
     pDst[1]|=m_Smlseq<<4;
     if(type==0)
       pDst[1]&=0x7f;
     else
       pDst[1]|=0x80;
      m_Smlseq++;
      if(m_Smlseq>7)
        m_Smlseq=0;
    return (pSrcLen+2);
  }
  INT16U CSmsCom::ReadMsgData(const INT8U index,INT8U *DataDst)
  { 
     INT16U len16;
     len16=GGprsModule.read_msg(index);
     len16=(GsmDecodePdu(Task0Buf,len16,&m_SmsType ,DataDst));
     if(len16>=2)
     {
      m_Smseq=DataDst[1];
      m_Smseq<<=8;
      m_Smseq|=DataDst[0];
      m_Smseq&=0x0fff;
      m_Smseq+=1;
      if(m_Smseq>0xfff)
        m_Smseq=0;
      len16-=2;
      BufToBuf(DataDst,&DataDst[2],len16);
     return(len16);
      
     }
     return FALSE; 
  }
  INT8U CSmsCom::ReadMsgCnt(void)
  {
   return(GGprsModule.QueSmCnt());
  }
  void CSmsCom::ClrMsgIndex(const INT8U pIndex)
  {
    GGprsModule.clr_msg(pIndex); 
  }
  INT8U CSmsCom::CheckMsg_Cmti(INT16U pLen)
  {
  
   return (GGprsModule.check_cmti(pLen));
  
  }
  INT8U CSmsCom::CheckMsg_Cpri(INT16U pLen)
  {
  
   return(GGprsModule.check_cpri(pLen));
  
  }

⌨️ 快捷键说明

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