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

📄 frmsysreg.frm

📁 应用研究计算上的许多地方上用的到的算法
💻 FRM
📖 第 1 页 / 共 3 页
字号:
    Init_Form
    Text2.Text = Right(HardwareEdit_temp, 3)
    Text3.Text = CStr(RunTime)
    Flag_W_HT = False
    Flag_W_RT = False
    InitMscomm
End Sub

Private Sub InitMscomm()
On Error GoTo ErrorHandler
    With MSComm
        .CommPort = COMport
        If .PortOpen = True Then
            .PortOpen = False
        End If
        .Settings = COMbaud + ",n,8,1"
        .InputMode = comInputModeBinary     '设置或返回 Input 属性取回的数据的类型,文本形式或二进制形式
        .NullDiscard = False        '确定 null 字符是否从端口传送到接收缓冲区
        .InBufferSize = 1000        '设置并返回接收缓冲区的字节数。
        .OutBufferSize = 1000       '设置并返回发送缓冲区的字节数。
        .InBufferCount = 0          '返回接收缓冲区中等待的字符数。属性设置为 0 来清除接收缓冲区。
        .OutBufferCount = 0         '返回在传输缓冲区中等待的字符数。 设置 OutBufferCount 属性为 0 可以清除传输缓冲区。
        .InputLen = 0               '设置并返回 Input 属性从接收缓冲区读取的字符数
                                    '设置 InputLen 为 0 时,使用 Input 将使 MSComm 控件读取接收缓冲区中全部的内容。
        .SThreshold = 0
        .RThreshold = 0             '设置并返回的要接收的字符数。 并将产生 OnComm的omEvReceive事件
        .PortOpen = True
    End With
    Exit Sub
ErrorHandler:
        MsgBox "串口" + Str(COMport) + " 打开失败", vbCritical       '+ vbCrLf + "无此串口或串口已打开"
End Sub

Private Sub SendDataReady()
    Dim i As Byte
    Dim temp As Long
    If Flag_Simular = False Then
     If HardwareType = 12 Then
        DataArr(0) = MTID
        DataArr(1) = &H45
        DataArr(2) = &H2
        DataArr(3) = &H0
        DataArr(4) = &H0
        DataArr(5) = &H10
        DataArr(6) = &H20
        MSComm.RThreshold = 8
        For i = 0 To 38
            SendBuf(i) = DataArr(i)
        Next i
        temp = CRC16(39)
        SendBuf(39) = CrcDataHI
        SendBuf(40) = CrcDataLO
        SendLen = 41
     Else
        DataArr(0) = MTID
        DataArr(1) = &H45
        DataArr(2) = &H2
        DataArr(3) = &H0
        DataArr(4) = &H0
        DataArr(5) = &HF
        DataArr(6) = &H1E
        MSComm.RThreshold = 8
        For i = 0 To 36
            SendBuf(i) = DataArr(i)
        Next i
        temp = CRC16(37)
        SendBuf(37) = CrcDataHI
        SendBuf(38) = CrcDataLO
        SendLen = 39
     End If
    End If
    
    If Flag_Simular = True Then
        Flag_Simular = False
        DataArr(0) = MTID
        DataArr(1) = &H66
        DataArr(2) = &H3
        DataArr(3) = &H0
        DataArr(4) = &H0
        DataArr(5) = &H0
        MSComm.RThreshold = 8
        For i = 0 To 5
            SendBuf(i) = DataArr(i)
        Next i
        temp = CRC16(6)
        SendBuf(6) = CrcDataHI
        SendBuf(7) = CrcDataLO
        SendLen = 8
    End If
    ModbusTrans
End Sub

Private Sub ModbusTrans()
    Dim i As Byte
    Dim Buf As String
On Error GoTo sendfailed
    Buf = String(SendLen, Chr(0))
    outbyte = StrConv(Buf, vbFromUnicode)
    For i = 0 To SendLen - 1
         outbyte(i) = SendBuf(i)
    Next i
    MSComm.Output = outbyte
    Exit Sub
sendfailed:
    Err.Clear
End Sub
Private Sub Form_Unload(Cancel As Integer)
    FrmSysReg.MSComm.PortOpen = False
    Form1.MSComm.PortOpen = True
    Form1.TimerofProEX.Enabled = True
    Form1.Timer1.Enabled = True
End Sub

Private Sub MSComm_OnComm()
Dim i As Byte
On Error GoTo ErrHandler1
    With MSComm
        Select Case .CommEvent
            Case comEvReceive
                .RThreshold = 0
                inputbyte = .Input
                Reclen = 0
                For i = LBound(inputbyte) To UBound(inputbyte)
                    RecBuf(Reclen) = inputbyte(i)
                    DataArr(Reclen) = RecBuf(Reclen)
                    Reclen = Reclen + 1
                Next i
                
                CRC16 (Reclen - 2)
                
                If (RecBuf(Reclen - 2) = CrcDataHI) And (RecBuf(Reclen - 1) = CrcDataLO) Then
                    If RecBuf(0) = MTID Then
                        If Flag_W_RT = True Then
                            Flag_W_RT = False
                            MsgBox "运行时长设置成功", , "提示"
                            Exit Sub
                        End If
                        If Flag_W_HT = True Then
                            Flag_W_HT = False
                            MsgBox "硬件版本设置成功", , "提示"
                            Exit Sub
                        End If
                        
                        If Flag_Set = True Then
                            MsgBox "设置成功", , "提示"
                            Flag_Set = False
                            Timer1.Enabled = True
                            Exit Sub
                        End If
                        If Timer1.Enabled = True Then
                            If HardwareType = 0 Then
                                ParaFull = CStr((RecBuf(3) * CSng(256) + RecBuf(4)) / 10)
                                M1_0 = RecBuf(17) * CSng(256) + RecBuf(18)
                                M1_Full = RecBuf(19) * CSng(256) + RecBuf(20)
                                M1 = (RecBuf(29) * CSng(256) + RecBuf(30)) / 10
                            ElseIf HardwareType = 1 Then
                                ParaFull = CStr((RecBuf(3) * CSng(256) + RecBuf(4)) / 1000)
                                M1_0 = RecBuf(17) * CSng(256) + RecBuf(18)
                                M1_Full = RecBuf(19) * CSng(256) + RecBuf(20)
                                M1 = (RecBuf(29) * CSng(256) + RecBuf(30)) / 1000
                            ElseIf HardwareType = 2 Then
                                ParaFull = CStr((RecBuf(3) * CSng(256) + RecBuf(4)) / 10)
                                Polarity = RecBuf(6)
                                M1_0 = RecBuf(17) * CSng(256) + RecBuf(18)
                                M1_Full = RecBuf(19) * CSng(256) + RecBuf(20)
                                M1 = (RecBuf(29) * CSng(256) + RecBuf(30)) / 10
                            ElseIf HardwareType = 3 Then
                                ParaFull = CStr((RecBuf(3) * CSng(256) + RecBuf(4)) / 10)
                                Polarity = RecBuf(6)
                                M1_0 = RecBuf(17) * CSng(256) + RecBuf(18)
                                M1_Full = RecBuf(19) * CSng(256) + RecBuf(20)
                                M1 = (RecBuf(29) * CSng(256) + RecBuf(30)) / 10
                            ElseIf HardwareType = 7 Then
                                ParaFull = CStr((RecBuf(3) * CSng(256) + RecBuf(4)) / 10)
                                If RecBuf(7) >= &H80 Then
                                    SuperScript = -CStr(((RecBuf(7) And &H7F) * CSng(256) + RecBuf(8)) / 10)
                                Else
                                    SuperScript = CStr((RecBuf(7) * CSng(256) + RecBuf(8)) / 10)
                                End If
                                If RecBuf(9) >= &H80 Then
                                    SubScript = -CStr(((RecBuf(9) And &H7F) * CSng(256) + RecBuf(10)) / 10)
                                Else
                                    SubScript = CStr((RecBuf(9) * CSng(256) + RecBuf(10)) / 10)
                                End If
                                Temperature = RecBuf(12)
                                Checkout_0_resistance = RecBuf(14)
                                Checkout_Full_resistance = RecBuf(16)
                                M1_0 = RecBuf(17) * CSng(256) + RecBuf(18)
                                M1_Full = RecBuf(19) * CSng(256) + RecBuf(20)
                                M1 = (RecBuf(29) * CSng(256) + RecBuf(30)) / 10
                            ElseIf HardwareType = 5 Then
                                ParaFull = CStr((RecBuf(3) * CSng(256) + RecBuf(4)) / 10)
                                If RecBuf(7) >= &H80 Then
                                    SuperScript = -CStr(((RecBuf(7) And &H7F) * CSng(256) + RecBuf(8)) / 10)
                                Else
                                    SuperScript = CStr((RecBuf(7) * CSng(256) + RecBuf(8)) / 10)
                                End If
                                If RecBuf(9) >= &H80 Then
                                    SubScript = -CStr(((RecBuf(9) And &H7F) * CSng(256) + RecBuf(10)) / 10)
                                Else
                                    SubScript = CStr((RecBuf(9) * CSng(256) + RecBuf(10)) / 10)
                                End If
                                M1_0 = RecBuf(17) * CSng(256) + RecBuf(18)
                                M1_Full = RecBuf(19) * CSng(256) + RecBuf(20)
                                M1 = (RecBuf(29) * CSng(256) + RecBuf(30)) / 1000
                             ElseIf HardwareType = 8 Then
                                ParaFull = CStr((RecBuf(3) * CSng(256) + RecBuf(4)) / 10)
                                M1_0 = RecBuf(17) * CSng(256) + RecBuf(18)
                                M1_Full = RecBuf(19) * CSng(256) + RecBuf(20)
                                M2_0 = RecBuf(21) * CSng(256) + RecBuf(22)
                                M2_Full = RecBuf(23) * CSng(256) + RecBuf(24)
                                M3_0 = RecBuf(25) * CSng(256) + RecBuf(26)
                                M3_Full = RecBuf(27) * CSng(256) + RecBuf(28)
                                M1 = (RecBuf(29) * CSng(256) + RecBuf(30)) / 10
                             ElseIf HardwareType = 9 Then
                                ParaFull = CStr((RecBuf(3) * CSng(256) + RecBuf(4)) / 1000)
                                M1_0 = RecBuf(17) * CSng(256) + RecBuf(18)
                                M1_Full = RecBuf(19) * CSng(256) + RecBuf(20)
                                M2_0 = RecBuf(21) * CSng(256) + RecBuf(22)
                                M2_Full = RecBuf(23) * CSng(256) + RecBuf(24)
                                M3_0 = RecBuf(25) * CSng(256) + RecBuf(26)
                                M3_Full = RecBuf(27) * CSng(256) + RecBuf(28)
                                M1 = (RecBuf(29) * CSng(256) + RecBuf(30)) / 1000
                             ElseIf HardwareType = 10 Then
                                ParaFull = CStr((RecBuf(3) * CSng(256) + RecBuf(4)))
                                M1_0 = RecBuf(17) * CSng(256) + RecBuf(18)
                                M1_Full = RecBuf(19) * CSng(256) + RecBuf(20)
                                M2_0 = RecBuf(21) * CSng(256) + RecBuf(22)
                                M2_Full = RecBuf(23) * CSng(256) + RecBuf(24)
                                M3_0 = RecBuf(25) * CSng(256) + RecBuf(26)
                                M3_Full = RecBuf(27) * CSng(256) + RecBuf(28)
                                M1 = RecBuf(29) * CSng(256) + RecBuf(30)
                             ElseIf HardwareType = 11 Then
                                ParaFull = CStr((RecBuf(3) * CSng(256) + RecBuf(4)))
                                M1_0 = RecBuf(17) * CSng(256) + RecBuf(18)
                                M1_Full = RecBuf(19) * CSng(256) + RecBuf(20)
                                M2_0 = RecBuf(21) * CSng(256) + RecBuf(22)
                                M2_Full = RecBuf(23) * CSng(256) + RecBuf(24)
                                M3_0 = RecBuf(25) * CSng(256) + RecBuf(26)
                                M3_Full = RecBuf(27) * CSng(256) + RecBuf(28)
                                M1 = RecBuf(29) * CSng(256) + RecBuf(30)
                             ElseIf HardwareType = 4 Then
                                ParaFull = CStr((RecBuf(3) * CSng(256) + RecBuf(4)) / 10)
                                M1_0 = RecBuf(17) * CSng(256) + RecBuf(18)
                                M1_Full = RecBuf(19) * CSng(256) + RecBuf(20)
                                M1 = (RecBuf(29) * CSng(256) + RecBuf(30)) / 10
                             ElseIf HardwareType = 6 Then
                                ParaFull = CStr((RecBuf(3) * CSng(256) + RecBuf(4)) / 10)
                                If RecBuf(7) >= &H80 Then
                                    SuperScript = -CStr(((RecBuf(7) And &H7F) * CSng(256) + RecBuf(8)) / 10)
                                Else
                                    SuperScript = CStr((RecBuf(7) * CSng(256) + RecBuf(8)) / 10)
                                End If
                                If RecBuf(9) >= &H80 Then
                                    SubScript = -CStr(((RecBuf(9) And &H7F) * CSng(256) + RecBuf(10)) / 10)
                                Else
                                    SubScript = CStr((RecBuf(9) * CSng(256) + RecBuf(10)) / 10)
                                End If
                                M1_0 = RecBuf(17) * CSng(256) + RecBuf(18)
                                M1_Full = RecBuf(19) * CSng(256) + RecBuf(20)
                                M1 = (RecBuf(29) * CSng(256) + RecBuf(30)) / 10
                             ElseIf HardwareType = 12 Then
                                ParaFull = CStr((RecBuf(3) * CSng(256) + RecBuf(4)))
                                M1_0 = RecBuf(17) * CSng(256) + RecBuf(18)
                                M1_Full = RecBuf(19) * CSng(256) + RecBuf(20)
                                M2_0 = RecBuf(21) * CSng(256) + RecBuf(22)
                                M2_Full = RecBuf(23) * CSng(256) + RecBuf(24)
                                M3_0 = RecBuf(25) * CSng(256) + RecBuf(26)
                                M3_Full = RecBuf(27) * CSng(256) + RecBuf(28)
                                M1 = RecBuf(29) * CSng(256) + RecBuf(30)
                                M2 = RecBuf(31) * CSng(256) + RecBuf(32)
                            End If
                            Init_Form
                        End If
                    Else
                        If Flag_W_HT = True Then
                            Flag_W_HT = False
                            MsgBox "硬件版本设置失败", , "提示"
                            Exit Sub
                        End If

                        If Flag_W_RT = True Then
                            Flag_W_RT = False
                            MsgBox "运行时长设置失败", , "提示"
                            Exit Sub
                        End If
                        
                        If Flag_Set = True Then
                            MsgBox "设置失败", , "提示"
                            Flag_Set = False
                            Exit Sub
                        End If
                    End If
                Else
                        If Flag_W_HT = True Then
                            Flag_W_HT = False
                            MsgBox "硬件版本设置失败", , "提示"
                            Exit Sub
                        End If
                       If Flag_W_RT = True Then
                            Flag_W_RT = False
                            MsgBox "运行时长设置失败", , "提示"
                            Exit Sub
                       End If
                       
                       If Flag_Set = True Then
                            MsgBox "设置失败", , "提示"
                            Flag_Set = False
                            Exit Sub
                       End If
                End If
        End Select
    End With
    Exit Sub
ErrHandler1:
End Sub

Private Sub Init_Form()
    Text1(0).Text = CStr(HardwareType)
    Text1(1).Text = ParaFull
    If HardwareType = 2 Or HardwareType = 3 Then
        If Polarity = 0 Then
            Combo1(0).Text = "单极性"
        Else
            Combo1(0).Text = "双极性"
        End If
    End If
    If HardwareType = 7 Then
        Text1(3).Text = CStr(SuperScript)
        Text1(4).Text = CStr(SubScript)
        If Temperature = 0 Then
            Combo1(1).Text = "PT100"
        ElseIf Temperature = 1 Then
            Combo1(1).Text = "PT50"
        ElseIf Temperature = 2 Then
            Combo1(1).Text = "CU100"
        ElseIf Temperature = 3 Then
            Combo1(1).Text = "CU50"
        End If
        Text1(6).Text = CStr(Checkout_0_resistance)
        Text1(7).Text = CStr(Checkout_Full_resistance)
    End If
    If HardwareType = 5 Or HardwareType = 6 Then
        Text1(3).Text = CStr(SuperScript)
        Text1(4).Text = CStr(SubScript)
    End If
    If HardwareType < 8 Or HardwareType = 10 Or HardwareType = 11 Then
        Text1(8).Text = CStr(M1_0)
        Text1(9).Text = CStr(M1_Full)
        Text1(14).Text = CStr(M1)
    ElseIf HardwareType < 10 Then
        Text1(8).Text = CStr(M1_0)
        Text1(9).Text = CStr(M1_Full)
        Text1(10).Text = CStr(M2_0)
        Text1(11).Text = CStr(M2_Full)
        Text1(12).Text = CStr(M3_0)
        Text1(13).Text = CStr(M3_Full)
        Text1(14).Text = CStr(M1)
    ElseIf HardwareType = 12 Then
        Text1(8).Text = CStr(M1_0)
        Text1(9).Text = CStr(M1_Full)
        Text1(10).Text = CStr(M2_0)
        Text1(11).Text = CStr(M2_Full)
        Text1(12).Text = CStr(M3_0)
        Text1(13).Text = CStr(M3_Full)
        Text1(14).Text = CStr(M1)
        Text1(15).Text = CStr(M2)
   End If
End Sub

Private Sub Timer1_Timer()
    sendready
    ModbusTrans   '发送读命令
    Timer1.Interval = 1000
    Timer1.Enabled = True
End Sub

Private Sub sendready()
    Dim temp As Long
    Dim i As Byte
    DataArr(0) = MTID
    If HardwareType = 12 Then
            DataArr(1) = &H43
            DataArr(2) = 2
            DataArr(3) = 1
            DataArr(4) = 0
            DataArr(5) = &HF
            MSComm.RThreshold = 35
    Else
            DataArr(1) = &H43
            DataArr(2) = 2
            DataArr(3) = 1
            DataArr(4) = 0
            DataArr(5) = &HE
            MSComm.RThreshold = 33
    End If
    temp = CRC16(6)
    DataArr(6) = CrcDataHI
    DataArr(7) = CrcDataLO
        
    For i = 0 To 7
        SendBuf(i) = DataArr(i)
    Next i
    
    SendLen = 8

End Sub

⌨️ 快捷键说明

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