GSM MODEN短信发送模块详解(短信的读取、发送过程和编码、解码过程)

GSM模块,顾名思义就是用来与手机进行点对点发送短信(文字、图片以及各种数据),需要将手机卡插入模块中,再用串口线与PC机相连(嵌入式方面,与单片机或者ARM相连)。

GSM短信编码。一种是文本模式(text模式),另一种是PDU模式;

(1)文本模式,发送的数据只能是ASCII码,即普通字母和其他符号,国内不支持中文发送。通过串口通信发送"AT+CMGF=1",将GSM短信发送方式更改为文本模式。文本模式下接收的数据会自动解码,比如你收到一条短信息,GSM会返回:+CMGR: "REC UNREAD","+8613806XXXXXX",,"11/10/21,13:22:13+32"
hello;不需要自己解码,便可得到短信的发送者、发送时间和短信内容

(2)PDU模式,短信编码方式包括三种,即7-bit 编码、8-bit 编码和UCS2 编码。

 

PDU接收串(接收到信息的字符串)的编制原理:

08//SMSC地址信息的长度共8 个八位字节(包括91)

91//国际号码格式即"+"

683108505905F0//服务号码,即8613800595500
04 //基本参数发送
0D //13个发送号码的信息长度
91//国际号码格式即"+"

683151558321F5 //发送者的号码,即8613155538125
00  //协议标识
08  //编码方式,08--USC2,00--7-bit

01704271612023  //接收时间戳,即2010-07-24/17:16:02
04 //10进制的位数转化为16进制数
64E64F60//消息内容编码

 

PDU发送串(发送信息的字符串)的编制原理:

00//服务号码信息长度为0

11//没有多余信息的发送,即不包括服务号码信息

00//消息基准值(TP-MR) 0

0D//13个发送号码的信息长度

91//国际号码格式即"+"

683151558321F5//发送者的号码,即8613155538125

00//协议标识是普通GSM 类型,点到点方式

08//编码方式,08--USC2,00--7-bit

00//有效期

06//信息长度

4F60597D0021//信息内容,USC2编码

    (a)、7-bit 编码用于发送和接收ASCII编码(普通的字母和其他符号),当你收到的短信都是ASCII时,这时你的编码方式就是7-bit编码。

7-bit编码方式:就是将上面表中的源串转为目标十六进制。  

源串	H	e	l	l	o	!
源十六进制	0x48	0x65	0x6c	0x6c	0x6f	0x21
源二进制	1001000	1100101	1101100	1101100	1101111	100001
编码过程	不足位时,由下一位的末尾数字补足
目标二进制	11001000	00110010	10011011	11111101	00001110	01
目标十六进制0xc8	0x32	0x9B	0xFD	0x0E	0x01
目标串	C8       32       9B       FD        0E       01

7-bit解码方式:就是将上面表中的目标十六进制转为源串。

    (b)、8-bit编码用于发送和接收数据消息,如图片或铃声等,普通的短信不回用到;

    (c)、UCS2编码用于发送和接收Unicode字符,即含有中文的信息;

            接收

UCS2编码方式

1、将字符串转为unicode编码

2、将unicode编码转为UCS2编码。首先我们知道UCS2编码是将单个字符转化为16位的宽字符,即由这个字符的unicode转化为十六进制,高二位补0(注意:字符串的长度为2位的16进制数,PDU模式中字符串长度为原始消息的2倍,我要发的消息UCS2编码的头两位位字符串的长度)。

 

上面的内容为GSM模块接收信息的发送信息的处理,我们要怎么接收和发送信息呢?

我们需要用AT指令来操作。关于AT指令的介绍,这里不多加描述。

 

查看GSM是否连接正常:

             AT

            返回OK

 

设置短息存储以及提醒:

             "AT+CNMI=2,1,0,0,1\r\n";

             //2: 通知TE。在数据线被占用的情况下,先缓冲起来,待数据线空闲,再行通知。

             //1:储存到默认的内存位置,并且向TE发出通知(包括class3)

 

设置回显:

              ATE0 //不可回显

              ATE1 //可回显

 

选择发送消息的格式:

              AT+CMGF=0//PDU

              AT+CMGF=1//TEXT

 

发送信息:

PDU模式:

               AT+CMGS=21 ,(pdu约定固定长度15+发送的报文的长度(16进制数))
              >0011000D91683169512363F1000800064F60597D0021//末尾加0x1a

TEXT模式:

              AT+CMGS="号码"

              >内容//末尾加0x1a

 

查看短信

             AT+CMGR=index //短信存储的索引号

删除短信

             AT+CMGD=index

 

GSM模块的知识就讲到这里,欢迎评价指出不足的地方

转载请注明本文章地址:

http://blog.csdn.net/hsl17/article/details/6895100

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

厦门Linux嵌入式+Qt开发

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值