在移动通信和物联网应用中,AT指令集作为一种标准的控制语言,被广泛用于与调制解调器或通信模块进行交互,通过发送特定的AT指令,用户可以实现对短信的读取、发送、删除等多种操作,AT指令删除短信是日常管理和维护中较为常见的需求,无论是清理冗余信息还是保护隐私安全,掌握正确的删除方法都至关重要,本文将详细介绍AT指令删除短信的原理、常用指令、操作步骤及注意事项,帮助用户高效完成短信管理任务。

AT指令删除短信的基本原理
AT指令删除短信的核心在于通过串口向通信模块发送预设的指令代码,模块接收到指令后解析并执行相应的删除操作,短信在模块中通常存储于特定的内存区域(如SIM卡或模块内部存储器),每个短信都有一个唯一的索引号(Index)或位置标识,删除操作的本质就是根据这些标识定位短信,并从存储区域中移除相关数据,不同的通信模块(如华为、移远、SIMCom等)可能存在细微的指令差异,但基本逻辑和流程高度相似。
常用的AT删除短信指令
-
AT+CMGD:删除单条短信
这是最常用的删除短信指令,基本格式为AT+CMGD=<index>[,<delmode>]。<index>:短信的索引号,可通过AT+CMGL指令列出所有短信获取。<delmode>:删除模式,可选参数。0:仅删除短信,保留短信状态(已读/未读),默认值。1:删除短信及其状态。2:将短信标记为“已删除”,需通过AT+CMGD=<index>,4彻底删除(部分模块支持)。
示例:删除索引号为5的短信,使用默认模式AT+CMGD=5。
-
AT+CMGD=
,:批量删除短信
部分模块支持通过指定起始索引和长度批量删除短信,格式为AT+CMGD=<start>,<length>。<start>:起始短信索引号。<length>:连续删除的短信数量。
示例:删除索引号10至14的5条短信AT+CMGD=10,5。
-
AT+CMGW与删除操作的关联
虽然AT+CMGW用于写入短信,但结合AT+CMGD可以完成短信的“写入-删除”测试流程,常用于模块功能验证。
删除短信的操作步骤
-
准备工作
- 确保通信模块已正确连接到串口(如USB转串口模块),并供电稳定。
- 使用串口调试工具(如串口助手、PuTTY)配置正确的波特率、数据位、停止位和校验位(通常为9600,8,N,1)。
- 检查模块是否响应AT指令,发送
AT后应返回OK,确认模块正常工作。
-
列出短信获取索引号
发送AT+CMGL="ALL"或AT+CMGL=4(列出所有短信),模块将返回当前存储的短信列表,包括发送者、内容、时间及索引号。+CMGL: 1,"REC UNREAD","+8613800138000","2023/10/01 12:00:00","Test SMS" Hello World!其中
1即为该短信的索引号。 -
执行删除操作
根据需求选择单条或批量删除指令:
- 删除单条:
AT+CMGD=<index>,如AT+CMGD=1。 - 批量删除:
AT+CMGD=<start>,<length>,如AT+CMGD=2,3(删除索引2、3、4的短信)。
发送指令后,若返回OK,表示删除成功;若返回ERROR,需检查指令格式或索引号是否正确。
- 删除单条:
-
验证删除结果
再次发送AT+CMGL="ALL",确认目标短信已从列表中消失,确保操作完成。
不同模块的指令差异及注意事项
| 模块品牌 | 指令兼容性说明 | 注意事项 |
|---|---|---|
| 华为(Huawei) | 完全支持标准AT+CMGD指令 | 部分旧版本模块不支持批量删除 |
| 移远(Quectel) | 支持AT+CMGD,且支持AT+CMGD=<index>,4彻底删除 |
删除前建议先保存重要短信 |
| SIMCom | 指令与标准一致,但索引号从0开始(部分型号) | 需通过AT+CMGF=1设置文本模式 |
- 注意事项:
- 删除操作不可逆,执行前务必确认短信索引号,避免误删重要信息。
- 部分模块在删除短信后可能需要重启才能释放存储空间,可通过
AT+CFUN=1,1实现重启。 - 若频繁删除短信,建议定期通过
AT+CMEE=2开启错误码显示,便于排查问题。
相关问答FAQs
Q1: 删除短信后,存储空间是否会立即释放?
A1: 不一定,部分模块(如移远)在删除短信后仅标记为“已删除”,需通过重启模块或执行特定指令(如AT+CMGD=<index>,4)彻底释放空间,建议删除后查询剩余短信数量,确认存储是否更新。
Q2: 如何批量删除所有短信?
A2: 可分两步操作:
- 先发送
AT+CMGL="ALL"获取所有短信的索引号,记录最大和最小索引。 - 使用批量删除指令
AT+CMGD=<min_index>,<length>,其中<length>为短信总数,若索引从1到10,则发送AT+CMGD=1,10,部分模块也支持AT+CMGD=1,1删除第一条后自动调整索引,需根据模块手册确认。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/71394.html