用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讨论。 

目录
相关文章
|
8月前
1 数据传送指令【微机原理】
1 数据传送指令【微机原理】
95 0
|
9月前
|
Linux
Linux驱动操作地址(寄存器)的一些方式
Linux驱动操作地址(寄存器)的一些方式
111 0
|
11月前
|
存储 编译器 C语言
支持硬件输入输出的IN指令和OUT指令及测试输入和输出程序
支持硬件输入输出的IN指令和OUT指令及测试输入和输出程序
83 0
龙芯2K驱动开发——使用中断触发读取GPIO电平值上传给读取进程
龙芯2K驱动开发——使用中断触发读取GPIO电平值上传给读取进程
357 0
龙芯2K驱动开发——使用中断触发读取GPIO电平值上传给读取进程
|
监控 C语言 Perl
西门子S7-1200编程实例,置位/复位指令如何使用?
本节我们来学习置位/复位指令,并通过一个电机起保停控制的实例来学习置位/复位指令如何使用。
西门子S7-1200编程实例,置位/复位指令如何使用?
复习单片机:串口通信(内含:1.代码部分+2.串口内部结构+3.串口控制寄存器 SCON+4.电源控制寄存器 PCON+5. 串口的使用方法+6.硬件设计+7.实验现象)
复习单片机:串口通信(内含:1.代码部分+2.串口内部结构+3.串口控制寄存器 SCON+4.电源控制寄存器 PCON+5. 串口的使用方法+6.硬件设计+7.实验现象)
290 1
复习单片机:串口通信(内含:1.代码部分+2.串口内部结构+3.串口控制寄存器 SCON+4.电源控制寄存器 PCON+5. 串口的使用方法+6.硬件设计+7.实验现象)
SMT32:DMA代码部分(内含:1.接线图/实物图+2.代码部分+3.补充的DMA数据传输部分库函数)
SMT32:DMA代码部分(内含:1.接线图/实物图+2.代码部分+3.补充的DMA数据传输部分库函数)
114 0
SMT32:DMA代码部分(内含:1.接线图/实物图+2.代码部分+3.补充的DMA数据传输部分库函数)
|
C语言 芯片
复习单片机:中断系统(内含1.中断概念+2 中断结构及相关寄存器)(注:相关寄存器是重点)
复习单片机:中断系统(内含1.中断概念+2 中断结构及相关寄存器)(注:相关寄存器是重点)
206 0
复习单片机:中断系统(内含1.中断概念+2 中断结构及相关寄存器)(注:相关寄存器是重点)
单片机:定时器0和1中断(内含硬件内容详解+软件编程)(ps:此处硬件执行结构间的理解是重中之重)
单片机:定时器0和1中断(内含硬件内容详解+软件编程)(ps:此处硬件执行结构间的理解是重中之重)
304 0
单片机:定时器0和1中断(内含硬件内容详解+软件编程)(ps:此处硬件执行结构间的理解是重中之重)
|
存储
FPGA-SDRAM设计学习(三)初始化、模式寄存器、激活和读命令
FPGA-SDRAM设计学习(三)初始化、模式寄存器、激活和读命令
227 0
FPGA-SDRAM设计学习(三)初始化、模式寄存器、激活和读命令