问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

SIM900模块短信发送实战:AT命令与PDU编码解析

创作时间:
2025-01-22 06:45:33
作者:
@小白创作中心

SIM900模块短信发送实战:AT命令与PDU编码解析

SIM900模块是常用的GSM通信模块,广泛应用于物联网和嵌入式系统中。本文将详细介绍如何使用SIM900模块发送长中文短信和英文短信,通过具体实例解析短信的编辑和发送过程。

短信基本概念

Short Messaging Service(简称SMS)是最早的短消息业务,也是普及率最高的一种短消息业务。一条短信最长可以发送160个字符,即160个英文或数字字符,或70个中文字符。对于长文本的发送,有些短信业务平台支持发送长短信,用户最终会收到一条完整的长短信,但业务统计和计费会按照长短信拆分后的短信条数进行。

发送英文短信

发送英文短信的基本步骤如下:

  1. 发送AT命令,确认模块可以执行AT命令操作:

    AT
    OK
    
  2. 设置为Text模式:

    AT+CMGF=1
    
  3. 输入接收短信的手机号码,等待出现“>”:

    AT+CMGS="1366265ABCD"
    > TEST\u001A
    

    注意:所有短信内容均以“Ctrl+z”结束。这里\u001A表示转义字符“Ctrl+z”。

发送中文短信

发送中文短信需要使用PDU模式:

  1. 发送AT命令,确认模块可以执行AT命令操作:

    AT
    OK
    
  2. 设置为PDU模式:

    AT+CMGF=0
    
  3. 发送PDU编码的长度(三位十进制字符串表示):

    AT+CMGS=017
    > 0891683108501505F011000D91688152963059F8000800020033
    +CMGS: 55
    OK
    

中文短信PDU编码解析

以一个完整的中文短信为例:

0891683108501505F011000D9168316662A5CBFD000801020033

SCA部分解析

  • 08:表示后续字符长度(16个字符)
  • 91:表示发送设备为手机
  • 683108501505F0:服务中心号码(8613800551500),其中F用于凑数使字符数量为偶数

PDU内容解析

  • 1100:表示正常发送短信,点到点标准短信
  • 0D9168316662A5CBFD:接收手机号码(+861366265ABCD)
  • 0D:表示手机号码长度(13位)
  • 91:表示接收设备为手机
  • 68316662A5CBFD:经过字符交换的手机号码
  • 000801:TP-PID信息码
  • 00:普通GSM类型,点到点方式
  • 08:UCS2编码
  • 01:时间戳
  • 020033:用户信息
  • 02:用户信息长度(4字节)
  • 0033:实际短信内容(中文字符“1”)

编辑长中文短信

长中文短信通过将多个“数据报文”进行拼接实现:

两个数据报文的拼接示例

AT+CMGS=023
> 0891683108501505F051000D91688152963059F800080108050003FC02010031
+CMGS: 59
OK

AT+CMGS=023
> 0891683108501505F051000D91688152963059F800080108050003FC02020032
+CMGS: 60
OK
  • 5100:表示发送带有报头的短信
  • 000801:TP-PID信息码
  • 08050003FC0201003108050003FC02020032:用户信息
  • 08:用户信息长度
  • 05:协议头长度
  • 00:分拆短信标志
  • 03:分拆数据元素长度
  • FC:合并标志
  • 02010202:数据报文序号
  • 00310032:实际短信内容

长短信实例

第一条短信

0891683108100005F051000D91683118216553F60008018C0500032302014E8C96F64E005B9A4F1A597D597D597D768465F665F665F695F44E0D597D597D597D768460254F1A4E8654754F604E5F4E0D898157284E006B21751F76EE8FDB665A70B954275417662F4E004E2A4E1C5F20897F62114E0D662F62117231597D4E86541754758BBE7F6E597D597D554A51765B83662F554A5475547554754F607684547562A4
  • 0891683108100005F0:SMSC地址
  • 5100:有报头短信
  • 0D91683118216553F6:回复地址
  • 0008:TP-PID信息码
  • 8C:用户信息长度
  • 05:协议头长度
  • 00:分拆短信标志
  • 03:分拆数据元素长度
  • 23:唯一标志
  • 0201:数据报文序号
  • 4E8C96F6...:数据内容

第二条短信

0891683108100005F051000D91683118216553F60008012605000323020281EA4ECE524D5C3177617740542754755475007A007A006C0076006C006F007A
  • 0891683108100005F0:SMSC地址
  • 5100:有报头短信
  • 0D91683118216553F6:回复地址
  • 0008:TP-PID信息码
  • 26:用户信息长度
  • 05:协议头长度
  • 00:分拆短信标志
  • 03:分拆数据元素长度
  • 23:唯一标志
  • 0202:数据报文序号
  • 81EA4ECE...:数据内容

中文短信发送实例

单条短信

AT+CMGS=017
> 0891683108501505F011000D91688152963059F8000800020033
+CMGS: 55
OK

多条短信拼接

AT+CMGS=023
> 0891683108501505F051000D91688152963059F800080108050003FC02010031
+CMGS: 59
OK

AT+CMGS=023
> 0891683108501505F051000D91688152963059F800080108050003FC02020032
+CMGS: 60
OK

接收到的中文短信解析

+CMTI:"SM",2
AT+CMGR=2
+CMGR: 0,"",52
0891683108707515F0240D91688186418379F20008416042712393232000280047003100320033003400350036003700380039003B003000314F600029
  • 0891683108707515F0:短信息中心号码
  • 240D91688186418379F2:发送短信的手机号码
  • 000841604271239323:时间戳
  • 00280047003100320033003400350036003700380039003B003000314F600029:短信内容

应用场景

在没有服务器的情况下,使用短信通讯可以降低服务器租赁费用。在一些防盗系统、液位控制系统和台风预警系统中,短信报警是一种较为实惠的解决方案。

至此,中文短信和英文短信的编辑与发送方法已介绍完毕。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号