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

📄 hexedit.bas

📁 vb编写机器人遥控程序
💻 BAS
📖 第 1 页 / 共 2 页
字号:
i = 5 * (k - 819) / 81.9
If i < 100 Then frmMain.Label31.Caption = "内温:" & Chr(10) & Trim(Format(i, "0.0")) & Chr(10) & "    ℃"
Red = 8 * (k - 1019) / 81
If Red > 255 Then Red = 255
If Red < 0 Then Red = 0
frmMain.Label31.BackColor = RGB(Red, 255 - Red, 50)
'****************瓦斯 ***********************
k = Inputdata(17) * 256 + Inputdata(18)
i = k / 126289.8 - 0.009
frmMain.Label2.Caption = "瓦斯:" & Chr(10) & Trim(Format(i, "0.0%"))
Red = k / 1262 * 50
If Red > 255 Then Red = 255
If Red < 0 Then Red = 0
frmMain.Label2.BackColor = RGB(Red, 255 - Red, 50)
'****************湿度 ***********************
k = Inputdata(23) * 256 + Inputdata(24)
i = (5 * k - 3501.225) / 12935.7
If i < 0 Then i = 0
frmMain.Label4.Caption = "湿度:" & Chr(10) & Trim(Format(i, "0.0%"))
Green = (5 * k - 3501) / 129 * 2.5 + 50
If Green > 255 Then Green = 255
If Green < 0 Then Green = 0
Red = 255 - Green - 30
If Red < 0 Then Red = 0
frmMain.Label4.BackColor = RGB(Red, Green, Green)
'**************电机状态******************
' 摆臂左
        If Inputdata(8) And 1 Then
            frmMain.Label20.BackColor = vbRed
        Else: frmMain.Label20.BackColor = vbGreen
        End If
        ' 摆臂右
        If Inputdata(8) And 2 Then
            frmMain.Label21.BackColor = vbRed
        Else: frmMain.Label21.BackColor = vbGreen
        End If
        ' 主左
        If Inputdata(8) And 4 Then
            frmMain.Label22.BackColor = vbRed
        Else: frmMain.Label22.BackColor = vbGreen
        End If
        ' 主左
        If Inputdata(8) And 8 Then
        frmMain.Label23.BackColor = vbRed
        Else: frmMain.Label23.BackColor = vbGreen
        End If

        '**********************传感器状态
        If Inputdata(8) And 16 Then
        frmMain.Label1.BackColor = vbRed
        frmMain.Label2.BackColor = vbRed
        frmMain.Label3.BackColor = vbRed
        frmMain.Label4.BackColor = vbRed
        frmMain.Shape1.BackColor = vbRed
        frmMain.Label31.BackColor = vbRed
        frmMain.Label32.BackColor = vbRed
        Else
        frmMain.Shape1.BackColor = &HFFC0C0
        frmMain.Shape3.BackColor = &HFFC0FF
 End If
 End If
    End If
   End If
    Sendout = True
   ' Check = False
'=======================启动发送============================
   If Sendout = True Then frmMain.Timer4.Enabled = True
   If intReceiveLen >= Longl Then intReceiveLen = 0
   intReceiveLen = intReceiveLen + intInputLenth
   frmMain.Label28.Caption = intReceiveLen
End Sub

'*************最后接收数据填入文本框****************8
Public Sub Chuanganqidisplay()
    Dim t As String, te As String, i%
    t = ""
    For i = 1 To Longl
    te = Hex(Inputdata(i))
    If Len(te) = 1 Then te = "0" & te
    t = t & te
    Next
   
   't = t & Hex(Inputdata(Longl))
    If frmMain.Text1 = "input data error!" Then frmMain.Text1 = ""
    frmMain.Text1 = frmMain.Text1.Text & t & Chr$(10) 'strhexc
    
    On Error GoTo outthere
    
    If Len(frmMain.Text1.Text) >= 1200 Then
    frmMain.Text1 = Mid(frmMain.Text1.Text, InStr(15, frmMain.Text1.Text, "A5"))
    End If
    If Len(frmMain.Text1.Text) >= 40 Then frmMain.Text1.SelStart = Len(frmMain.Text1) - 30
    Exit Sub
outthere:
    frmMain.Text1 = "input data error!"
    Check = False
     
End Sub

'****************16进制字符转为10进制****************************
Public Function Covertonum(tet As String, lo As Single) As Integer
Dim a As String, num!

a = Mid(tet, lo, 1)
num = Asc(a)
If Asc(a) > 64 Then
num = 10 * 16 + (Asc(a) - 65) * 16
Else
num = Val(a) * 16
End If
a = Mid(tet, lo + 1, 1)
If Asc(a) > 64 Then
num = num + Asc(a) - 65 + 10
Else
num = num + Val(a)
End If
Covertonum = num
End Function
'***************异或校验实现************************
Public Function Xorcode(ByVal tet As String) As Integer
Dim i!, j!
tet = Replace(tet, " ", "")
If Len(tet) <> 0 Then
j = Covertonum(tet, 1)
For i = 2 To Len(tet) / 2
j = j Xor Covertonum(tet, 2 * i - 1)
Next
Xorcode = j
End If
End Function
'*********CRC-CCITT校验****************************
Public Function CRC_CCITT(ByVal string1 As String) As String
    Dim CRC As Long, i As Byte, j As Integer, Data() As Byte, tem() As Byte
    Dim crch As String, temp As String, crcl As String, a As String, k!, m!, n!, sum!
    string1 = Replace(string1, " ", "")
    k = Len(string1) / 2
    If k = 10 Then
   
    ReDim Data(k) As Byte
     ReDim tem(k) As Byte
        For m = 0 To k - 1
        tem(m) = Val("&h" & Mid$(string1, m * 2 + 1, 2))
        If Val(tem(m)) > 255 Then tem(m) = "FF"
        If Val(tem(m)) < 0 Then tem(m) = "00"
        
    Next m
   
    Data(0) = tem(0)
    Data(1) = tem(1)
    sum = (Val("&H" & Mid(string1, 3, 2)) + 1)
    sum = 2 * (Val("&H" & Mid(string1, 3, 2)) + 1)
    For n = 1 To sum Step 2
    Data(n + 1) = tem(n + 2)
    Data(n + 2) = tem(n + 1)
    Next
    For n = 0 To k - 1
    
    Next
    CRC = 0
    For j = LBound(Data) To UBound(Data) - 1
        i = &H80
        While (i <> 0)
            If (CRC And &H8000) <> 0 Then
                CRC = CRC * 2
                CRC = CRC Xor &H1021
            Else
                CRC = CRC * 2
            End If
            If (Data(j) And i) <> 0 Then
                CRC = CRC Xor &H1021
            End If
            i = i / 2
            If CRC > 65536 Then
                CRC = CRC - 65536
            End If
        Wend
    Next j

    crch = Hex(Fix(CRC / 256))
    If Len(crch) = 1 Then crch = "0" & crch
        crcl = Hex(CRC Mod 256)
    If Len(crcl) = 1 Then crcl = "0" & crcl
        CRC_CCITT = crcl & " " & crch
Else
CRC_CCITT = "55 55"
End If

End Function
Public Function ctohe(i As Integer) As String
If i < 16 Then
ctohe = "0" & Hex(i)
Else: ctohe = Hex(i)
End If
End Function
' ******************************输出数据数组组织**********************
Public Sub Outdatajoin()
Dim U!
'ii = "A1 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E"
ii = Model & " " & Moshi(1) & " "     '添加第二个字节
          '添加第三、第四个字节
          If Moshi(1) = "00" Then
          t = Hex(Pcanshu(1))
          If Len(t) = 1 Then t = "0" & t
          If Null = 0 Then t = "00"
          ii = ii & " " & t & " " & Moshi(2)
          Else:
          t = Hex(Vcanshu(1))
          If Len(t) = 1 Then t = "0" & t
          If Null Then t = "00"
          ii = ii & " " & t & " " & Moshi(2)
          End If
          '添加第五个字节
          If Moshi(2) = "00" Then
          t = Hex(Pcanshu(2))

          If Len(t) = 1 Then t = "0" & t
          If t = Null Then t = "00"
          ii = ii & " " & t
          Else:
          t = Hex(Vcanshu(2))
          If Len(t) = 1 Then t = "0" & t
          If t = Null Then t = "00"
          ii = ii & " " & t
          End If
          '添加第六至十五个字节
          For k = 1 To 10
          If Dianjil(k) > 255 Then Dianjil(k) = 255
          If Dianjil(k) < 0 Then Dianjil(k) = 0
          t = Hex(Dianjil(k))
          If Len(t) = 1 Then t = "0" & t
          If t = Null Then t = "00"
          ii = ii & " " & t
          Next
          '添加第十六、第十七字节
          U = Len(ii)
          ii = ii & " " & CRC_CCITT(Mid(ii, 16, 30))
          '添加第十八至二十七个字节
          For k = 1 To 10
          If Dianjir(k) > 255 Then Dianjir(k) = 255
          If Dianjir(k) < 0 Then Dianjir(k) = 0
          t = Hex(Dianjir(k))
          If Len(t) = 1 Then t = "0" & t
          If t = Null Then t = "00"
          ii = ii & " " & t
          Next
          '添加二十八、二十九字节
          ii = ii & " " & CRC_CCITT(Mid(ii, 52, 30))
          t = Hex(Xorcode(ii))
          If Len(t) = 1 Then t = "0" & t
          If t = Null Then t = 0
          ii = ii & " " & t
End Sub
'****************速度数据组织,将设定速度计算添加入数组****************
Public Sub Suduchuli()
Dim tem%
'左
If Vlt >= 0 Then
Dianjil(9) = 0
Dianjil(10) = 0
Dianjil(8) = 0
Dianjil(8) = Vlt \ 256
Dianjil(7) = Vlt - Dianjil(8) * 256
End If

If Vlt < 0 Then
Dianjil(9) = 255
Dianjil(10) = 255
Dianjil(8) = (65535 + Vlt) \ 256 '255 - (-Vlt \ 256)
If Dianjil(8) > 255 Then Dianjil(8) = 255
If Dianjil(8) < 0 Then Dianjil(8) = 0
Dianjil(7) = (65535 + Vlt) Mod 256 ' 255 + Vlt + (-Vlt \ 256) * 256
If Dianjil(7) > 255 Then Dianjil(7) = 255
If Dianjil(7) < 0 Then Dianjil(7) = 0
End If
'右
tem = -Vrt
If tem >= 0 Then
Dianjir(9) = 0
Dianjir(10) = 0
Dianjir(8) = 0
Dianjir(8) = tem \ 256
Dianjir(7) = tem - Dianjir(8) * 256
End If
If tem < 0 Then
Dianjir(9) = 255
Dianjir(10) = 255
Dianjir(8) = (65535 + tem) \ 256 ' 255- (-tem \ 256)
Dianjir(7) = (65535 + tem) Mod 256 ' 255 + tem + (-tem \ 256) * 256
End If
End Sub
'**********************************需测试里程计量程序***********************************
Public Sub Pcount()

If ((Not (Inputdata(8) And 4)) And (Not (Inputdata(8) And 8))) Then
Position = Inputdata(11) * 256 * 256 + Inputdata(12) * 256 + Inputdata(13)
Positionr = Inputdata(14) * 256 * 256 + Inputdata(15) * 256 + Inputdata(16)
If Position - Positiont < 30000 And Position - Positiont >= 0 Then Positiont2 = (Position - Positiont)
If Positiont - Position > 1000000 Then Positiont2 = 16777215 - Positiont + Position

If Positiontr - Positionr < 30000 And Positiontr - Positionr >= 0 Then Positiont2 = (Positiontr - Positionr) + Positiont2
If Positionr - Positiontr > 10000000 Then Positiont2 = 16777215 - Positionr + Positiontr + Positiont2
    Position3 = Position3 + Positiont2 \ 5
    'Position3 = Position3 \ 2.5
    Do While Position3 >= 1000
        Position3 = Position3 - 1000
        Position2 = Position2 + 1
        If Position2 >= 1000 Then
            Position2 = Position2 - 1000
            Position1 = Position1 + 1
        End If
    Loop
End If
    Positiont = Position
    Positiontr = Positionr
    Pot2 = str(Position2)
    Positiont2 = 0
    If Len(Trim(Pot2)) = 1 Then Pot2 = "00" & Trim(Pot2)
    If Len(Trim(Pot2)) = 2 Then Pot2 = "0" & Trim(Pot2)
    Pot3 = str(Position3)
    If Len(Trim(Pot3)) = 1 Then Pot3 = "00" & Trim(Pot3)
    If Len(Trim(Pot3)) = 2 Then Pot3 = "0" & Trim(Pot3)
    frmMain.Label25.Caption = Trim(str(Position1)) & " " & Trim(Pot2) & " " & Trim(Pot3)
    frmMain.Label27.Caption = "里程:"
'End If
End Sub

⌨️ 快捷键说明

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