问题描述
我曾经有一个SIM800l模块,我不知道具体是如何设置的,但是每次我从第一个存储位置删除一条短信时,其他短信都会移到该位置的第一条短信,始终占据存储中的第一个位置。
有谁知道如何像这样设置我的新模块?
通过这样的设置,为了删除所有短信,我只是重复发送命令AT+CMGD=1
,这样我就不需要更改索引了。
解决方法
改变位置的短信听起来很奇怪,我不确定这是不是真的发生了。阅读我所有的回答,找出我认为可能的实际解释。
TL;DR:你很幸运,因为你可以通过一个命令释放你的 SMS 内存:AT+CMDA
。
根据AT command guide,它的语法非常简单:
AT+CMDA=<type>
其中 <type>
根据 +CMGF
设置具有不同的含义。
在文本模式(在AT+CMGF=1
之后):
-
"DEL READ"
- 删除所有已读消息 -
"DEL UNREAD"
- 删除所有未读消息 -
"DEL SENT"
- 删除所有已发送的短信 -
"DEL UNSENT"
- 删除所有未发送的短信 -
"DEL INBOX"
- 删除所有收到的短信 -
"DEL ALL"
- 删除所有短信
在PDU 模式(在AT+CMGF=0
之后,这实际上不是必需的,因为它是默认值):
-
1
- 删除所有已读消息 -
2
- 删除所有未读消息 -
3
- 删除所有已发送的短信 -
4
- 删除所有未发送的短信 -
5
- 删除所有收到的短信 -
6
- 删除所有短信
您需要是提供
AT+CMDA="DEL ALL"
如果您在文本模式下操作,或者
AT+CMDA=6
如果您在 PDU 模式下运行。
更好,您可以通过发出
来摆脱阅读消息AT+CMDA="DEL READ"
如果您在文本模式下操作,或者
AT+CMDA=1
如果您在 PDU 模式下运行。我怀疑后者是您实际用来提供的命令。