编码EMS较SMS复杂,但每条EMS的基础还是SMS,所以我直接继承了SMS类。区别主要是要处理好TP_UD和IE。对于ConcatenatedShortMessage,由于其IE和TP_UDHL占据了TP_UD的部分空间,所以每条短信英文只能容纳133字符,中文66字符。我们可以通过此信息得到短信条数。
如果TP_DCS为Unicode编码,则短信条目为:
TotalMessages= (TP_UD.Length / 4) / 66 + ((TP_UD.Length / 4 Mod 66) = 0)+1
如果为7bit,则为:
TotalMessages= (tp_ud.Length / 266) - ((tp_ud.Length Mod 266) = 0)+1
注意在程序中我为了简化以后的数组操作,就没有加一。
确定了短信条数以后通过一个循环就可以提取出每条短信的TP_UD。
SelectCase tp_dcs
CaseENUM_TP_DCS.UCS2
tmpTP_UD= Mid(TP_UD, i * 66 * 4 + 1, 66 * 4)'When TP_UDL is odd, the max length of anUnicode string in PDU code is 66 Charactor.See [3GPP TS 23.040 V6.5.0 (2004-09]9.2.3.24.1
CaseENUM_TP_DCS.DefaultAlphabet
tmpTP_UD= Mid(tp_ud, i * 133 * 2 + 1, 133 * 2)
EndSelect
此后还需要编码IE部分,关键代码是确定TP_UDL的值。对于TP_DCS为7bit来说确定此值显得比较复杂,弄不好容易出现多一个少一个的错误。
Iftp_dcs = ENUM_TP_DCS.UCS2 Then
TP_UDL= tmpTP_UD.Length / 2 + 6 + 1 '6: length of IE
End If
Iftp_dcs = ENUM_TP_DCS.DefaultAlphabet Then
TP_UDL= Fix((tmpTP_UD.Length + 7 * 2) * 4 / 7) '6:length of IE
End If
然后根据3GPP里关于EMS的结构的说明就可以编写出EMS PDU的处理程序。详见原代码。
如果需要扩展EMS以适应更多种类的EMS,可以参考3GPP写出更为强大的编码程序。但最关键的还是需要处理好IE以及TP_UDL。
转自bbs.sendsms.cn
分享到:
相关推荐
D-PDU API--风丘科技现场总线zip,D-PDU API--风丘科技现场总线
PDU模式收发短信可以使用3种编码:7-bit、8-bit和UCS2编码。7-bit编码用于发送普通的ASCII字符,8-bit编码通常用于发送数据消息,UCS2编码用于发送Unicode字符。一般的PDU编码由A B C D E F G H I J K L M十三项组成...
短信PDU编码,直接填入接收者号码,及短信内容可生成PDU编码 短信PDU解码,可解析接收到的编码格式为PDU的短信内容
PDU编码格式,内容较详细。 PDU编码格式,内容较详细。
一个很好的at命令的pdu<->pascal的编码解码器
1. Convert ASCII to 7-bit PDU 2. Convert 7-bit, 8-bit and 16-bit PDU to ASCII 3. Decode/Parsing the hexadecimal (PDU) of SMS message 4. Encode ASCII characters to be sent as SMS ready string
简介:PDU编码协议简介 目前,发送短消息常用Text和PDU(Protocol Data Unit,协议数据单元)模式。使用Text模式收发短信代码简单,实现起来十分容易,但最大的缺点是不能收发中文短信;而PDU模式不仅支持中文短信,也...
本程序实现了用java语言控制串口,采用pdu编码对数据进行编解码。最终分别实现了收发短信的功能。
c++实现pdu编码的文档指导包括7bit和8bit编码和解码等等新手必看
TC35发送PDU编码助手 输入短信中心号码,接收短信手机号,并使用附带的中文unicode编码器 一键点击即可生成TC35认可的PDU短信编码,方便快捷 文件中附带使用教程(.wmv) BY--Yuan坤 2012年5月
// PDU编码,用于编制、发送短消息 // 输入: pSrc - 源PDU参数指针 // 输出: pDst - 目标PDU串指针 // 返回: 目标PDU串长度 int gsmEncodePdu(const SM_PARAM* pSrc, char* pDst) { int nLength; // 内部用的串长度...
PDU8000-(0125,0250,0400,0630) DCV8-BXAXXX 电池保护开关盒 用户手册
短信PDU编码规则,讲的很详细,希望对你的项目有帮助
彩信的交互过程 彩信的PDU 彩信的PDU编码
ODIS 4.XX开始,不支持淘宝上购买的老版本VAS 5054诊断头,该工具可以在安装最新版ODIS后,让ODIS软件支持老版本VAS 5054头,压缩包内有安装说明!
PDU编码规则.doc QHDQ-29DDDAD3A0.LOG SMSLib串口通信.doc 串口常用参数.doc 关于java使用javacomm20.doc 常见的进制转换方法.doc 浅谈Java串行端口技术协议.doc 短信 AT 命令参考.doc 短信PDU编码解码.doc 通过串口...
Central Gateway Architecture A new Network Protocol: FlexRay A new Architecture: Backbone ...Dynamic Multi-PDU-to-Frame Mapping Ethernet and SOME/IP Testing and Analyzing Dynamic PDUs Summary
PDU编码工具用于短信编码
TP_DCS -- GSM_UCS2 采用Unicode编码 TP_SCTS -- NULL即可,接收时用到 TP_UD -- 发送的消息 如"你好"转为Unicode编码是4f60597d(去掉\u), 汉字需自己提前转换,若是字母,可以使用 Ascii2Unicode转换 (转换地址...
PDU-MonitorDebug-源码.rar