Технический форум по робототехнике.
Иннициализирующее значение : $0000
Выходная XOR маска : $0000
Входные данные : не инвертируются
Выходной CRC перед XOR : не инвертируется
Значение полинома : $1021 (Зеркальное значение = $8408)
Полином : x^16 + x^15 + x^2 + 1
Значение для '123456789' : $31C3
_eot = &H04 'End of Transmission
_ack = &H06 'Acknowledge
_nack = &H15 'Not Acknowledge
_c = &H43 'ACII "C"
_can = &H18 'Cancel Transmission
[Start of Header] [Packet Number] [~Packet Number] (Packet Data,base64) [[16 bit CRC]] [End of Packet]
квадратные скобки - один байт
~Packet Number - дополнение Packet Number до 0xFF, т.е. Packet Number + ~Packet Number = 0xFF
Sub Uue_encode_print()
'кодирование в uue
Const _amount = 7 'размер пакета/3-1
Local B_buf As Byte : Local L_buf As Long : Local L_buf2 As Long
Local Index As Byte : Local I As Byte : Local K As Byte
For I = 0 To _amount
Index = I * 3
'три последовательных байта
Incr Index : L_buf = Packet(index) : Shift L_buf , Left , 8
Incr Index : L_buf = L_buf + Packet(index) : Shift L_buf , Left , 8
Incr Index : L_buf = L_buf + Packet(index)
'преобразование тройки
L_buf2 = L_buf
For K = 3 To 0 Step -1
Index = K * 6
Shift L_buf2 , Right , Index
B_buf = L_buf2
B_buf = B_buf And &B00111111
B_buf = B_buf + 32
Printbin B_buf
L_buf2 = L_buf
Next
Next
End Sub