用CMSS指令提高串口群发短信的效率

简介: 54powerman一 指令介绍:1 +CMGW 将消息写入内存(Write Message to Memory)。描述:该指令将一条消息存储到内存中(SMS-SUBMIT 或 SMSDELIVERS),并返回保存在内存中的位置。

54powerman
一 指令介绍:
1 +CMGW 将消息写入内存(Write Message to Memory)。
描述:该指令将一条消息存储到内存中(SMS-SUBMIT 或 SMSDELIVERS),并返回保存在内存中的位置。输入的“消息文本”或 PDU 可以被发送消息的指令 +CMSS 使用。
语法格式:
文本模式: (<index> is returned in both cases)
AT+CMGW= <oa/da> [,<tooa/toda> [,<stat> ] ] <CR> enter text <ctrl-Z / ESC>
PDU模式:
AT+CMGW= <length> [,<stat>] <CR> give PDU <ctrl-Z / ESC>
返回消息格式:
+CMGW: <index>
或(如果发生错误)
+CMS ERROR: <err>

2 +CMSS 发送存储的消息(Send Message From Storage)
描述:该指令发送存储在<index>指定位置的消息。
语法格式:
AT+CMSS=<index>[,<da> [,<toda>] ]
返回消息格式:
+CMSS : <mr>
或(如果发生错误)
+CMS ERROR: <err>
如果通过<da>传递了一个新的收件人地址,将会取代已保存消息的收件人。

3 参数说明:
<oa/da> : 字符串,源/终消息地址。
<tooa/toda> : 源/终地址类型。129表示普通号码类型,145表示国际号码类型(自动在号码前加“+”)。
<stat>: PDU模式为整型(在+CMGW指令中缺省为2),文本模式为字符串(在+CMGW指令中缺省为"STO UNSENT"),标记消息在内存中的状态,如果 <stat> 被忽略, 被存储的消息被认为是要发送的消息。
<stat> 的取值:
--0: "REC UNREAD"
--1: "REC READ"
--2: "STO UNSENT"
--3: "STO SENT"
<length> : 实际数据的字节长度。

二 实现原理:
基于上面的指令,我们发现可以如下方式提高发送效率——通过+CMGW将要群发的消息保存到内存中,然后一次调用+CMSS将消息发送出去,而无须每次发送重复的PDU信息,减少了通信数据。

三 示例:(以下采用java注释风格进行注释)
AT               //测试连接状态
OK               //连接正常
AT+CMGF?  //查看当前工作模式
+CMGF: 1         //文本模式

OK               //消息返回结束
at+cmgf=0;       //设置工作模式为PDU模式
OK
AT+CMGF?  //查看当前工作模式
+CMGF: 0  //PDU模式

OK
AT+CPMS=?  //查看当前首选存储器
+CPMS: ("SM"),("SM"),("MT")

OK
AT+CPMS?  //查看当前存储器中的消息
+CPMS: "SM",0,70,"SM",0,70,"MT",0,70  //当前三个存储器中消息数均为0

OK
AT+CMGW=21  //向内存中写入一条消息
> 0891683108100005F011000D916831xxxxxxxxFx00000006C8329BFD0E01^Z
+CMGW: 1  //消息保存成功,其索引<index>为1,记住这个数字,后面要用。

OK
AT+CPMS?
+CPMS: "SM",1,70,"SM",1,70,"MT",1,70  //当前SM 0存储器中有一条消息

OK
at+cmss=1,"13xxxxxxxx1",145  //将消息转发给13xxxxxxxx1
+CMSS: 232    //发送成功,并保存在存储器中,索引是232

OK
at+cmss=1,"13xxxxxxxx2",129  //将消息转发给13xxxxxxxx2
+CMSS: 233

OK                                      //结束

如果有不清楚的地方,可以加入QQ群9040323讨论。 

目录
相关文章
|
前端开发
【前端设计】寄存器与主功能电路为异步时钟时的功能影响探索
【前端设计】寄存器与主功能电路为异步时钟时的功能影响探索
121 0
|
存储 监控 C语言
西门子S7-1200编程实例,关断延迟定时器指令如何使用?
在西门子S7-1200中有四种类型的定时器:TON接通延迟定时器、TONR保持型接通延迟定时器、TOF关断延迟定时器、TP脉冲定时器。
西门子S7-1200编程实例,关断延迟定时器指令如何使用?
|
6月前
|
监控
LabVIEW与串口通讯在运行一段时间后出现数据接收中断的问题
LabVIEW与串口通讯在运行一段时间后出现数据接收中断的问题
215 0
|
6月前
|
监控 数据处理
在使用LabVIEW控制多个串口设备进行数据读取时,读取时间过长
在使用LabVIEW控制多个串口设备进行数据读取时,读取时间过长
152 0
|
6月前
|
数据采集 传感器 数据处理
LabVIEW步开发进电机的串口控制程序
LabVIEW步开发进电机的串口控制程序
46 0
【单片机】延迟程序&延迟子程序的设计(入门)
【单片机】延迟程序&延迟子程序的设计(入门)
|
前端开发 芯片
【芯片前端】保持代码手感——同步FIFO
【芯片前端】保持代码手感——同步FIFO
|
Windows Python
MicroPython 玩转硬件系列3:上电自动执行程序
MicroPython 玩转硬件系列3:上电自动执行程序
【单片机期中测试】4.按键不同时长控制流水灯
【单片机期中测试】4.按键不同时长控制流水灯
69 0
【单片机期中测试】8.中断基础
【单片机期中测试】8.中断基础
69 0