Может кто-нибудь попробовать обернуть мозг вокруг этого? Я думал, что это просто обеспечение наличия двух байтов в шестнадцатеричном байте и обеспечение значений между 0 -9 и A-F, но нет.понимание этого кода VB
Фрагмент программы, которая предназначена для инфракрасного контроллера/бластера. Эта подпрограмма отправит фактические сигналы (или другие коды) из последовательного порта в контроллер, чтобы он выполнил задание.
Пример вызова:
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
Вопрос основан вокруг второй для/Следующий цикла с шагом 2 и встроенный IF заявления. Что происходит внутри цикла? numb1 и numb2
Какова цель этого цикла?
Насколько я могу судить, 'strRS' не имеет никакого эффекта. – muratgu
@muratgu Вероятно, для отладки. Я бы поставил на то, что у оригинального автора в какой-то момент был еще один debug.print для этого значения. –
Хорошо, давайте предположим, что strRS предназначен для отладки. Что происходит в цикле? – Eddiie