AT指令集 —— EC20 短信的收发与管理(短信服务命令)

短信服务命令

AT+CSMS 选择消息服务(在CDMA网络中无效)

该命令选择消息传递服务<service>并返回ME支持的消息类型。

  • AT+CSMS=?
    列出支持的服务

  • AT+CSMS?
    列出当前的服务类型
    Response:
    +CSMS: <service>,<mt>,<mo>,<bm>

  • AT+CSMS=<service>
    设置服务类型
    Response:
    +CSMS: <mt>,<mo>,<bm>

下面来看下这些选项都有哪些值,分别对应什么功能:
<service>(服务类型)
0 —— 3GPP TS 23.040和3GPP TS 23.041(SMS AT命令的语法与3GPP TS 27.005阶段2版本4.7.0兼容;可以支持不需要新命令语法的阶段2+功能,例如,正确路由具有新阶段的消息 2种以上的数据编码方案)。

1 —— 3GPP TS 23.040和3GPP TS 23.041(SMS AT命令的语法与3GPP TS 27.005 Phase 2+版本兼容;在相应的命令描述中提到了设置1的要求)。

<mt>(移动终止消息)
0 —— 不支持类型
1 —— 支持的类型

<mo>(移动发起的消息)
0 —— 不支持类型
1 —— 支持的类型

<bm>
0 —— 不支持类型
1 —— 支持的类型

在这里插入图片描述
我所使用的是电信卡,电信使用的就是CDMA网络.

AT+CMGF 讯息格式

该命令指定短消息的输入和输出格式。
<mode>指示与“测试”,“读取”,“写入”和“执行”命令一起使用的消息格式,以及由收到的消息导致的未经请求的结果代码。
消息的格式可以是PDU模式(使用整个TP数据单元)或文本模式(消息的标题和正文作为单独的参数给出)。 文本模式使用AT +
CSCS命令指定的参数的值来通知TA-TE界面的消息正文中使用的字符集。

  • AT+CMGF=?
    查看支持的短信格式

  • AT+CMGF?
    查看当前配置的格式

  • AT+CMGF[=<mode>]
    设置格式

<mode>
0 —— 中文短信(PDU)
1 —— 英文短信 (Text)

AT+CSCA 服务中心地址(在CDMA网络中无效)

当发送移动始发的SMS时,写入命令将更新SMSC地址。 在文本模式下,该设置由“写入命令”使用。
在PDU模式下,同一命令将使用设置,但是仅当SMSC地址的长度编码为等于零的<pdu>参数时才使用。

电信卡:
在这里插入图片描述

其他:
在这里插入图片描述

AT+CPMS 首选消息存储

该命令选择要用于读取,写入等的内存存储<mem1>,<mem2>和<mem3>。

  • AT+CPMS=?
    列出支持的<mem1>,<mem2>和<mem3>。
  • AT+CPMS?
    Response
    +CPMS: <mem1>,<used1>,<total1>,<mem2>,<used2>,<total2>,<m em3>,<used3>,<total3>
  • AT+COMS=<mem1>[,<mem2>[,<mem3>]]

<mem>
SM” —— (U)SIM message storage
ME” —— Mobile equipment message storage
MT” —— Same as “ME” storage
在这里插入图片描述

AT+CMGL 列出短信

读取命令将状态值<stat>的消息从首选消息存储<mem1>返回到TE。 如果消息的状态为“ REC
UNREAD”,则存储中的状态将更改为“ REC READ”。 当执行不带状态值<stat>的AT + CMGL命令时,它将报告状态为“
REC UNREAD”的SMS列表。

  • AT+CMGL=?
    列出支持的<stat>
  • AT+CMGL[=<stat>]
    Response:
    In Non-CDMA mode:
    Text模式:
    For SMS-SUBMITs and/or SMS-DELIVERs:
    +CMGL: <index>,<stat>,<oa/da>,[<alpha>],[<scts>][,<tooa/toda>,< length>]<CR><LF><data>[<CR><LF>
    +CMGL: <index>,<stat>,<da/oa>,[<alpha>],[<scts>][,<tooa/toda>,<length>]<CR><data>[…]]
    在这里插入图片描述
    在这里插入图片描述

<stat>

在文本模式下:
“ REC UNREAD” —— 收到的未读消息
“ REC READ” —— 接收到的已读信息
“ STO UNSENT” —— 存储的未发送消息
“ STO已发送” —— 存储的已发送消息
“ALL”所有消息
在PDU模式下:
0 —— 收到未读消息
1 —— 收到已读消息
2 —— 已存储的未发送消息
3 ——已存储的已发送消息
4 —— 所有消息

在这里插入图片描述
下面的gggggg就是短信内容了。(因为使用的是自己编写的串口通信程序,读buf设置过小导致接收的内容打印有问题,不过第一行是正确的,湖后面的图均已修复!!)
其他选项内容请参考EC20 datasheet,我上一篇关于AT指令的博客最后有下载方法

AT+CMGD Delete Message

该命令从首选消息存储位置删除短消息。
如果出现了且未将其设置为0,则ME将忽略并遵循规则。

  • AT+CMGD=?

  • AT+CMGD=<index>
    前面使用AT+CMGL可以列出短信列表,从而可以获取很多关于短信的信息,其中一项是index(短信编号),这个命令指删除index位置的短信

  • AT+CMGD=<index>[,<delflag>]
    忽略index的值,根据的delflag的值来做处理

<delflag>
0 —— 删除<index>中指定的消息
1 —— 删除<mem1>存储中的所有已读消息
2 —— 删除<mem1>存储中的所有已读消息以及已发送的移动原始消息
3 —— 删除<mem1>存储中的所有已读消息以及所有已发送和未发送的移动始发消息
4 —— 删除<mem1>存储中的所有消息

在这里插入图片描述

AT+CMGR 读短信

读取命令从消息存储<mem1>向TE返回位置值为<index>的SMS消息。 如果消息的状态为“ REC UNREAD”,则存储中的状态将更改为
“ REC READ”。 查看当前短信

在这里插入图片描述
可以看到,此时SIM卡有两条未读的短信,接下来就读取短信
在这里插入图片描述
可以看到,这里将index为1的短信读取并删除了。

AT+CMGS 发送短信

Write命令将一条短消息从TE发送到网络(SMS-SUBMIT)。 调用写命令后,等待提示>,然后开始写消息。 之后,输入<CTRL +
Z>表示PDU的结尾并开始发送消息。 可以通过输入字符来取消发送。 单击“确定”确认堕胎,尽管不会发送该消息。
成功发送消息后,消息参考返回给TE。 该值可用于根据未经请求的传递状态报告结果代码来标识消息。

当设置好发送何种格式的短信后,如果设置的是Text格式,则

  • AT+CMGS="13344455666"
    在收到 “ > ” 标致后开始输入短信内容,Ctrl + Z (0x1a)发送短信。

如果是中文格式的短信,则

  • AT+CMGS=25
    25是处理完中文发送的短信内容后,除开中心号以外的字符数除以2,短信内存不同,该值也会不同。同样在接收到“ > ”后就可以输入短信了,Ctrl + Z 发送。

AT+CMMS发送更多消息(在CDMA网络中无效)

该命令控制SMS中继协议链接的连续性。 如果启用了此功能(并且当前使用的网络支持该功能),则在链接保持打开状态时,可以更快地发送多条消息。

  • AT+CMMS=<n>

<n>
0 —— 禁用功能
1 —— 保持启用状态,直到最新消息发送命令(AT + CMGS,AT + CMSS等)的响应与下一个发送命令之间的时间间隔超过1-5秒(确切的值取决于ME实现)为止, 然后,ME将关闭链接,并且TA开关自动回到0
2 —— 启用功能。 如果最后一条消息发送命令的响应与下一条发送命令的响应之间的时间超过1-5秒(确切的值取决于ME的实现),ME将关闭链接,但TA不会自动将切换回0。 。

AT+CMGW 写消息到内存

写入和执行命令将短消息从TE存储到内存存储器,然后返回已存储消息的存储器位置。 默认情况下,消息状态将设置为“存储的未发送”,但是参数也允许给出其他状态值。
输入文本的语法与AT + CMGS Write Command中指定的语法相同。

在这里插入图片描述

AT+CMSS 从存储发送消息

Write命令将消息存储中具有位置值的消息发送到网络。 如果为SMS-SUBMIT指定了新的收件人地址,则应使用它代替消息中存储的地址。

  • AT+CMSS=4

在这里插入图片描述
关于更多短信管理命令,请参考EC20 用户手册:
下载链接:https://pan.baidu.com/s/1M6itx4z-Sd8Xjg0WDXmbIQ
提取码:8gd6

在这里插入图片描述