短信相关

​ 发送短信的流程就是配置短信模式->配置字符集->下发发送命令->等待,提示符->发送正文/PDU ->发送ctrl+z –>等待结果

TEXT 格式

AT+CMGF=1 //设置短信为文本模式

PDU格式

​ PDU模式不仅能发送中文短信,也能发送英文短信。PDU收发短信有三种编码可用:7-bit、8-bit和UCS2编码。7-bit编码用于发送普通的ASCII字符,即英文短信,最多可发送160字符。8-bit编码通常用于发送数据消息。UCS2编码用于发送Unicode字符,可发送中文字符,最多发送70字符。

AT+CMGS=0//设置短信为PDU 0:PDU,1:文本模式

发送PUD(SUBMIT-PDU)

数据格式:

SCAPDU-TypeMRDAPIDDCSVPUDLUD
1-12112-12110,1,710-140
  • SCA 短消息服务中心号码

  • PDU-Type 协议数据单元类型(1字节)

    • 发送时

    • BIT76543210
      参数RPUDHISRRVPFVPFRDMTIMTI
    • MTI 2bit:消息类型,00表示收,01表示发

    • RD 1bit:重复信元丢弃。0通知服务中心碰到同源、同目的地、同样的MR(短消息序号)的短消息接受;

    • VPF 2bit:有效期限格式。00 VP不存在; 10 VP区存在用一个字节表示,是相对值;01保留; 11存在,半个字节表示,绝对值。

    • SRR 2bit:状态报告要求。

  • MR 所有成功的短信发送参考数目(0..255)

  • DA 接收方地址(手机号码 半字节倒序编码

  • PID 协议标识

  • DCS 编码方法和消息类别 (UCS2编码0等级为08H,7bit编码是00H)

  • VP 有效期

    • 0 到 143 $(V + 1) \times 5$ 分钟 5 分钟 到 12 小时
    • 144 到 167 $12$ 小时 $+ (V - 143) \times 30$ 分钟 12.5 小时 到 24 小时
    • 168 到 196 $(V - 166) \times 1$ 天 2 天 到 30 天
    • 197 到 255 $(V - 192) \times 1$ 周 5 周 到 63 周

例如:

//向15050850677发送一条短信,内容“Test”
//0011000D91685150800576F70000C404D4F29C0E
//向15050850677发送一条短信,内容“你好”
//0011000B815150800576F70008C4044F60597D
SCAPDU-TypeMRDAPIDDCSVPUDLUD
1-12112-12110,1,710-140
0011000D91685150800576F70000C404D4F29C0E
0011000B815150800576F70008C4044F60597D

关键字段

DA/OA:接收方与发送方地址

DA与OA编码方式是一样的 2-12个8位位组

例如:0D91685150800576F7

DA LENDA TYPE 短信服务中心号码的类型DA ADDR 存储目的地址号码
0D (一个字节,表示DA ADDR长度)91(国际型)685150800576F7 占用DA LEN/2字节

短信配置流程

//1.设置短信编码格式为PDU
AT+CMGF=0 
/**
 *	2. 设置短信上报方式  <mode>,<mt>,<bm>,<ds>,<bfr>
 <mode> 2  缓存通知      当串口忙(如处于数据模式)时,模块会暂时缓存通知,待回到指令模式后再发送
 <mt>   1  存储索引通知  收到短信后,模块将其存入 SIM 卡或 Flash,然后通过串口主动发送+CMTI: "ME", index
 		与 2(直接把短信内容吐到串口)相比, 1具有以下的优势,
   数据安全:短信先存盘,避免由于串口波特率太高或单片机/嵌入式系统处理不及时导致的数据丢失。
   解析简单:你的程序只需要监听 +CMTI 这个特征字符串,然后根据索引去读取,逻辑更加解耦。
   防止干扰:如果短信很长或者是 PDU 格式,直接吐出大量数据可能会干扰到正在进行的 AT 指令交互。
 		
 <bm>   0  不广播       不向TE终端主动发送小区广播消息
 <ds>   0  无状态报告    不主动发送短信状态报告(即确认对方是否收到的回执)
 <bfr>  0  清除缓存      模块在设置此指令时,如果缓冲区有待发的通知,直接清除。
 */ 
AT+CNMI=2,1,0,0,0

打电话

上网

//查询命令 响应+CREG: <n>,<stat>[,<lac>,<ci>[,<AcT>]]
AT+CREG?