AT指令发送短信流程详解
AT指令概述
AT指令(Attention Command)是调制解调器(Modem)与终端设备之间通信的标准化指令集,广泛应用于短信发送、网络连接等场景,通过AT指令,用户可以控制模块完成短信的编写、发送、接收及管理操作,本文将详细介绍基于AT指令的短信发送流程,涵盖指令解析、操作步骤及常见问题处理。

短信发送前的准备工作
在通过AT指令发送短信前,需确保以下条件满足:
- 硬件连接:模块(如GSM/GPRS模块)通过串口(UART)与主控MCU或电脑连接,供电稳定。
- 模块初始化:模块需正确上电,并通过AT指令进入工作模式。
- SIM卡状态:确保SIM卡已正确插入,且未被PIN码锁定(可通过
AT+CPIN?查询)。 - 网络注册:模块需成功注册到网络(可通过
AT+CREG?查询状态,若返回+CREG: 0,1或+CREG: 0,5表示已注册)。
短信发送的核心流程
短信发送主要分为文本模式(Text Mode)和PDU模式(PDU Mode)两种,其中文本模式指令简单直观,适用于大多数场景,以下是文本模式的详细步骤:
设置短信中心号码(SMSC)
短信中心号码(Service Center Address)是运营商提供的短信中转服务器地址,需通过AT+CSCA指令设置。
- 指令格式:
AT+CSCA="+86xxxxxxxxxxx"(示例:AT+CSCA="+8613800100500") - 返回:
OK表示设置成功。
选择短信模式
通过AT+CMGF指令选择短信模式,1表示文本模式,0表示PDU模式。

- 指令格式:
AT+CMGF=1 - 返回:
OK
编写短信内容
使用AT+CMGS指令编写短信,后跟目标号码和内容,以Ctrl+Z(ASCII码26)结束并发送。
- 指令格式:
AT+CMGS="13800138000" Hello, this is a test message. - 操作步骤:
- 输入指令后按回车,模块返回
>提示符。 - 输入短信内容,再按
Ctrl+Z(或^Z)。 - 模块返回
+CMGS: x(x为短信编号)和OK,表示发送成功。
- 输入指令后按回车,模块返回
查询发送状态
若需确认短信是否成功送达,可通过AT+CMGS?或AT+CMGS=<index>(查询指定编号的短信状态)。
PDU模式的高级应用
PDU模式支持更复杂的短信功能(如中文短信、长短信),但指令较复杂,以下为PDU模式发送示例:
- 设置PDU模式:
AT+CMGF=0 - 计算PDU编码:需将目标号码、短信内容转换为PDU格式(需借助工具或算法)。
- 发送指令:
AT+CMGS=<length><CR><PDU><Ctrl+Z>- 示例:
AT+CMGS=27(PDU长度为27字节) - 输入PDU编码后按
Ctrl+Z发送。
- 示例:
常见问题与处理方法
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| 模块无响应 | 串口波特率不匹配 | 检查波特率设置(如9600/115200) |
+CMS ERROR: 302 |
目标号码格式错误 | 确认号码为国际格式(如+86开头) |
| 短信发送失败 | 信号弱或未注册网络 | 检查AT+CSQ信号强度,等待网络注册 |
| 中文短信乱码 | 未设置字符集 | 使用AT+CSCS="GSM"或"UCS2" |
相关问答FAQs
Q1: 如何区分短信发送成功与失败?
A1: 模块返回+CMGS: x和OK表示发送成功;若返回+CMS ERROR: xxx(如302表示号码无效),则需检查指令格式或网络状态,部分模块还会通过+CME ERROR返回硬件层错误(如SIM卡未插入)。

Q2: 如何发送长短信(超过160字符)?
A2: 长短信需通过分段发送实现,在文本模式下,部分模块自动分段(如AT+CMGW保存短信后分段发送);PDU模式下需手动将内容分割为多段,并设置UDH(用户数据头)标识关联性,使用AT+CMMS指令(需模块支持)或第三方库处理分段逻辑。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/71306.html