📄 cmpp120.bas
字号:
SMSC_sequence(3) As Byte ' 4 Integer SMSC发送状态报告的消息序列号
End Type
'注:
'1. 对SP的同一Msg_Id的多个包,当网关全部正确接收、正确发往SMSC并且收到SMSC返回的全部状态报告后,给SP只返回一个状态报告,以示此短信已正确到达手机终端。
'2. 对SP的群发,采用逐条返回方式。
'3. 考虑到SMSC的存储转发时间,要求网关的状态报告回送与接收到短信请求并将其送到SMSC之间的时间间隔为48小时。
'10.CMPP_Deliver_REP 下发短信响应
Public Type MSG_Deliver_REP
Msg_id(7) As Byte ' 8 Integer 消息标识(参见第5条CMPP_Submit定义)
Result As Byte ' 1 Integer 结果0:正确1:消息结构错 2:命令字错 3:消息序号重复4:消息长度错5:资费代码错6:超过最大信息长7:业务代码错8: 流量控制错9~ :其他错误
End Type
'11.CMPP_Cancel 删除短信
Public Type MSG_Cancel
Msg_id(7) As Byte ' 8 Integer 消息标识(参见第5条CMPP_Submit定义)
End Type
'12.CMPP_Cancel_REP 删除短信响应
Public Type MSG_Cancel_REP
Success_Id As Byte ' 1 Integer 成功标识(0:成功; 1:失败)
End Type
'13.CMPP_Active_Test 激活测试
'没有消息体。
'14.CMPP_Active_Test_REP 激活测试响应
Public Type MSG_Active_Test_REP
Success_Id As Byte ' 1 Integer 成功标识(0:成功;其它:不成功)
End Type
'==========================================================
'--把数字字符串放入4个字节的无符号整数的存储区--
Public Sub StrTo4UnInt(ByRef UnInt4() As Byte, ByVal Str As String)
Dim sLow As Long
Dim sHigh As Long
Dim sWap As Long
DblToUnInt4 UnInt4, CDbl(Str)
End Sub
'--把4个字节存储区的无符号整数放入数字字符串--
Public Sub StrFrom4UnInt(UnInt4() As Byte, Str As String)
Dim Ii As Integer
Dim Zong As Double
DblFromUnInt4 UnInt4, Zong
Str = CStr(Zong)
' For Ii = 0 To 3
' Zong = Zong + UnInt4(Ii) * 16 ^ (6 - Ii * 2)
' Next Ii
' Str = CStr(Zong)
End Sub
'==========================================================
'--把DOUBLE放入4个字节的无符号整数的存储区--
Public Sub DblToUnInt4(ByRef UnInt4() As Byte, ByVal iDbl As Double)
Dim sLow As Long
Dim sHigh As Long
Dim sWap As Long
Dim a, b
sWap = 0
If iDbl = 4294967295# Then
sLow = 65535: sHigh = 65535
ElseIf iDbl > 2147483647# Then
sLow = CLng((iDbl - 2147483647#) Mod 65536)
If sLow <> 65535 Then
sWap = 1: sLow = sLow - 1
End If
sHigh = CLng(Int(2147483647# / 65536)) + CLng(Int((iDbl - 2147483647#) / 65536)) + sWap
Else
sLow = CLng(iDbl Mod 65536)
sHigh = CLng(Int(iDbl / 65536))
End If
a = Mid(Right("0000" + Hex(sLow), 4), 1, 2)
UnInt4(0) = Val("&H" + Mid(Right("0000" + Hex(sHigh), 4), 1, 2))
UnInt4(1) = Val("&H" + Mid(Right("0000" + Hex(sHigh), 4), 3, 2))
UnInt4(2) = Val("&H" + Mid(Right("0000" + Hex(sLow), 4), 1, 2))
UnInt4(3) = Val("&H" + Mid(Right("0000" + Hex(sLow), 4), 3, 2))
'CopyMemory UnInt4(0), sHigh, 2
'CopyMemory UnInt4(2), sLow, 2
End Sub
'--把4个字节存储区的无符号整数放入DOUBLE--
Public Sub DblFromUnInt4(UnInt4() As Byte, iDbl As Double)
Dim Ii As Integer
iDbl = 0#
For Ii = 0 To 3
'iDbl = iDbl + UnInt4(Ii) * 16 ^ (Ii * 2)
iDbl = iDbl + UnInt4(Ii) * 16 ^ (6 - Ii * 2)
Next Ii
End Sub
'--序号自加1大于&HFFFFFFFF是循环为1--
Public Sub ZjXuHao()
If XuHao >= 4294967295# Then
XuHao = 1#
Else
XuHao = XuHao + 1#
End If
End Sub
'----------------------------------------------------------
Public Function Jz10D(Str As String) As Double
Dim i As Integer
Dim Temp As String
Jz10D = 0
For i = 1 To Len(Str)
Temp = Mid(Str, Len(Str) - i + 1, 1)
If InStr("0123456789", Temp) Then
Jz10D = Jz10D + CInt(Temp) * 16 ^ (i - 1)
Else
Jz10D = Jz10D + (Asc(Temp) - Asc("A") + 10) * 16 ^ (i - 1)
End If
Next i
End Function
'----------------------------------------------------------
Public Function Jz10S(Str As String) As Single
Dim i As Integer
Dim Temp As String
Jz10S = 0
For i = 1 To Len(Str)
Temp = Mid(Str, Len(Str) - i + 1, 1)
If InStr("0123456789", Temp) Then
Jz10S = Jz10S + CInt(Temp) * 16 ^ (i - 1)
Else
Jz10S = Jz10S + (Asc(Temp) - Asc("A") + 10) * 16 ^ (i - 1)
End If
Next i
End Function
'----------------------------------------------------------
Function IntFmt(Num As Double, Length As Integer) As String
Dim Temp As String
Dim i As Integer
While Num >= 16
Temp = Jz16(Num Mod 16) + Temp
Num = (Num - (Num Mod 16)) / 16
DoEvents
Wend
Temp = Jz16(Num) + Temp
IntFmt = ""
For i = 1 To Length * 2
IntFmt = IntFmt + "0"
Next i
IntFmt = Right(IntFmt + Temp, Length * 2)
End Function
Function Jz16(Num As Double) As String
If Num < 10 Then
Jz16 = CStr(Num)
Else
Jz16 = Chr(Asc("A") - 10 + Num)
End If
End Function
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -