本人用的是ANYDATA的DTGS800模块,如果别人向我发一条长短信(长度大于140字节),这时,运营商会分成多条短信然后送到我的终端。
当我收到短信时,发现在短信内容的前面都被加了一些特殊的数据来标记该条短信。。比如说以下的这条短信
+CMGR: 00000420,15980324358,,2009/03/07/18:07,0,[0500031b0202]4f60547554759...
中括号的部分是运营商帮我加进去的,我不知道该怎么识别出来,这条短信是中文短信,我还可以猜测得出来,
[0500031b0202],前面的05应该表示用户数据头有5个字节,然后剩下的5个字节都是用户数据的头部,并不是真正的用户数据,真正的用户数据应该在这6个字节之后
但是长英文短信我就真的是没辙了,例如下面的
+CMGR: 00000220,15980324358,,2009/03/07/18:11,0,[024000030b001004]36182d4661446268325a0c5643055061365b6d56
这是我收到一条长英文短信的第二部分,不知道怎么解析出来,因为我不知道用户数据头部有多长,中括号的部分是我自己觉得的,也不知道究竟对不对,
但这样解析出来的短信是错误的.还有就是我需要用7位编码方式来解析这条短信吗?请各位同道赐教...
我弄过 PDU格式的 但我 没有搞过 长短信,分条 发送 识别起来 是比较麻烦的,我好像 记得 里面应该 有个字节是表示“这是第几条”!
引用: 引用 4 楼 peng5522 的回复:
我弄过 PDU格式的 但我 没有搞过 长短信,分条 发送 识别起来 是比较麻烦的,我好像 记得 里面应该 有个字节是表示“这是第几条”!
兄弟啊,麻烦讲清楚点?终于看到一个有做过类似的工作的。。
不好意思啊 LZ ,因为 我们 涉及的 短信 都是 短的,所以 当时 只是 稍微 了解 了下 长短信,并没有 去具体 研究。你去 网上 搜索 “分段短信” 应该 能找到 些 有帮助的 东东。
GSM 03.40 TP-User-Data(TP-UD)有讲长短信.
以前找的,看是否对你有帮助:
超长短信的处理办法 GSM 03.40规范(TP-06 1999-12-15 7.4.0)中规定了SME对于超长短信的合并处理。规范制定至今,已经超过6年,绝大多数正在使用的手机,都支持这一功能。
?
CMPP协议中,CMPP_SUBMIT_MESSAGE中有两个字段pk_total和pk_numer,恰看起来,这就是发送超长短信的设置参数,其实不然,这两个参数的设置,应该是没有用处。
?
发送超长短信,需要做两件事情:设置TP_udhi的值设置为1,在消息正文中增加协议头。协议后可以两种格式,分别是长度为6和长度为7的协议头。格式如下:
6位协议头格式:05 00 03 XX MM NN
byte 1 : 05, 表示剩余协议头的长度
byte 2 : 00, 这个值在GSM 03.40规范9.2.3.24.1中规定,表示随后的这批超长短信的标识位长度为1(格式中的XX值)。
byte 3 : 03, 这个值表示剩下短信标识的长度
byte 4 : XX,这批短信的唯一标志,事实上,SME(手机或者SP)把消息合并完之后,就重新记录,所以这个标志是否唯一并不是很重要。
byte 5 : MM, 这批短信的数量。如果一个超长短信总共5条,这里的值就是5。
byte 6 : NN, 这批短信的数量。如果当前短信是这批短信中的第一条的值是1,第二条的值是2。
例如:05 00 03 39 02 01
?
7位的协议头格式:06 08 04 XX XX MM NN
byte 1 : 06, 表示剩余协议头的长度
byte 2 : 08, 这个值在GSM 03.40规范9.2.3.24.1中规定,表示随后的这批超长短信的标识位长度为2(格式中的XX值)。
byte 3 : 04, 这个值表示剩下短信标识的长度
byte 4-5 : XX XX,这批短信的唯一标志,事实上,SME(手机或者SP)把消息合并完之后,就重新记录,所以这个标志是否唯一并不是很重要。
byte 6 : MM, 这批短信的数量。如果一个超长短信总共5条,这里的值就是5。
byte 7 : NN, 这批短信的数量。如果当前短信是这批短信中的第一条的值是1,第二条的值是2。
例如:06 08 04 00 39 02 01
?
7位协议头和6位协议头的区别是,6位协议头短信的标识字段是1个byte,而7位协议头短信的标志字段为2个byte。大多手机采用6位的协议头,也就是05 00 03 XX MM NN。
?
发送的短信这么处理,接受短信反过来就可以了。上述内容,在CMPP协议以及多款手机上经过测试验证。
引用: 引用 8 楼 liuxu2559 的回复:
以前找的,看是否对你有帮助:
超长短信的处理办法 GSM 03.40规范(TP-06 1999-12-15 7.4.0)中规定了SME对于超长短信的合并处理。规范制定至今,已经超过6年,绝大多数正在使用的手机,都支持这一功能。
?
CMPP协议中,CMPP_SUBMIT_MESSAGE中有两个字段pk_total和pk_numer,恰看起来,这就是发送超长短信的设置参数,其实不然,这两个参数的设置,应该是没有用处。
?
发送超长短信,需要做两件事情:设置TP_udhi的值设…
呵呵。谢谢这位兄弟了,这个是GSM方面的,在长中文短信方面和CDMA的好像一样,但是和CDMA的长英文短信似乎不同??