编码一个SMS一般需要如下的信息:
TP_Data_Coding_SchemeTP_UD编码方式
TP_Destination_Address对方号码
TP_Message_Reference参考号码
TP_Status_Report_Request状态报告
TP_User_Data用户信息
TP_Validity_Priod有效期
ServiceCenterNumber短信中心号码
所以在编码器中存在以上的属性,并在Set中加入了处理代码,将可读信息转换成对应的十六进制信息。
特别注意的是TP_User_Data属性,它可以根据用户数据编码自动设置TP_UDL。对于纯英文编码,TP_UDL为所有的字符数;对于Unicode编码,由于一个字符由两个字节表示,TP_UDL为所有的字符数*2。注意检查TP_User_Data的长度,对于SMS来说编码后的TP_UD长度不能超过140字节。也就是说英文160个字符(140/7*8),中文70个字符。
对于TP_UD的编码在解码器中也有说明,在此不再赘述。
我还设计了几个枚举变量:
ENUM_TP_DCS编码方式
ENUM_TP_SRI状态报告
ENUM_TP_VALID_PERIOD有效期
ENUM_TP_VPF有效期格式
这些枚举变量可以简化输入,也利于日后扩充。
当以上内容设置好以后,基本上一个短信的架子就出来了。此时调用GetSMSPDUCode进行组合,简单的把十六进制拼接起来就形成了一个完整的PDU代码。
转自bbs.sendsms.cn
TP_Data_Coding_SchemeTP_UD编码方式
TP_Destination_Address对方号码
TP_Message_Reference参考号码
TP_Status_Report_Request状态报告
TP_User_Data用户信息
TP_Validity_Priod有效期
ServiceCenterNumber短信中心号码
所以在编码器中存在以上的属性,并在Set中加入了处理代码,将可读信息转换成对应的十六进制信息。
特别注意的是TP_User_Data属性,它可以根据用户数据编码自动设置TP_UDL。对于纯英文编码,TP_UDL为所有的字符数;对于Unicode编码,由于一个字符由两个字节表示,TP_UDL为所有的字符数*2。注意检查TP_User_Data的长度,对于SMS来说编码后的TP_UD长度不能超过140字节。也就是说英文160个字符(140/7*8),中文70个字符。
对于TP_UD的编码在解码器中也有说明,在此不再赘述。
我还设计了几个枚举变量:
ENUM_TP_DCS编码方式
ENUM_TP_SRI状态报告
ENUM_TP_VALID_PERIOD有效期
ENUM_TP_VPF有效期格式
这些枚举变量可以简化输入,也利于日后扩充。
当以上内容设置好以后,基本上一个短信的架子就出来了。此时调用GetSMSPDUCode进行组合,简单的把十六进制拼接起来就形成了一个完整的PDU代码。
转自bbs.sendsms.cn
本文深入解析了编码SMS消息的过程,包括TP_Data_Coding_Scheme、TP_UD、TP_Destination_Address等关键属性的设置,并详细介绍了如何将这些信息转化为十六进制的PDU代码。通过设计枚举变量简化输入,确保编码后的TP_UD不超过140字节限制。同时,文章展示了如何利用GetSMSPDUCode函数完成最终的编码工作。
3190

被折叠的 条评论
为什么被折叠?



