域格模块短信收发(PDU解析)


前言

短信是伴随数字移动通信系统而产生的一种电信业务,通过移动通信系统的信令信道和信令网,传送文字或数字短信息,属于一种非实时的、非语音的数据通信业务。
4G通串口短信模块,通过串口连接单片机设备或电脑作为设备串口外置短信功能使用,这种应用主要是在和短信连接的设备里做编程,该短信模块是针对于工业设备使用来设计,使用方便,被应用于电力、水利、石油、化工、铁路、水文、区域报警及其他行业的遥控、遥测、遥信、遥感、遥调等领域


一、test和PDU

一共有两种方式来发送和接收SMS信息:Text 模式和PDU 模式。Text 模式是纯文本方式,可使用不同的字符集,弊端就是不能发送中文短消息。PDU 模式可以使用任何字符集,这也是国内各类手机默认的编码方式。下面介绍的内容,是在Text 模式和PDU 模式下发送和接收短消息的实现流程。

二、使用步骤

1.发送短消息

代码如下(示例):

text 模式
AT+CMGF=1
AT+CMGS="号码"
>text //内容结束不需要回车,发送 0x1a或按“Ctrl+Z”发送(注:模块返回
上报前,不要进行其他操作)
//发送成功将上报+CMGS:11(数字表示短消息序号)
PDU模式
AT+CMGF=0
AT+CMGS=长度
>内容 //编码时,短信中心可统一使用 00
//接收方号码前加 86
//发送成功将上报+CMGS:12(数字表示短消息序号)
//内容错误将上报+CMSERROR:300

补:PDU模式最常见的问题就是长度和编码判断,可以参考下面解析

2.接收短消息

代码如下(示例):

直接上报
AT+CNMI=1,2 //直接上报,不存储,直接显示收到的消息
先存储并发送通知,再读取
AT+CPMS="SM","SM","SM" //设定消息存储器
AT+CNMI=1,1 //存储并发送通知
+CMTI: "SM",8 //收到短信后,模块上报的通知
AT+CMGR=8 //读取该条信

补:text短信发送失败,确认卡没问题后,注意核对短信中心,会出现如下情况

AT+CMGS="13699*****10"//设置完之后不会转到内容行

+CMS ERROR: 332 //报错332

AT+CSCA="+8613010314500"  //设置下短信中心
OK

上海移动短信中心号码 +8613800210500
上海联通 +8613010314500
其他地区参考 : http://www.3533.com/duanxinhaoma.htm


三、PDU编码解析

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十三项组成。

A:短信息中心地址长度,2位十六进制数(1字节)。
B:短信息中心号码类型,2位十六进制数。
C:短信息中心号码,B+C的长度将由A中的数据决定。
D:文件头字节,2位十六进制数。
E:信息类型,2位十六进制数。
F:被叫号码长度,2位十六进制数。
G:被叫号码类型,2位十六进制数,取值同B。
H:被叫号码,长度由F中的数据决定。
I:协议标识,2位十六进制数。
J:数据编码方案,2位十六进制数。
K:有效期,2位十六进制数。
L:用户数据长度,2位十六进制数。
M:用户数据,其长度由L中的数据决定。J中设定采用UCS2编码,这里是中英文的Unicode字符。

PDU编码协议说明

例1 发送:SMSC号码是+8613800250500,对方号码是13693092030,消息内容是“Hello!”。从手机发出的PDU串可以是
08 91 68 31 08 20 05 05 F0 11 00 0D 91 68 31 96 03 29 30 F0 00 00 00 06 C8 32 9B FD 0E 01
对照规范,具体分析:
分段含义说明
08SMSC地址信息的长度共8个八位字节(包括91)
91SMSC地址格式(TON/NPI)用国际格式号码(在前面加‘+’)
68 31 08 20 05 05 F0SMSC地址8613800250500,补‘F’凑成偶数个
11基本参数(TP-MTI/VFP)发送,TP-VP用相对格式
00消息基准值(TP-MR)0
0D目标地址数字个数共13个十进制数(不包括91和‘F’)
91目标地址格式(TON/NPI)用国际格式号码(在前面加‘+’)
68 31 96 03 29 30 F0目标地址(TP-DA)8613693092030,补‘F’凑成偶数个
00协议标识(TP-PID)是普通GSM类型,点到点方式
00用户信息编码方式(TP-DCS)7-bit编码
00有效期(TP-VP)5分钟
06用户信息长度(TP-UDL)实际长度6个字节
C8 32 9B FD 0E 01用户信息(TP-UD)“Hello!”
编码工具参考 : 在线短信PDU
在模块使用PDU模式中数据长度问题容易报错,数据类型分两种带短信中心和不带短信中,判断是通过开头数据,例子是带短信中心开头是08,不带短信中心是0011000D,开头的00不算作字节,数据长度需要减1
如下示例参考:

AT+CMGS=21

> 0011000D9168311826x7xxFx0000AA05D4E2941A03 //数据长度为21,显示报错
PDU format: DataLength in pdu is not same as data configured in AT+CMGS

+CMS ERROR: unknown error
AT+CMGS=20

> 0011000D9168311826x7xxFx0000AA05D4E2941A03 //数据长度为20
+CMGS: 203
OK

+CMTI: "SM",35
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值