Декодировать данные из Hex и LRC - PullRequest
0 голосов
/ 11 декабря 2018

Привет, у меня есть следующие данные Rs485, в которых я знаю значение, но не могу расшифровать данные, которые я пытаюсь получить в комплименте 2, но он подходит к концу, но не получает правильных данных

3A 30 31 30 33 30 32 30 31 38 42 36 45 0D 0A

в приведенном выше значении rs 485 = 395, то есть 3842 = 395 и 3645 = LRC и 0D0A = конечный символ

3A 30 31 30 33 30 32 30 31 38 46 36 41 0D 0A

в вышеприведенном значении rs 485 = 399, то есть 3846 = 399 и 3641 = LRCи 0D0A = конечный символ

3A 30 31 30 33 30 32 30 31 39 30 36 39 0D 0A

в приведенном выше значении RS 485 = 400, что составляет 3930 = 400 и 3639 = LRC и 0D0A = конечный символ

3A 30 31 30 33 30 32 30 31 39 32 36 37 0D 0A

в вышеуказанном RS 485значение данных = 402, то есть 3932 = 402 и 3637 = LRC и 0D0A = конечный символ

Пожалуйста, сообщите мне, чтобы получить значение LRC и данные. Значение Lrc суммирует данные и принимает 2 комплимента, но я неt знаю, как принять значение lrc. Пожалуйста, помогите мне получить данные и вычислить значение LRC

1 Ответ

0 голосов
/ 11 декабря 2018

Используя первую строку в качестве примера, преобразуйте пары байтов ASCII в одиночные шестнадцатеричные байты:

3A 30 31 30 33 30 32 30 31 38 42 xx xx 0D 0A   ASCII
      01    03    02    01    8B               hex values converted to binary bytes
      01 +  03 +  02 +  01  + 8B  = 92         sum up the hex values
                        00  - 92  = 6E         take the two's complement
                                 36 45         convert the 6E to ASCII
3A 30 31 30 33 30 32 30 31 38 42 36 45 0D 0A   include the 36 45 into the message

Для последней строки:

3A 30 31 30 33 30 32 30 31 39 32 xx xx 0D 0A
      01  + 03  + 02  + 01  + 92  = 99
                        00  - 99  = 67
3A 30 31 30 33 30 32 30 31 39 32 36 37 0D 0A
...