嵌入式设备中使用短信服务
全球移动通信系统GSM是我国范围最广、通信能力最强的移动通信服务,其中的短消息功能以其方便、可靠和价廉得到了广泛应用。如果要在嵌入式设备中使用短信功能,要利用GSM模块实现短信的收发。
短信收发原理
短信服务业务SMS(Short Message Service)是GSM系统提供给用户的一种数字业务,它与语音传输及传真一样,同为GSM通讯网络提供的主要电信业务。系统结构图如下:
短消息模块的接入方式支持两种模式:基于AT指令的TEXT模式和基于AT指令的PDU模式。文本模式只支持7-bit编码,可发送纯英文和数字信息。PDU模式支持7bit、8bit和UCS-2编码,除了基本信息外,可以发送中文消息。一般都采用PDU模式。
以一串PDU短信数据为例子分析,
0891683108100005F011000D91685110906474F90008000A534E6E058FDC89C1FF01
数据可以分为三部分:
-----------------------------------------------------------------------------------------
“0891683108100005F0 ” 中心号码段
“11000D91685110906474F9000800” 收信方号码段
“08_80e16d696167513f” 信息段
-------------------------------------------------------------------------------------------
08_91_683108200505F0
040D91683119930093F60008800
15141652123044F60597D
0891683108200505F0
040D91683119930093F6000880015141652123044F60597D
发送一条短信,需要设置以下几个号码。
1. 中心服务号码,相对于短信服务器的地址。我们的短信是不能直接发送到另一个手机的,必须经过这个短信服务器的中转。中国移动的中心服务号码的编码规则:+861380+开户地区四位长途区号+500。长途区号不足4位的后面补0,如北京的为+861380_0100_500,深圳的为+861380_0755_500
中心服务号码:08__91__683108100005F0
91为国际化的含义,必须要有。
683108100005F0:将奇数位和偶数位翻转可得8613800100500F,PDU编码规定,手机号码为奇数时,需要末尾补F。86为中国区号。
在构成中心号码号码端时,中心服务号码前面加上86,后面加上F,然后奇偶位交换,最后加上91前缀就形成。前面加上08代表的中心号码长度的一半数值就大功告成了。
2. 收信方号码
1100_0D91_685110906474F9_000800
红色部分为收信方号码固定前后缀,0D91这几个字段,表示接收方设备为手机,81表示为小灵通,0D表示接收方手机号码长度,为13位(国家区号+手机号码)。后面的号码就是接收方手机号码,编码方式类似,还原的话,先奇偶交换,去掉前面的国家代码和F后缀,得到接收方电话号码为15010946479.
3. 发送内容
08_80e16d696167513f
发送内容是以unicode的方式编码的,第一个字节为信息字段长度的一半(五个汉字,二十个字节,长度的一半为10个字节,也就是0A),一个中文由4个字符构成。
使用AT命令发送上述短信字段:
1. AT---->OK
2. AT+CMGF=0 ----->OK //设置为PDU格式
3. AT+CMGS=25 //设置发送信息长度(为实际发送长度的一半,收信方号码+发送内容)
4.输入全部的短信编码字段,按下Ctrl+Z就可以控制GSM模块发送信息了。
标准的AT指令集通讯,常用的如下:
中文短信的实现,需要将GB2312的中文编码转换成代码页为CP936的Unicode编码。发送方的PDU字符串和接收方的PDU字符串不同。
MC35模块支持中文短信,支持GPRS功能。