下面這段代碼能不能解釋下,特別是用到了什么校驗方法??能仔細解讀下嗎,謝謝、
Private Sub SendInstruction()
Dim i As Integer
Dim j As Integer
Dim ByteHigh As Byte
Dim ByteLow As Byte
Dim High As Integer
Dim low As Integer
ByteHigh = &HFF
ByteLow = &HFF
For i = 0 To 5
ByteLow = Instruction(i) Xor ByteLow
For j = 1 To 8
low = ByteLow And &H1
If low = 1 Then
High = ByteHigh And &H1
If High = 1 Then
ByteHigh = ((ByteHigh - 1) / 2) And &H7F
ByteLow = ((ByteLow - 1) / 2) Or &H80
Else
ByteHigh = (ByteHigh / 2) And &H7F
ByteLow = ((ByteLow - 1) / 2) And &H7F
End If
ByteHigh = ByteHigh Xor &HA0
ByteLow = ByteLow Xor &H1
Else '如果校驗碼低位元組右邊第1位為0
High = ByteHigh And &H1
If High = 1 Then
ByteHigh = ((ByteHigh - 1) / 2) And &H7F
ByteLow = (ByteLow / 2) Or &H80
Else
ByteHigh = (ByteHigh / 2) And &H7F
ByteLow = (ByteLow / 2) And &H7F
End If
End If
Next j
Next i
Instruction(6) = ByteLow '校驗碼低位元組
Instruction(7) = ByteHigh '校驗碼高位元組
MSComm.OutBufferCount = 0 '清空輸出暫存器
MSComm.Output = Instruction '向輸出緩沖區輸出指令
End Sub
uj5u.com熱心網友回復:
這個應該是ip類校檢1、 把校驗和欄位置為0;
2、 對IP頭部中的每16bit進行二進制求和;
3、 如果和的高16bit不為0,則將和的高16bit和低16bit反復相加,直到和的高16bit為0,從而獲得一個16bit的值;
4、 將該16bit的值取反,存入校驗和欄位。
串口通用校檢吧.不是很準確的校檢方法,主要用于串口通信.
uj5u.com熱心網友回復:
當接收包時,需要對報頭進行確認,檢查頭是否有誤,演算法同上2、3步,然后判斷取反的結果是否為0,是則正確,否則有錯。轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/81830.html
標籤:VB基礎類
下一篇:十個數輸出最大數 并指明位置
