本文链接:https://blog.csdn.net/sjz4860402/article/details/78552756
此次的短信AT指令和信令从以下几个方面介绍:
一 . 短信AT指令的格式
二 . 短信AT指令的使用(超级终端)
三 . 短信AT指令在log中的查看
四 . 短信modem相关信令
五 . 超级终端的使用(hyper_terminal)
六 . 其他短信AT指令
七 . CMC ERROR 错误码
一 . 短信AT指令的格式
短信的编码方式有两种:text模式,pdu模式。因此短信的AT指令执行格式也有两种,分别对应text模式和pdu模式。
1 . Text模式
纯文本模式,支持不同的字符集,从技术上说也可用于发送中文短消息,但国内手机基本上不支持,主要用于欧美地区。
2 . Pdu模式
这个是手机默认的编码方式,可以使用任何字符集,其包括三种编码方式:7bit编码,8bit编码,UCS2编码。
7bit编码:ASCⅡ码就是7bit编码。
8bit编码:ASCⅡ字符可以使用7位二进制表示,但是由于计算机的基本处理单位是字节(1byte=8bit),所以一般在高位补0,用一个字节表示一个ASCⅡ字符。这就是8bit编码。
UCS2编码:处理Unicode字符,使用2个字节来表示一个字符,可以表示世界上所有的字符。发送中文就是使用此编码方式。
二 . 短信AT指令的使用(超级终端)
1 . 查看目前的短信编码模式
AT+CMGF?
2 . 切换编码模式
AT+CMGF=0//PDU
AT+CMGF=1//TEXT
3 . 当模式为text时,发送格式如下
AT+CMGS=”18579853304”
dddddd…. (此处为发送内容)
0X1A (此处表示内容结尾,必须)
结果:
+CMGS: 211
OK
4 .当模式为pdu时,发送格式如下
AT+CMGS=19, “0001000b818125514688f4000006c8329bfd0601” 或者
AT+CMGS=20, “0001000b818175893503f4000008d3ba3a1d76ebcb”
19和20为:pdu约定固定长度15+发送的报文的长度(16进制数)
00 服务号码信息长度为0
01 没有多余信息的发送,即不包括服务号码信息
00 消息基准值(TP-MR) 0
0b 发送号码的信息长度
81 国际号码格式即”+”
8125514688f4 目的号码,即18521564884(算法:末尾加f后奇偶位调换)
00 协议标识是普通GSM 类型,点到点方式
00 编码方式,08–USC2,00–7-bit
00 有效期
06 信息长度
c8329bfd0601 信息内容/Hello
三 . 短信AT指令在log中的查看
1 . 正常发送短信
1 RILJ : [4194]> SEND_SMS [SUB0] //从RIL.java中发出SEND_SMS消息 ,给AT
2 AT : AT send on RIL_CMD_READER_3, tid:548282602560
3 AT : AT>AT+CMGS=19,"0001000b818175893503f4000006c8329bfd0e03" //AT 向modem发送,也即向服务器发送消息
4 AT : AT< +CMGS: 218 //modem返回的结果给AT,返回CMGS说明发送成功
5 AT : response received on RIL_CMD_READER_3, tid:548282602560
6RILJ : [4194]< SEND_SMS { mMessageRef = 218, mErrorCode = 0, mAckPdu = null} [SUB0] //把从modem返回的结果,AT向RIL.java报告发送情况
2 . 发送短信失败
1 RILJ : [4838]> SEND_SMS [SUB0]
2 AT : AT send on RIL_CMD_READER_3, tid:548305933376
3 AT : AT&g