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

📄 form1.frm

📁 开关电源监控系统 485总线远距离控制 采用VB控件编程方式 远距离
💻 FRM
📖 第 1 页 / 共 4 页
字号:
    Text1.Text = ""
End Sub
'--------------------------------------------------------------------
'自动发送(自动获取开关量)按钮:定时开启
'--------------------------------------------------------------------
Private Sub atuosend_Click()
    Timer1.Enabled = True
End Sub





'--------------------------------------------------------------------
'MSCOMM控件事件:接收数据
'--------------------------------------------------------------------
Private Sub MSComm1_OnComm()
    Dim BRec()  As Byte
    Dim Buffer  As Variant
    Dim temp
    Dim string1 As String
    Dim string2 As String
    Dim string4 As String
    Dim i   As Integer
    Static j   As Integer
    Static k As Integer
    Static recstring As String
    MSComm1.InputMode = comInputModeBinary
    Select Case MSComm1.CommEvent
        Case 2                                     'comevreceive
            MSComm1.InputLen = 0
        Buffer = MSComm1.Input
        BRec() = Buffer
       ' Text1.Text = ""
        For i = 0 To UBound(BRec)
            If Len(Hex(BRec(i))) = 1 Then
                temp = 0 & Hex(BRec(i))
            Else
                temp = Hex(BRec(i))
            End If
            'Text1.Text = Text1.Text & " " & temp '& vbCrLf
            
            recstring = recstring & temp
            
            k = InStr(recstring, "5E") - 1
            
            If Len(recstring) = 12 + k Then
                j = Val("&h" & temp)
            End If
            
            If Len(recstring) = k + 12 + j * 2 + 3 * 2 Then        '一个数据串的长度
                
                'Text11.Text = Right$(recstring, 18 + j * 2)
                
                Text1.Text = Text1.Text & " " & recstring & vbCrLf
                 If Len(Text1.Text) > 300 Then
                    Text1.Text = ""
                 End If
                
                
                string1 = Mid$(recstring, 13 + k, 2)                 '获取命令字
                
                
                
                If string1 = "83" Then                             '交流输入电压
                    Text9.Text = Mid$(recstring, 16 + k, 1) & Mid$(recstring, 17 + k, 2)
                     
                ElseIf string1 = "85" Then                         '直流输出电压
                    Text2.Text = "-" & Mid$(recstring, 16 + k, 2) & "." & Mid$(recstring, 18 + k, 1)
                    
                ElseIf string1 = "87" Then                         '3路直流输出电流
                   Text3.Text = Mid$(recstring, 16 + k, 2) & "." & Mid$(recstring, 18 + k, 1)
                   Text4.Text = Mid$(recstring, 20 + k, 2) & "." & Mid$(recstring, 22 + k, 1)
                   Text10.Text = Mid$(recstring, 24 + k, 2) & "." & Mid$(recstring, 26 + k, 1)
                
                ElseIf string1 = "8B" Then
                    string4 = Mid$(recstring, 15 + k, 2)
                    
                    
                    
                    If string4 = "00" Then
                        Text17.Text = "电源模块无告警"
                    End If
                    If string4 = "01" Then
                        Text17.Text = "1号电源模块告警"
                    End If
                    If string4 = "02" Then
                        Text17.Text = "2号电源模块告警"
                    End If
                    If string4 = "03" Then
                        Text17.Text = "3号电源模块告警"
                    End If
                    If string4 = "04" Then
                        Text17.Text = "1、2号电源模块告警"
                    End If
                    If string4 = "05" Then
                        Text17.Text = "2、3号电源模块告警"
                    End If
                    If string4 = "06" Then
                        Text17.Text = "1、3号电源模块告警"
                    End If
                    If string4 = "07" Then
                        Text17.Text = "1、2、3号电源模块告警"
                    End If
                    
                    If string4 = "08" Then
                        Text17.Text = "交流输入电压过压告警"
                    End If
                    
                    If string4 = "09" Then
                        Text17.Text = "交流输入电压欠压告警"
                    End If
                    If string4 = "0A" Then
                        Text17.Text = "直流输出电压过压告警"
                    End If
                    If string4 = "0B" Then
                        Text17.Text = "直流输出电压欠压告警"
                    End If
                    If string4 = "0C" Then
                        Text17.Text = "直流输出总电流过流告警"
                    End If
                    
                 
                        
                ElseIf string1 = "93" Then
                    MsgBox "交流输入电压偏移量设置成功", vbOKOnly & vbInformation, "设置提示"
                    
                ElseIf string1 = "95" Then
                    MsgBox "直流输出电压偏移量设置成功", vbOKOnly & vbInformation, "设置提示"
                
                ElseIf string1 = "97" Then
                    MsgBox "直流输出电流偏移量设置成功", vbOKOnly & vbInformation, "设置提示"
                
                ElseIf string1 = "99" Then
                    MsgBox "存储参数被清除", vbOKOnly & vbInformation, "设置提示"
                
                End If
                recstring = ""
                k = 0
             
                
            End If
            
            

        Next
    End Select
End Sub

'--------------------------------------------------------------------
'交流输入电压单选框
'--------------------------------------------------------------------
Private Sub Option1_Click()
select1 = &H92
End Sub
'--------------------------------------------------------------------
'直流输出电压单选框
'--------------------------------------------------------------------
Private Sub Option2_Click()
select1 = &H94
End Sub
'--------------------------------------------------------------------
'直流输出电流单选框
'--------------------------------------------------------------------
Private Sub Option3_Click()
select1 = &H96
End Sub
'--------------------------------------------------------------------
'打开串口按钮
'--------------------------------------------------------------------
Private Sub st_Click()
    Dim baud As String
    Dim stringtemp As String
    'MSComm1.CommPort = 1
    If Form1.Combo11 = "Com1" Then
        MSComm1.CommPort = 1                    '设置或返回串口号
    End If
    If Form1.Combo11 = "Com2" Then
        MSComm1.CommPort = 2
    End If
    If Form1.Combo11 = "Com3" Then
        MSComm1.CommPort = 3
    End If
    If Form1.Combo11 = "Com4" Then
        MSComm1.CommPort = 4
    End If
    If Form1.Combo11 = "Com5" Then
        MSComm1.CommPort = 5
    End If
    If Form1.Combo11 = "Com6" Then
        MSComm1.CommPort = 6
    End If
    If Form1.Combo11 = "Com7" Then
        MSComm1.CommPort = 7
    End If
    If Form1.Combo11 = "Com8" Then
        MSComm1.CommPort = 8
    End If
    If Form1.Combo11 = "Com9" Then
        MSComm1.CommPort = 9
    End If
    If Form1.Combo11 = "Com10" Then
        MSComm1.CommPort = 10
    End If
    If Form1.Combo11 = "Com11" Then
        MSComm1.CommPort = 11
    End If
    If Form1.Combo11 = "Com12" Then
        MSComm1.CommPort = 12
    End If
    If Form1.Combo11 = "Com13" Then
        MSComm1.CommPort = 13
    End If
    If Form1.Combo11 = "Com14" Then
        MSComm1.CommPort = 14
    End If
    If Form1.Combo11 = "Com15" Then
        MSComm1.CommPort = 15
    End If
    If Form1.Combo11 = "Com16" Then
        MSComm1.CommPort = 16
    End If
    baud = baudrate.Text
    'MSComm1.Settings = "2400,N,8,1"           'mscomm1控件的初始化
    stringtemp = "N,8,1"
    MSComm1.Settings = baud & "," & stringtemp
    MSComm1.InputLen = 0                        '接收缓冲区中全部内容
    MSComm1.InBufferSize = 50
    MSComm1.OutBufferSize = 50
    MSComm1.InBufferCount = 0                   '清空接收与发送缓冲区
    MSComm1.OutBufferCount = 0
    MSComm1.RThreshold = 1                      '接收与发送的门限(阀值)
    MSComm1.SThreshold = 1
    MSComm1.PortOpen = True
    
    st.Enabled = False
    stopcom.Enabled = True
End Sub
'--------------------------------------------------------------------
'关闭串口按钮
'--------------------------------------------------------------------
Private Sub stopcom_Click()
    MSComm1.PortOpen = False
    st.Enabled = True
    stopcom.Enabled = False
End Sub
Private Sub Text19_KeyPress(KeyAscii As Integer)
    If KeyAscii < Asc("0") Or KeyAscii > Asc("9") Then
        If KeyAscii = Asc(".") Then
            Exit Sub
        End If
        Beep
        KeyAscii = 0
    End If
End Sub
Private Sub Text20_KeyPress(KeyAscii As Integer)
    If KeyAscii < Asc("0") Or KeyAscii > Asc("9") Then
        If KeyAscii = Asc(".") Then
            Exit Sub
        End If
        Beep
        KeyAscii = 0
    End If
End Sub
Private Sub Text21_KeyPress(KeyAscii As Integer)
    If KeyAscii < Asc("0") Or KeyAscii > Asc("9") Then
        If KeyAscii = Asc(".") Then
            Exit Sub
        End If
        Beep
        KeyAscii = 0
    End If
End Sub

'--------------------------------------------------------------------
'时钟控件:用于数据的自动发送(输入电压)
'--------------------------------------------------------------------
Private Sub Timer1_Timer()
    Dim First_chr(0 To 9) As Byte
    Dim vsend   As Variant
    Dim n As Integer
    Dim k As Integer
    Dim t As Byte
    Dim i   As Integer
    Dim j   As String
    Timer1.Enabled = False
    If st.Enabled = True Then
        MsgBox "串口没打开", vbOKOnly & vbInformation, "提示打开串口"
        Exit Sub
    End If
    MSComm1.InputMode = comInputModeBinary
    First_chr(0) = &H5E
    First_chr(1) = &H10
    First_chr(2) = Val(Trim("&H" & adr.Text))
    First_chr(3) = &HB2
    First_chr(4) = &HF0
    First_chr(5) = &H1
    First_chr(6) = &H82
    
    For n = 1 To 6
        k = k + First_chr(n)
        If k > 255 Then
            k = k - 256
        End If
    Next n
    t = k
    First_chr(7) = Val("&H" & Hex$(k))
    Text7.Text = Hex$(Val("&H" & Hex$(k)))
    k = Not t
    k = k + 1
    First_chr(8) = Val("&H" & Hex$(k))
    Text8.Text = Hex$(Val("&H" & Hex$(k)))
    
    First_chr(9) = &HD
    send.Text = ""
    For i = 0 To 9
    j = Hex$(First_chr(i))
    If Len(j) = 1 Then
        j = "0" & j
    End If
    send.Text = send.Text & j
    Next i
    vsend = First_chr()
    Call SendData(First_chr)
    Timer2.Enabled = True
End Sub
'--------------------------------------------------------------------
'时钟控件:用于数据的自动发送(输出电压)
'--------------------------------------------------------------------
Private Sub Timer2_Timer()
    Dim First_chr(0 To 9) As Byte
    Dim vsend   As Variant
    Dim n As Integer
    Dim k As Integer
    Dim t As Byte
    Dim i   As Integer
    Dim j   As String
    Timer2.Enabled = False
    If st.Enabled = True Then
        MsgBox "串口没打开", vbOKOnly & vbInformation, "提示打开串口"
        Exit Sub
    End If
    MSComm1.InputMode = comInputModeBinary
    First_chr(0) = &H5E
    First_chr(1) = &H10
    First_chr(2) = Val(Trim("&H" & adr.Text))
    First_chr(3) = &HB2
    First_chr(4) = &HF0
    First_chr(5) = &H1
    First_chr(6) = &H84
    
    For n = 1 To 6
        k = k + First_chr(n)
        If k > 255 Then
            k = k - 256
        End If
    Next n
    t = k
    First_chr(7) = Val("&H" & Hex$(k))
    Text5.Text = Hex$(Val("&H" & Hex$(k)))
    k = Not t
    k = k + 1
    First_chr(8) = Val("&H" & Hex$(k))
    Text6.Text = Hex$(Val("&H" & Hex$(k)))
    
    First_chr(9) = &HD
    send.Text = ""
    For i = 0 To 9
    j = Hex$(First_chr(i))
    If Len(j) = 1 Then
        j = "0" & j
    End If
    send.Text = send.Text & j
    Next i
    vsend = First_chr()
    Call SendData(First_chr)
    Timer3.Enabled = True
End Sub
'--------------------------------------------------------------------
'时钟控件:用于数据的自动发送(输出电流)
'--------------------------------------------------------------------
Private Sub Timer3_Timer()
    Dim First_chr(0 To 9) As Byte
    Dim vsend   As Variant
    Dim n As Integer
    Dim k As Integer
    Dim t As Byte
    Dim i   As Integer
    Dim j   As String
    Timer3.Enabled = False
    If st.Enabled = True Then
        MsgBox "串口没打开", vbOKOnly & vbInformation, "提示打开串口"
        Exit Sub
    End If
    MSComm1.InputMode = comInputModeBinary
    First_chr(0) = &H5E
    First_chr(1) = &H10
    First_chr(2) = Val(Trim("&H" & adr.Text))
    First_chr(3) = &HB2
    First_chr(4) = &HF0
    First_chr(5) = &H1
    First_chr(6) = &H86
    
    For n = 1 To 6
        k = k + First_chr(n)
        If k > 255 Then
            k = k - 256
        End If
    Next n
    t = k
    First_chr(7) = Val("&H" & Hex$(k))
    Text14.Text = Hex$(Val("&H" & Hex$(k)))
    k = Not t
    k = k + 1
    First_chr(8) = Val("&H" & Hex$(k))
    Text15.Text = Hex$(Val("&H" & Hex$(k)))
    
    First_chr(9) = &HD
    send.Text = ""
    For i = 0 To 9
    j = Hex$(First_chr(i))
    If Len(j) = 1 Then
        j = "0" & j
    End If
    send.Text = send.Text & j
    Next i
    vsend = First_chr()
    Call SendData(First_chr)
    Timer4.Enabled = True
End Sub
'--------------------------------------------------------------------
'时钟控件:用于数据的自动发送(获取告警信息)
'--------------------------------------------------------------------
Private Sub Timer4_Timer()
Dim First_chr(0 To 9) As Byte
    Dim vsend   As Variant
    Dim n As Integer
    Dim k As Integer
    Dim t As Byte
    Dim i   As Integer
    Dim j   As String
    Timer4.Enabled = False
    If st.Enabled = True Then
        MsgBox "串口没打开", vbOKOnly & vbInformation, "提示打开串口"
        Exit Sub
    End If
    MSComm1.InputMode = comInputModeBinary
    First_chr(0) = &H5E
    First_chr(1) = &H10
    First_chr(2) = Val(Trim("&H" & adr.Text))
    First_chr(3) = &HB2
    First_chr(4) = &HF0
    First_chr(5) = &H1
    First_chr(6) = &H8A
    
    For n = 1 To 6
        k = k + First_chr(n)
        If k > 255 Then
            k = k - 256
        End If
    Next n
    t = k
    First_chr(7) = Val("&H" & Hex$(k))
    k = Not t
    k = k + 1
    First_chr(8) = Val("&H" & Hex$(k))
    
    First_chr(9) = &HD
    send.Text = ""
    For i = 0 To 9
    j = Hex$(First_chr(i))
    If Len(j) = 1 Then
        j = "0" & j
    End If
    send.Text = send.Text & j
    Next i
    vsend = First_chr()
    Call SendData(First_chr)
    Timer1.Enabled = True
End Sub

⌨️ 快捷键说明

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