GSM模块使用文档(短信息部分)

1.概述

参考资料:

·         AT_v8.6.pdf          At Command Interface

·         SMS_PDU-mode.pdf   An Introduction to the SMS in PDU mode

AT命令:

GSM模块与计算机之间的通信协议是一些AT指令集,详见(AT_v8.6.pdf)。每个指令以AT+开头,以回车结尾。每个命令执行成功与否都有相应的返回。其他一些非预期的信息(如有人拨号进来、线路无信号等),模块将有对应的一些信息提示,接收端可做相应的处理。

控制符:

结束符(<CR>)十六进制的0x0D

发送符(<Ctrl/Z>)十六进制的0x 1A

2.常用命令(其他一些相关命令参见附带文档)

21开机

首先,要插入SIM卡(插卡时要断开电源),接好天线和电源,等信号指示灯开始闪动时表示模块已经开机,并且注册GSM网络成功。此时模块处于待机状态,当有用户拨号进来时,串口将有相应的提示信息。

要测试模块在此地的信号强度,可发送命令:AT+CSQ+<CR>(返回若含99则表示无信号)

22设置

1.  设置发送短信息的模式:AT+CMGF=0+<CR>

0代表PDU模式;1代表Text模式。

2.  设置短信息接收模式

·         直接串口接收:AT+CNMI=2,2,0,0,0+<CR>

有短信息来时,不经过SIM卡,直接写串口(如果此时端口没打开,则该短信息有可能丢失)。

·         通过SIM卡接收:AT+CNMI=2,1,0,0,0+<CR>

这是缺省设置,主动去读SIM卡中的短信息(建议使用该参数)。详细信息参见(AT_v8.6.pdf 96)

3.  保存当前模块的参数设置:AT&W+<CR>

详细参数设置参见AT_v8.6.pdf  107

23发送短信息CMGS

231Text 模式发送短信息

格式(只能发送160个英文字符)

at+cmgf=1<CR>        //发送模式设置,设为文本模式

OK

AT+CMGS=” 13988888888” <CR>Send Message by Text-Mode<Ctrl/Z>

//          目的手机号码|结束符|内容                  |发送符|

+CMGS: 199          //发送返回

 

OK

参考AT_v8.6.pdf 102

232PDU发送短信息格式(参考SMS_PDU-mode

at+cmgf=0<CR>        //发送模式设置,设为PDU模式

OK

AT+CMGS=<PDU包的字节数(ddd:三位十进制格式)>//不包含SMSC的长度

<CR>

00                     //SMSC长度,此处省略SMSC

11                     //FO

00                     //TP-MR

0D                     //号码长度

91                     //Type of Address

68                     //中国的国际区号

<手机号码编码>

00                     //PID

08       //编码模式:08Unicode编码,00Bit7编码,15Bit8编码

A7                    //有效期

<短信息内容编码后的字节数(ff:两位的十六进制)>

<短信息内容编码>       //UnicodeBit7Bit8

<Ctrl/Z>

 

TPDU的组成的几点说明

  1. DA目的地址
  2. ASCII编码
  3. 中文编码

DA 目的地址(参考SMS_PDU-mode 3.1

 

例子:0D91683106318834F9 ; 8613601388439

0D(13)           Address Length目的电话长度

91               Type of Address

683106318834F 9   8613601388439采用Semi-octet representation (参考SMS_PDU-mode 4.5

 

Bit7编码

用户数据如果为非中文,可采用7-bits characters 7位编码法

此时将dcs=00

(参考SMS_PDU-mode 4.6

 

中文编码

用户数据如果为中文,可采用UCS2编码法

此时将dcs=08

将中文直接转换成UniCode。采用WinAPI:MultiByteToWideChar来实现。

 

Bit8编码

发送任何二进制数据(0x000xFF),可采用Bit8编码法

此时dcs=15

每个字节按Hex格式发送,如0x86Hex格式为:“86”,实际发送“86

接收方须与发送方协调一致

 

发送举例

先发送AT+CMGS= YYY [CR] ;其中 YYY TPDU的十进制长度,不包括SMSC的长度

 

发英文用Bit7编码dcs=00,编码前用户数据最大长度为160字节

发中文用UCS2编码dcs=08,编码前用户数据最大长度为70

发送二进制数据用Bit8编码dcs=15,编码前用户数据最大长度为140字节

 

1.  Bit7编码发送英文信息

以下例子  发送到  13606809135

报文是     1234

            Bit7译码为

            0431D 98C 06

            04 长度

            数据 31D 98C 06    1234Bit7编码

 

具体AT命令

    AT+CMGF=0[CR]         设为PDU格式

 

    AT+CMGS=019[CR]

0011000D91683106869031F 50000A 70431D 98C 06[Ctrl/Z][CR]

 

2.  UCS2编码发送中文信息

 

 

以下例子  发送到  13603021052

 报文是     你好

            UCS2译码为

            044F 60597D

            04 长度

            数据 4f 60597d   汉字UniCode

具体AT命令

    AT+CMGF=0[CR]         设为PDU格式

 

    AT+CMGS=019[CR]

0011000D91683106031250F 20008A 7044F 60597D[Ctrl/Z][CR]

 

3Bit8编码发送二进制数据

 

 

以下例子  发送到  13857162075

 报文是    0x86 0x40

           Bit8译码为

           8640

           02 长度

           具体AT命令

    AT+CMGF=0[CR]         设为PDU格式

 

    AT+CMGS=017[CR]

    0011000D91683158172670F 50015A 7028640[Ctrl/Z][CR]

 

 

24接收短信息CMGR

如果是通过SIM卡接收短信息,则应该先得到新的短信息到的通知信息(即监视串口的+CMTI<新短信息的索引号>)。

如果是不通过SIM卡接收短信息,则要实时处理串口的+CMT<短消息包结构>

Text 模式接收短信息格式

AT+CMGR=1<CR>

Text模式分解返回包

PDU接收短信息格式

AT+CMGR=0<CR>

PDU模式分解返回包

25删除短信息CMGD

AT+CMGD=<短信息索引号><CR>

 

26列出SIM卡中短信息CMGL

利用该命令可以读出SIM卡中未读的短信息。

AT+CMGL=”ALL”<CR>       //文本模式下读未读短信息

AT+CMGL=0<CR>                 //PDU模式下读未读短信息

3.注意事项

使用好模块的关键的两个问题:

1.  处理好发送的命令与它的返回同步;

2.  及时处理好一些非预期的事件,将没有用的信息扔掉。

 

 

 

 
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值