在移动通信和物联网领域,AT指令是与调制解调器进行交互的重要工具,通过特定的指令集可以实现对短信的读取、发送和管理等功能,使用AT指令读取短信是嵌入式设备、工业终端等场景下的基础需求,本文将详细介绍其操作流程、指令参数及注意事项。

AT指令读取短信的基本流程
读取短信通常涉及指令模式切换、短信列表查询、短信内容提取等步骤,以GSM模块为例,需确保模块已正确初始化,包括插入SIM卡、注册网络,并关闭回显(ATE0)以避免干扰指令执行。
进入短信读取模式
GSM模块支持两种短信存储位置:SIM卡(SM)和模块内存(ME),通过AT+CPMS指令可设置当前操作的存储区域,例如AT+CPMS="SM","SM","SM"表示选择SIM卡作为存储介质。
列出短信索引
使用AT+CMGL指令可列出指定状态的短信,短信状态包括未读(”REC UNREAD”)、已读(”REC READ”)、发送(”STO SENT”)等。AT+CMGL="REC UNREAD"将返回所有未读短信的索引、发送方号码、时间及长度信息。

读取短信内容
获取短信索引后,通过AT+CMGR指令读取具体内容。AT+CMGR=1将读取索引为1的短信,返回结果包含短信的完整文本(PDU模式或文本模式),若使用文本模式(AT+CMGF=1),可直接读取可读文本;PDU模式则需解码二进制数据。
指令参数与返回值解析
以下是常用AT指令的参数说明及返回示例:
| 指令 | 功能 | 参数示例 | 返回值示例 |
|---|---|---|---|
AT+CMGF |
设置短信模式 | AT+CMGF=1(文本模式) |
OK |
AT+CPMS |
选择存储位置 | AT+CPMS="SM" |
+CPMS: 2,10,2,10(表示SIM卡可存2条短信) |
AT+CMGL |
列出短信 | AT+CMGL="REC UNREAD" |
+CMGL: 1,"REC UNREAD","13800138000",,"23/05/01,12:30:00+32",15 |
AT+CMGR |
读取短信 | AT+CMGR=1 |
+CMGR: "REC READ","13900139000",,"23/05/01,12:30:00+32",12,Hello World |
注意事项
- 指令格式规范:AT指令需以回车符(
r)部分模块需等待OK或ERROR响应后执行下一步指令。 - PDU模式解码:若使用PDU模式,需了解短信的PDU编码规则,可通过在线工具或代码库解码。
- 并发处理:部分模块支持多指令并行,但需避免冲突,建议逐条执行并检查响应。
- 存储空间管理:及时删除已处理的短信(
AT+CMGD=1),避免存储空间不足导致新短信无法接收。
相关问答FAQs
Q1: 如何区分短信的文本模式和PDU模式?
A1: 文本模式(AT+CMGF=1)直接返回可读文本,适合简单场景;PDU模式(AT+CMGF=0)返回二进制编码,需解码后才能获取内容,支持长短信和特殊字符,但处理较复杂。

Q2: 读取短信时遇到ERROR响应,可能的原因是什么?
A2: 常见原因包括:短信索引不存在、存储位置未设置正确、模块未初始化完成、SIM卡未正确读取或指令格式错误(如缺少参数或回车符),需逐步排查指令逻辑及硬件连接。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/71006.html