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

📄 globalvar.bas

📁 提供给入门级别的GPRS编程人员
💻 BAS
📖 第 1 页 / 共 4 页
字号:
        Case "m45" '断开负荷
            frm_cut.Show 1
            Exit Sub
        Case "m46" '呼叫终端
            frm_call.Show 1
            Exit Sub
        Case "m51" '查询用户资料
            LoadAFormToSplit frm_qurryuserinfo
            Exit Sub
        Case "m52" '查询用户购电信息
            LoadAFormToSplit frm_qurrybuypower
            Exit Sub
        Case "m53" '查询用户报警信息
            LoadAFormToSplit frm_alarm
            Exit Sub
        Case "m61"
            DataReport1.Show 1
            Exit Sub
        Case "m62"
            DataReport2.Show 1
            Exit Sub
        Case "m63"
            DataReport3.Show 1
            Exit Sub
        Case "m7"
            frm_help.Show 1
            Exit Sub
        Case "t1" '主机上网
            If numgprs > 4 Then
                If MsgBox("主机已经试图上网" & numgprs & "次失败,你还要继续使主机上网吗?", vbYesNo + vbQuestion, "提示") <> vbYes Then
                   frm_main.ActiveBar21.Bands("statusbar").Tools("s1").Caption = "现在状态GSM    "
                   frm_main.ActiveBar21.RecalcLayout
                   frm_main.ActiveBar21.Bands("toobar").Tools("t2").Enabled = False
                   frm_main.ActiveBar21.Bands("toobar").Tools("t3").Enabled = False
                   Exit Sub
                End If
            End If
            senddata = StrConv(str, vbFromUnicode)
            comsenddata senddata
            numgprs = numgprs + 1 '//*********************************
            '//清空缓冲区
            ReDim bybuff(0) As Byte
            bybuff(0) = 0
            str = "ATJLWU"
            Exit Sub
         Case "t2" '与数据中心取得联系
            centerip = GetInIKeyValue("center", "centerip", App.Path & "\file\gprspcset.ini")
            centerport = GetInIKeyValue("center", "centerport", App.Path & "\file\gprspcset.ini")
            strregdata1 = "ATJAU" & centerip & "PORT:" & centerport
            regdata1 = StrConv(strregdata1, vbFromUnicode)
            tempregdata2 = dispose_senddtaip
            If UBound(tempregdata2) = 0 And tempregdata2(0) = 0 Then Exit Sub
            regdata2 = ip_pctocenter(tempregdata2)
            numregdata = UBound(regdata1) + UBound(regdata2) + 2
            ReDim regdata(numregdata - 1) As Byte
            For i = 0 To UBound(regdata1) Step 1
                regdata(i) = regdata1(i)
            Next i
            For i = UBound(regdata1) + 1 To numregdata - 1
                regdata(i) = regdata2(i - UBound(regdata1) - 1)
            Next i
            If numcenter > 3 Then
               MsgBox ("暂时无法于数据中心取得练习,系统将采用GSM方式发送数据!"), vbOKOnly + vbInformation, "提示"
               frm_main.ActiveBar21.Bands("statusbar").Tools("s1").Caption = "现在状态GSM    "
               frm_main.ActiveBar21.RecalcLayout
               frm_main.ActiveBar21.Bands("toobar").Tools("t3").Enabled = False
               Exit Sub
            End If
           comsenddata regdata '发送数据
            '//清空缓冲区
            ReDim bybuff(0) As Byte
            bybuff(0) = 0
            numcenter = numcenter + 1
            Exit Sub
        Case "t3"
            frm_ip.Show 1
            Exit Sub
        Case "miExit"
            Unload frm_main
            Exit Sub
     End Select
    End If
    
End Sub
Private Function dispose_senddtaip() As Byte()
   Dim str1 As String
   Dim str2 As String
   Dim str3 As String
   Dim str4 As String
   Dim strsql As String
   Dim senddata() As Byte
   Dim num As Integer
   Dim i As Integer
   Dim arr() As String
   strsql = "select gongdiansuo_pw,gongdiansuo_regcode from gongdiansuoreg"
   openrs strsql
   str1 = rs.Fields("gongdiansuo_pw").Value
   str2 = rs.Fields("gongdiansuo_regcode").Value
   clors
   str3 = pcip
'   If frm_main.ActiveBar21.Bands("statusbar").Tools("s1").Caption = "现在状态GSM    " Then
'        ReDim senddata(0) As Byte
'        senddata(0) = 0
'        dispose_senddtaip = senddata
'        Exit Function
'   End If
   If Trim(str3) = "" Then
        MsgBox ("你还没有取得主机IP,请您取得主机IP!"), vbOKOnly + vbInformation, "提示"
        ReDim senddata(0) As Byte
        senddata(0) = 0
        dispose_senddtaip = senddata
        Exit Function
   End If
   str4 = GetInIKeyValue("pcset", "pcport", App.Path & "\file\gprspcset.ini")
   ReDim senddata(15) As Byte '主机登记IP数据包16字节
   For i = 0 To 5 Step 1 '主机密码
        num = Mid(str1, 2 * (i - 0) + 1, 2)
        senddata(i) = num
   Next i
   
   For i = 6 To 9 Step 1 '主机注册码
        num = Mid(str2, 2 * (i - 6) + 1, 2)
        senddata(i) = num
   Next i
   
   arr = VBA.Split(str3, ".", -1, vbTextCompare)
   For i = 10 To 13 Step 1 '主机IP
        senddata(i) = arr(i - 10)
   Next i
   
   For i = 14 To 15 Step 1 '主机端口
        num = Mid(str4, 2 * (i - 14) + 1, 2)
        senddata(i) = num
   Next i
   dispose_senddtaip = senddata
End Function

'//消息处理函数
Public Function disp_message(ByRef indata() As Byte) As remsg
    Dim i As Integer
    Dim str As String
    Dim myremsg As remsg
    Dim str1 As String
    Dim str2 As String
    Dim str3 As String
    Dim str4 As String
    Dim str5 As String
    Dim str6 As String
    Dim str7 As String
    Dim str8 As String
    Dim str9 As String
    Dim str10 As String
    Dim str11 As String
    Dim str12 As String
    Dim str13 As String
    Dim str14 As String
    Dim str15 As String
    Dim str16 As String
    Dim str17 As String
    Dim str18 As String
    Dim str19 As String
    Dim str20 As String
    Dim str21 As String
    Dim str22 As String
    Dim num As Long
    Dim iquestion As Integer
    Dim strsql As String
    
    If indata(0) = 77 And indata(1) = 79 And indata(2) = 58 Then '//如果主机自己返回的数据***********
        '//ATJAU58.49.106.170PORT:3000WA:xxxxxxxx发送后返回的数据 (MO: Send Data Ok)
        If UBound(indata) = 17 Then
                str = StrConv(indata, vbUnicode)
                If Mid(str, 1, 16) = "MO: Send Data Ok" Then
                        ReDim myremsg.haltdata(0) As Byte '没有数据返回
                        myremsg.haltdata(0) = 0
                        myremsg.msginfo = str
                        MsgBox (myremsg.msginfo), vbOKOnly + vbInformation, "提示"
                        GoTo exitfunction
                End If
         End If
            
        '//ATJLWU发送后返回的1种数据
        '( MO: It's Online
        '  Local Ip:10.165.194.90.
        '  Local Name:LocalNm_
        '  Host Ip:0.0.0.0.
        '  OK)
        If UBound(indata) = 84 Or UBound(indata) = 85 Or UBound(indata) = 86 Then
                str = StrConv(indata, vbUnicode)
                pcip = Mid(str, 27, UBound(indata) - 71) '取得主机IP
                ReDim myremsg.haltdata(0) As Byte '没有数据返回
                myremsg.haltdata(0) = 0
                myremsg.msginfo = pcip 'str
                frm_main.ActiveBar21.Bands("statusbar").Tools("s1").Caption = "现在状态GPRS    主机IP为:" & pcip
                frm_main.ActiveBar21.RecalcLayout
                frm_main.ActiveBar21.Refresh
                MsgBox myremsg.msginfo
                GoTo exitfunction
        End If
    End If
    
    
    If indata(0) = 87 And indata(1) = 68 And indata(2) = 58 Then '//如果为数据中心或者终端返回的数据包
      If UBound(indata) > 36 Then '//包最短长度**************************
       
       '//注册后数据中心返回的信息(WD:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX)
       If indata(34) = 67 And indata(35) = &H81 And indata(36) = &H1 And UBound(indata) = 105 Then
            '//处理区域号
                For i = 37 To 39 Step 1
                    num = indata(i)
                    If (indata(i) < 10) Then
                        str1 = str1 & "0" & num '小于10的数前面填0
                    Else
                        str1 = str1 & num
                    End If
                Next i
                
                '//处理区域名称
                ReDim tempdata(29) As Byte
                For i = 40 To 69 Step 1 '
                    tempdata(i - 40) = indata(i)
                Next i
                str2 = StrConv(tempdata, vbUnicode)
                str2 = RTrim(str2)
                
               '//处理区域密码
                For i = 70 To 75 Step 1
                    num = indata(i)
                    If (indata(i) < 10) Then
                        str3 = str3 & "0" & num
                    Else
                        str3 = str3 & num
                    End If
                Next i
                
                '//处理SIM 卡号
                For i = 76 To 80 Step 1
                    num = indata(i)
                    If (indata(i) < 10) Then
                        str4 = str4 & "0" & num
                    Else
                        str4 = str4 & num
                    End If
                Next i
                num = indata(81)
                str4 = str4 & num
                
                '//处理联系电话
                For i = 82 To 86 Step 1
                    num = indata(i)
                    If (indata(i) < 10) Then
                        str5 = str5 & "0" & num
                    Else
                        str5 = str5 & num
                    End If
                Next i
                num = indata(87)
                str5 = str5 & num
                
                '//处理联系手机
                For i = 88 To 92 Step 1
                    num = indata(i)
                    If (indata(i) < 10) Then
                        str6 = str6 & "0" & num
                    Else
                        str6 = str6 & num
                    End If
                Next i
                num = indata(93)
                str6 = str6 & num
                
                '//处理注册人
                ReDim tempdata(5) As Byte
                For i = 94 To 99 Step 1 '
                    tempdata(i - 94) = indata(i)
                Next i
                str7 = StrConv(tempdata, vbUnicode)
                str7 = RTrim(str7)
                
                For i = 100 To 103 Step 1
                    num = indata(i)
                    If (indata(i) < 10) Then
                        str8 = str8 & "0" & num '小于10的数前面填0
                    Else
                        str8 = str8 & num
                    End If
                Next i
                str = str1 & vbCrLf & str2 & vbCrLf & str3 & vbCrLf & str4 & vbCrLf & str5 & vbCrLf & str6 & vbCrLf & str7 & vbCrLf & str8
                ReDim myremsg.haltdata(0) As Byte '没有数据返回
                myremsg.haltdata(0) = 0
                myremsg.msginfo = str
    
               
                iquestion = MsgBox(str, vbYesNo + vbQuestion, "返回信息")
                If iquestion = vbYes Then
                    strsql = "select * from gongdiansuoreg"
                    openrs strsql
                    rs.AddNew
                    rs.Fields("gongdiansuo_id").Value = str1
                    rs.Fields("gongdiansuo_name").Value = str2
                    rs.Fields("gongdiansuo_pw").Value = str3
                    rs.Fields("gongdiansuo_sim").Value = str4
                    rs.Fields("gongdiansuo_tel").Value = str5
                    rs.Fields("gongdiansuo_mobile").Value = str6
                    rs.Fields("gongdiansuo_regman").Value = str7
                    rs.Fields("gongdiansuo_regcode").Value = str8
                    rs.UpdateBatch
                    clors
                End If
                GoTo exitfunction
            End If '//主机注册包结束
            
            '//登记主机IP后数据中心返回的信息(WD:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX)
            If indata(34) = 16 And indata(35) = &H81 And indata(36) = &H2 And UBound(indata) = 54 Then
              
                For i = 37 To 42 Step 1
                     num = indata(i)
                     If (indata(i) < 10) Then
                         str1 = str1 & "0" & num
                     Else
                         str1 = str1 & num
                     End If
                Next i
                
                
                For i = 43 To 46 Step 1
                     num = indata(i)
                     If (indata(i) < 10) Then
                         str2 = str2 & "0" & num
                     Else
                         str2 = str2 & num
                     End If
                Next i
                
                
                For i = 47 To 49 Step 1
                     num = indata(i)
                     If (indata(i) < 10) Then
                         str3 = str3 & "0" & num & "."
                     Else
                         str3 = str3 & num & "."
                     End If
                Next i

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -