有人可以嘗試圍繞這一個包裝他們的大腦?我認爲這只是確保在十六進制字節中有2個字節,並確保值在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
問題是基於圍繞第二FOR/NEXT循環與步驟2和嵌入的IF語句。循環內部發生了什麼? numb1 and numb2
這個循環的目的是什麼?
據我所知,'strRS'沒有效果。 – muratgu
@ muratgu它很可能用於調試。我敢打賭,原作者在某個時間點有另一個debug.print值。 –
好的,我們假設strRS是用於調試的。循環中發生了什麼? – Eddiie