AT指令发送短信
AT指令是调制解调器(Modem)与计算机通信时使用的标准命令集,广泛应用于短信发送、电话拨号等场景,通过AT指令,开发者可以控制设备完成短信的编写、发送和管理操作,本文将详细介绍AT指令发送短信的基本原理、常用指令、操作流程及注意事项。

AT指令基础与短信发送原理
AT指令以“AT”开头,后跟具体命令参数,每条指令以回车符(r)结束,短信发送主要涉及以下指令:
-
AT+CMGF:设置短信模式。
AT+CMGF=0:PDU模式(需手动编码短信内容)。AT+CMGF=1:文本模式(直接发送可读文本)。
-
AT+CMGS:发送短信指令。
- 示例:
AT+CMGS="13800138000"r(输入号码后等待提示符)。
- 示例:
-
AT+CMGD:删除短信。
- 示例:
AT+CMGD=1(删除索引为1的短信)。
- 示例:
短信发送的核心流程为:初始化Modem → 设置短信模式 → 编写内容 → 发送至目标号码 → 等待网络响应。
常用AT指令及操作步骤
以下是文本模式下发送短信的详细步骤:
-
初始化Modem

ATr OK若返回“OK”,表示Modem已就绪。
-
设置短信为文本模式
AT+CMGF=1r OK -
输入目标号码与内容
AT+CMGS="13800138000"r > Hello, this is a test message. ``` 后,按`Ctrl+Z`(或十六进制`1A`)发送。 -
等待网络反馈
+CMGS: 20 OK“+CMGS: 20”表示短信已发送,20为短信长度。
PDU模式与文本模式对比
| 模式 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| 文本模式 | 指令简单,无需编码 | 不支持中文等非ASCII字符 | 纯英文短信、调试场景 |
| PDU模式 | 支持多语言,功能全面 | 需手动编码,指令复杂 | 国际短信、中文短信发送 |
PDU模式示例(发送“Hello”至“13800138000”):
AT+CMGS=23r
> 0011000A913180013800000F80008A1B2C3D4E5F6
+CMGS: 23
OK
常见问题与解决方法
-
发送失败,返回“ERROR”

- 检查SIM卡是否插好、信号是否稳定。
- 确认短信中心号码(AT+CSCS)是否正确。
-
中文乱码
切换至PDU模式,或使用UTF-8编码(AT+CSCS=”GSM”)。
相关问答FAQs
Q1:如何批量发送短信?
A1:可通过循环调用AT+CMGS指令实现,但需注意设备发送频率限制(如每秒1条),避免被运营商拦截,示例代码(Python):
import serial
def send_sms(phone, message):
ser = serial.Serial('/dev/ttyUSB0', 9600)
ser.write(b'AT+CMGF=1r')
ser.write(f'AT+CMGS="{phone}"r'.encode())
ser.write(f'{message}x1a'.encode())
ser.close()
Q2:如何查询已发送短信?
A2:使用AT+CMGL指令列出短信,参数可选“4”(已发送)、“0”(未读)等,示例:
AT+CMGL="4"r
+CMGL: 1,"REC READ","+8613800138000",,"23/05/01,12:00:00+32"
Test message
OK
通过合理运用AT指令,可高效实现短信发送功能,适用于物联网设备、报警系统等场景,实际操作中需结合硬件手册调整参数,确保兼容性与稳定性。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/71330.html