工作室致力于模块产品的研究和开发,亦可为电子大赛定制模块,欢迎交流、合作!

GSM MODEM/GSM终端编程开发PDU码/短信格式短信规则解析

上一篇 / 下一篇  2007-10-22 16:07:12 / 天气: 舒适 / 心情: 平静 / 个人分类:综合技术

摘要:介绍计算机上实现gsm modem短消息收发的模式,描述gsm modem PDU 模式,包括PDU 模式下的gsm modem模块UCS2 编码、解码原理,以及gsm modem发送与接收PDU 串的编制方式, VB 中的MSCOMM 控件,实现gsm modem短消息收发的核心内容。
关键字:GSM编程,手机短信编程,短消息收发、PDU模式、PDU编码,pdu解码,UCS2编解码、UCS2编码、UCS2解码,UNICODE码、UNICODE编码,UNICODE解码,AT指令、MSCOMM 控件 GSM模块 短信模块,gsm modem,单片机,PLC,MC51,MC51单片机,805189c52,at89c52,430,51单片机,CDMA,GPRS,gsm modem,短信终端,WAVECOM,WAVCOM模块,西门子,siemens,TC35,TC35I,MC35,MC35I,TC35T,MC35T,TC35IT,MC35IT,模块,GSM短信,编程,SMS编程,SMS,GSM调制解调器,短信控件,短信编程,短信模块编程,源码,下载,GSM短信编程,短信猫,gsm猫,gsm无线猫,短信猫编程,GSM编程,短消息,模块,终端,设备,短信,短信模块,GSM短信模块,短信群发。如何,怎样,进行,实现,彩信,彩信收发,实现彩信收发,gsm,如何进行彩信编程,怎样进行彩信编程,彩信编程,GSM彩信编程,如何彩信编程,彩信如何编程,彩信怎样编程,手机短信编程,编程示例,示例代码,示例,gsm,程序,软件,代码,源代码,VC,VC++,DELPHI,JAVA,PB,VB,控件,ocx控件,dll,dll动态连接库。Gsm,下载,代码下载,软件下载,程序下载,源代码下载。

 

一、短消息收发的实现模式

计算机串口上连接GSM MODEM,用它向手机发送短消息,要求对AT 指令集和串口编程比较熟悉。这种方法收发短消息又分三种模式:BLOCK 模式、TEXT 模式和PDU 模式。BLOCK 模式现在用的很少了; TEXT 模式则只能发送ASCII ,它不能发送中文的UNICODE——确切地讲,从技术上来说是可以用于发送中文短消息的,但是国内的手机基本上不支持;而PDU 模式开发起来则较为复杂,它需要编写专门的函数来将文本转换为PDU 格式,PDU 模式被所有手机支持,可以使用任何字符集,它也是手机默认的编码方式。笔者在开发中正是选用的PDU 模式。
二、PDU 模式

目前,发送短消息常用TextPDU(Protocol Data Unit,协议数据单元)模式。使用Text模式收发短信代码简单,实现起来十分容易,但最大的缺点是不能收发中文短信;而PDU模式不仅支持中文短信,也能发送英文短信。PDU模式收发短信可以使用3种编码:7-bit8-bitUCS2编码。7-bit编码用于发送普通的ASCII字符;8-bit编码通常用于发送数据消息,如图片或铃声等;UCS2编码用于发送Unicode字符。一般的PDU编码由ABCDEFGHIJKLM十三项组成。PDU编码规则如下:

A:短信息中心地址长度,2位十六进制数(1字节)

B:短信息中心号码类型,2位十六进制数。

C:短信息中心号码,B+C的长度将由A中的数据决定。

D:文件头字节,2位十六进制数。

E:信息类型,2位十六进制数。

F:被叫号码长度,2位十六进制数。

G:被叫号码类型,2位十六进制数,取值同B

H:被叫号码,长度由F中的数据决定。

I:协议标识,2位十六进制数。

J:数据编码方案,2位十六进制数。

K:有效期,2位十六进制数。

L:用户数据长度,2位十六进制数。

M:用户数据,其长度由L中的数据决定。J中设定采用UCS2编码,这里是中英文的Unicode字符。

由于笔者在系统中要实现中文短消息的发送,所以选择用UCS2编码,即中文Unicode 码。
(一)UCS2 编码原理

所谓UCS2 编码,是将单个的字符(1-2 个字节)ISO/IEC10646 的规定,转变为16 位的Unicode 宽字符。即将单个的字符转换为由四位的‘0’-‘9’‘A’-‘F’的数字和字母组成的字符串。待发送的消息以UCS2 码的形式进行发送。

(二)发送PDU 串的编制分析

通过UCS2 编码我们得到中文Unicode 码,接着就可以进行发送PDU 串的编制了。从表面上看,PDU 串是ASCII 码串,同样由‘0’-‘9’‘A’-‘F’这些数字和字母组成。它们是位字节的十六进制数,或者BCD 码十进制数。PDU 串除了包含所发送的消息本身外,还包含很多其它参数信息,如服务中心号码、目标号码和编码方式等。现用一个实例说明发送PDU 串的结构和编排方式。
例:08 91 683108100005F0 31 00 0D 91 683119109991F2 00 08 C2 06 60A8597DFF01
参照规范,具体分析:

分段含义解释说明
08 SMSC 
地址信息的长度共个八位字节(包括91)
91 SMSC 
地址格式(TON/NPI) 用国际格式号码(在前面加
‘+’)
68 31 08 10 00 05 F0 SMSC 
地址8613800100500,补‘F’凑成偶数个

31 
基本参数(TP-MTI/VFP) 要求发送回复
00 
消息基准值(TP-MR) 0
0D 
目标地址数字个数共13 个十进制数

91 
目标地址格式(TON/NPI)
A1
:国内格式

91
:国际格式
81
:未知,+86 可带可不带。
683119109991F2  
目标地址(TP-DA) 8613910199192,补‘F’凑成偶数个
00 
协议标识(TP-PID) 是普通GSM 类型,点到点方式
08
用户信息编码方式(TP-DCS)00:表示7-bit 编码, 08:表示UCS2 编码,04:表示8-bit 编码。
C2 
有效期(TP-VP) 5 分钟
06 
用户信息长度(TP-UDL) 实际长度个字节
60 A8 59 7D FF 01 
用户信息(TP-UD) “您好!

这里需要注意的几点:

.比较SMSC 地址分段:68 31 08 10 00 05 F0 与真实SMSC 地址8613800100500F(为了凑足14 位,在末尾补F),不难发现只需将前者奇偶位对调即可得到后者。同样,目标地址分段683119109991F与实际目标地址13910199192F 之间的关系也是如此。
.“SMSC 地址信息的长度分段的值为00,则意味着SMSC 地址字符串的长度为零,PDU 串的“SMSC 地址格式段和“SMSC 地址段将省去。且将使用SIM 卡设置的SMSC 地址。上例中的PDU 串变为:00 31 00 0D 91 683119109991F2 00 08 C2 06 60A8597DFF01
对于用户信息长度,可通过VB 中的Len 函数求得,

TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2008-12-05  
 123456
78910111213
14151617181920
21222324252627
28293031   

数据统计

  • 访问量: 9935
  • 日志数: 60
  • 建立时间: 2007-05-18
  • 更新时间: 2008-11-26

RSS订阅

Open Toolbar