0

有人可以尝试将他们的大脑包裹在这个周围吗?我认为这只是确保十六进制字节中有 2 个字节,并确保值在 0 -9 和 AF 之间,但没有。

用于红外控制器/发射器的程序片段。该子程序会将实际信号(或其他代码)从串行端口发送到控制器以完成工作。

示例调用:

SendCode ("04241001")

VB6 代码说:

Public Sub SendCode(ByVal strOut As String)
' ****************************
' This sub sends the hex codes
' ****************************


Dim numb1 As Integer, numb2 As Integer
Dim strRS As String
Dim i As Long
Dim newline(200) As String, outline(200) As String

Debug.Print "Sending IR - " & strOut

    strRS = vbNullString

    For i = 1 To Len(strOut)
        newline(i) = Mid(strOut, i, 1)
    Next

    For i = 1 To Len(strOut) Step 2
        If Asc(newline(i)) < 64 Then
            numb1 = (Asc(newline(i)) - 48) * 16
            strRS = strRS + Format(Hex(numb1 / 16), "0")
        Else
            numb1 = (Asc(newline(i)) - 55) * 16
            strRS = strRS + Format(Hex(numb1 / 16), "0")
        End If
        If Asc(newline(i + 1)) < 64 Then
            numb2 = (Asc(newline(i + 1)) - 48)
            strRS = strRS + Format(Hex(numb2), "0")
        Else
            numb2 = (Asc(newline(i + 1)) - 55)
            strRS = strRS + Format(Hex(numb2), "0")
        End If
        numb1 = numb1 + numb2
        outline((i + 1) \ 2) = CByte(numb1)
        strRS = strRS + " "
    Next

    With MSComm1
        .RTSEnable = True
        Sleep (20)
        .OutBufferCount = 0
        For i = 1 To (Len(strOut) / 2)
            .Output = Chr(outline(i))
        Next
        Sleep (20)
        .RTSEnable = False
    End With

End Sub

该问题基于第二个 For/Next 循环,其中包含第 2 步和嵌入的 IF 语句。循环内部发生了什么?麻木1和麻木2

这个循环的目的是什么?

4

1 回答 1

1

它将十六进制字符串转换为二进制字节字符串,然后发送二进制字节字符串。它还将二进制字节转换回十六进制 (strRS),以便您检查转换和输出。检查/调试字符串不用于任何事情,但如果您在其中放置一个断点,您可以检查这些值。

于 2013-08-20T03:12:59.517 回答