msgsend.cpp
来自「GSM Mobile收发短信」· C++ 代码 · 共 267 行
CPP
267 行
// MsgSend.cpp: implementation of the CMsgSend class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "MsgSend.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CMsgSend::CMsgSend()
{
}
CMsgSend::~CMsgSend()
{
}
//变量初始化。
void CMsgSend::init()
{
msgCentLen="08";//08:短信息中心地址长度。
msgCentType="91";//91:短信息中心号码类型。
msgCentNo="13054185806";//683108701305F0:短信息中心号码,由于位置上略有处理,实际号码应为:8613800731500(字母F是指长度减1)。
msgFileHead="11";//11:文件头字节。
msgMsgType="00";//00:信息类型.
msgCalledLen="00";//0B:被叫号码长度。(0D)
msgCalledType="91";//91:被叫号码类型.
msgCalledNo="13054185806";//3176378290F9:被叫号码,经过了位移处理,实际号码为“13677328099”。
msgProTag="00";//00:协议标识.
msgDMethod="00";//00:数据编码方案.
msgMsgTime="00";//00:有效期.
msgDataLen="00";//02:用户数据长度.
msgSBody="00";//C834:用户数据TP-UD(TP-User-Data)“Hi”.
msgTLen="00";
}
//C834:用户数据TP-UD(TP-User-Data)“Hi”.
void CMsgSend::set_msgSBody(CString pmsgSBody="")
{
CUString Ret(pmsgSBody);
int x = Ret.Length();
int i,t;
CString R="",T="";
for(i=0;i<x;i++)
{
t=Ret[i] ;
T.Format("%04x",t);
R += T;
}
msgSBody=R;
}
//02:用户数据长度.
void CMsgSend::set_msgDataLen()
{
//每个字符的长度为2;不能除以4;
//并且要用16进制表示.
msgDataLen.Format("%02x",msgSBody.GetLength()/2);
}
//00:有效期.
void CMsgSend::set_msgMsgTime(CString pmsgMsgTime)
{
msgMsgTime=pmsgMsgTime;
}
//00:数据编码方案.
void CMsgSend::set_msgDMethod(CString pmsgDMethod)
{
msgDMethod=pmsgDMethod;
}
//00:协议标识.
void CMsgSend::set_msgProTag(CString pmsgProTag)
{
msgProTag=pmsgProTag;
}
//3176378290F9:被叫号码,经过了位移处理,实际号码为“13677328099”。
void CMsgSend::set_msgCalledNo(CString pmsgCalledNo)
{
CString Ret="";
int i;
char c1,c2;
if(pmsgCalledNo.GetLength()/2==0)
{
temp=12;
}
else
{
temp=11;
pmsgCalledNo += "F";
}
Ret = pmsgCalledNo;
msgCalledNo="";
for(i=0;i<Ret.GetLength();i+=2)
{
c1= Ret[i];
c2= Ret[i+1];
msgCalledNo+=c2;
msgCalledNo+=c1;
}
}
//91:被叫号码类型.
void CMsgSend::set_msgCalledType(CString pmsgCalledType)
{
msgCalledType=pmsgCalledType;
}
//0B:被叫号码长度。(0D)
void CMsgSend::set_msgCalledLen()
{
/*99
int x=msgCalledNo.GetLength();
x=x+1;
*/
switch(temp)
{
case 4:
msgCalledLen="04";
break;
case 5:
msgCalledLen="05";
break;
case 6:
msgCalledLen="06";
break;
case 7:
msgCalledLen="07";
break;
case 8:
msgCalledLen="08";
break;
case 9:
msgCalledLen="09";
break;
case 10:
msgCalledLen="0A";
break;
case 11:
msgCalledLen="0B";
break;
case 12:
msgCalledLen="0C";
break;
case 13:
msgCalledLen="0D";
break;
case 14:
msgCalledLen="0E";
break;
case 15:
msgCalledLen="0F";
break;
}
temp=0;
}
//00:信息类型.
void CMsgSend::set_msgMsgType(CString pmsgMsgType)
{
msgMsgType=pmsgMsgType;
}
//11:文件头字节。
void CMsgSend::set_msgFileHead(CString pmsgFileHead)
{
msgFileHead=pmsgFileHead;
}
//08:短信息中心地址长度。
void CMsgSend::set_msgCentLen(CString pmsgCentLen)
{
msgCentLen=pmsgCentLen;
}
//91:短信息中心号码类型。
void CMsgSend::set_msgCentType(CString pmsgCentType)
{
msgCentType=pmsgCentType;
}
//683108701305F0:短信息中心号码,由于位置上略有处理,实际号码应为:8613800731500(字母F是指长度减1)。
void CMsgSend::set_msgCentNo(CString pmsgCentNo)
{
CString Ret="";
int i;
char c1,c2;
if(pmsgCentNo.GetLength()/2==0)
{
;
}
else
{
pmsgCentNo += "F";
}
Ret = pmsgCentNo;
msgCentNo="";
for(i=0;i<Ret.GetLength();i+=2)
{
c1= Ret[i];
c2= Ret[i+1];
msgCentNo+=c2;
msgCentNo+=c1;
}
}
CString CMsgSend::get_msgSend(CString Cno,CString Called,CString Body)
{
CString Ret = "";
//变量初始化。
init();
//08:短信息中心地址长度。
set_msgCentLen("08");
//91:短信息中心号码类型。
set_msgCentType("91");
//683108701305F0:短信息中心号码,由于位置上略有处理,实际号码应为:8613800731500(字母F是指长度减1)。
set_msgCentNo(Cno);
//11:文件头字节。
set_msgFileHead("11");
//00:信息类型.
set_msgMsgType("00");
//3176378290F9:被叫号码,经过了位移处理,实际号码为“13677328099”。
set_msgCalledNo(Called);
//91:被叫号码类型.
set_msgCalledType("81");
//0B:被叫号码长度。(0D)
set_msgCalledLen();
//00:协议标识.
set_msgProTag("00");
//00:数据编码方案.
set_msgDMethod("08");
//00:有效期.
set_msgMsgTime("01");//0000A7
//C834:用户数据TP-UD(TP-User-Data)"Hi".
set_msgSBody(Body);
//02:用户数据长度.
set_msgDataLen();
//
Ret="0011000D9168"+msgCalledNo+msgProTag+msgDMethod+msgMsgTime+msgDataLen;
/*
Ret=msgCentLen+msgCentType+msgCentNo+msgFileHead+
msgMsgType+msgCalledLen+msgCalledType+msgCalledNo+msgProTag+msgDMethod+
msgMsgTime+msgDataLen;
*/
msgTLen.Format("%d",/*Ret.GetLength()/2*/15+msgSBody.GetLength()/2);//[总的信息长度,前面为BCD码;后面为UNICODE码.]
Ret=Ret+msgSBody;
return Ret;
}
CString CMsgSend::get_msgTLen()
{
return msgTLen;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?