因為手機短消息的發送是以PDU串的形式發送出去的,中文字符以Unicode碼來表示,所以在發送中文短消息之前必須首先將中文字符轉換為Unicode碼,下面的函數將實現這個功能。這個函數主要應用到VB自帶的一個格式轉換函數:ChrW()將中文轉換為Unicode碼。
Public Function chg(rmsg As String) As String
Dim tep As String
Dim temp As String
Dim i As Integer
Dim b As Integer
tep = rmsg
i = Len(tep)
b = i / 4
If i = b * 4 Then
b = b - 1
tep = Left(tep, b * 4)
Else
tep = Left(tep, b * 4)
End If
chg = ""
For i = 1 To b
temp = "&H" & Mid(tep, (i - 1) * 4 + 1, 4)
chg = chg & ChrW(CInt(Val(temp)))
Next i
End Function
同上,為了發送以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串。