⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cmpp120.bas

📁 VB写的cmpp协议测试程序
💻 BAS
📖 第 1 页 / 共 2 页
字号:
     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 + -