毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 论文 >> 正文

PC机串口控制GSM模块收发短信系统设计(流程图+源程序) 第6页

更新时间:2010-5-7:  来源:毕业论文
PC机串口控制GSM模块收发短信系统设计(流程图+源程序) 第6页
 目前,发送短消息常用Text和PDU(Protocol Data Unit,协议数据单元)模式。使用Text模式收发短信代码简单,实现起来十分容易,但最大的缺点是不能收发中文短信;而PDU模式不仅支持中文短信,也能发送英文短信。PDU模式收发短信可以使用3种编码:7-bit、8-bit和UCS2编码。7-bit编码用于发送普通的ASCII字符,8-bit编码通常用于发送数据消息,UCS2编码用于发送Unicode字符。
发送和接收SMS信息有:Blocd Mod, Text Mod, 和 PDU Mod三种方式,本设计是在PDU Mode下发送和接收短信息的,所以首先要解决短信息的PDU编码和解码问题。
PDU串表面上是一串ASCII码,由0~9、A~F这些数字和字母组成。它们是8位字节的十优进制数,或者BCD码十进制数。PDU串不仅包含可显示的消息本身,还包含很多其他信息,如SMS服务中心号码、目标号码、回复号码、编码方式和服务时间等。发送和接收的PDU串,结构是不完全相同的。一般的PDU编码由A B C D E F G H I J K L M十三项组成,具体如下:
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字符。
下面用两个实例说明PDU串的结构和编排方式:
1)、发送:SMSC号码是+8613800250500,对方号码是13851872468,消息内容是“Hello!”。从手机发出的PDU串可以是:08 91 68 31 08 20 05 05 F0 11 00 0D 91 68 31 58 27 64 F8 00 00 00 06 C8 32 9B FD 0E 01
对照规范,以上数据信息的含义见表2:
表2 发送PDU串结构
分段 含义 说明
08 SMSC地址信息的长度 共8个8位字节(包括91)
91 SMSC地址格式(TON/NPI) 用国际格式号码(在前面加“+”)
68 31 08 20 05 05 F0 SMSC地址 8613800250500,补F凑成偶数个
11 基本参数(TP-MTI/VFP) 发送,TP-VP用相对格式
分段 含义 说明
00 消息基准值(TP-MR) 0
0D 目标地址数字个数 共13个十进制数(不包括91和F)
91 目标地址格式(TON/MPI) 用国际格式号码(在前面加“+”)
68 31 58 81 27 64 F8 目标地址(TP-DA) 8613851872468,补F凑成偶数个
00 协议标识(TP-PID) 是普通GSM类型,点到点方式
00 用户信息编码方式(TP-DCS) 7-bit编码
00 有效期(TP-VP) 5分钟
06 用户信息长度(TP-UDL) 实际长度6个字节
C8 32 9B FD 0E 01 用户信息(TP-UD) “Hello!”
2) 接收:SMSC号码是:+8613800250500,对方号码是13851872468,消息内容是“你好!”。手机接收到的PDU串可以是:
08 91 68 31 08 20 05 05 F0 84 0D 91 68 31 58 81 27 64 F8 00 08 30 30 21 80 63 54 80 06 4F 60 59 7D 00 21
对照规范,PDU串数据信息说明如表3:
表3 接收PDU串结构
分段 含义 说明
08 地址信息的长度 共8个8位字节(包括91)
91 SMSC地址格式(TON/NPI) 用国际格式号码(在前面加“+”)
68 31 08 20 05 05 F0 SMSC地址 8613800250500,补F凑成偶数个
84 基本参数(TP-MTI/MMS/RP) 接收,无更多消息,有回复地址
0D 源地址数字个数 共13个十进制数(不包括91和F)
91 源地址格式(TON/MPI) 用国际格式号码(在前面加“+”)
68 31 58 81 27 64 F8 源地址(TP-OA) 8613851872468,补F凑成偶数个
00 协议标识(TP-PID) 是普通GSM类型,点到点方式
08 用户信息编码方式(TP-DCS) UCS2编码
30 30 21 80 63 54 80 时间戳(TP-SCTS) 2003-3-12 08:36:45 +8时区
06 用户信息长度(TP-UDL) 实际长度6个字节
4F 60 59 7D 00 21 用户信息(TP-UD) “你好!”
2. 4. 2  PDU编解码实现函数
由于在GSM标准中,中文编码采用的是Unicode编码,而不是目前国内常用的GB-2312编码,故还需要进行中文编码的转换,才能显示汉字字型。
1 ) 中文转换成Unicode码函数
因为手机短消息的发送是以PDU串的形式发送出去的,中文字符以Unicode码来表示,所以在发送中文短消息之前必须首先将中文字符转换为Unicode码,下面的函数将实现这个功能。这个函数主要应用到VB自带的一个格式转换函数:AscW()取ASCII码值。
Public Function AscII2Unicode(ByVal CS As String)
Dim Length As Integer
Dim temp As String
Dim i As Integer
Dim tempO As String
Dim tempN As String
tempN = ""
tempO = CS
Length = Len(tempO)
For i = 1 To Length
If AscW(Mid(CS, i, 1)) >= 0 And AscW(Mid(CS, i, 1)) < 128 Then
   temp = "00" & Hex(AscW(Mid(CS, i, 1)))
Else
   temp = Hex(AscW(Mid(CS, i, 1)))
End If
tempN = tempN & temp
   Next i
   AscII2Unicode = Trim(tempN)
End Function
2) 短信中心手机号码的PDU串转换函数
同上,为了发送以PDU模式发送短消息,必须将手机号码和对方手机号也转换为PDU格式,下面的函数就是为了实现这种转换:
Public Function telc(num As String) As String
Dim tl As Integer
Dim ltem, rtem, ttem As String
Dim ti As Integer
ttem = ""
tl = Len(num)
If tl <> 11 And tl <> 13 Then
    MsgBox "wrong number." & tl
    Exit Function
End If
If tl = 11 Then
    tl = tl + 2
    num = "86" & num
End If
For ti = 1 To tl Step 2
  ltem = Mid(num, ti, 1)
  rtem = Mid(num, ti + 1, 1)
  If ti = tl Then rtem = "F"
  ttem = ttem & rtem & ltem
Next ti
telc = ttem
End Function
手机号码有两种表示方法:11位和13位(带国家码86),一般手机发送时都是以13位形式表示的,所以以上的函数还有一个功能是自动将11位格式手机号码转换为13位形式,然后再转换为PDU串。

上一页  [1] [2] [3] [4] [5] [6] [7] 下一页

PC机串口控制GSM模块收发短信系统设计(流程图+源程序) 第6页下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优文论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。