У меня есть устройство, подключенное через последовательный порт к компьютеру, и я пытаюсь выяснить, как он отправляет данные. (чтобы сделать длинный рассказ коротким) У меня есть приложение, которое может поручить ему отправить мне текст по серийному номеру, и я пытаюсь выяснить, как устройство форматирует данные. До сих пор я sleuthed, что, например:Обратное проектирование протокола данных
Если я посылаю: 'палиндромов', я буду видеть:
A1 87 66 9D D9 39 6F DB 97 98 00
В ASCII данных для 'палиндромов' является
P a l i n d r o m e s
50 61 6C 69 6E 64 72 6F 6D 65 73
Если я смещаться каждый байт по позиции (+1) в потоке я получаю
P a l i n d r o m e s
50 61 6C 69 6E 64 72 6F 6D 65 73 <-- ASCII
01 02 03 04 05 06 07 08 09 0A 0B <-- shift
--------------------------------
03 98 00 <-- 73 << 0B = 039800
01 94 00 <-- 65 << 0A = 019400
DA 00 <-- 6D << 09 = DA00
6F 00 <-- 6F << 08 = 6F00
39 00 <-- 72 << 07 = 3900
19 00 <-- 64 << 06 = 1900
0D C0 <-- 6E << 05 = 0DC0
06 90 <-- 69 << 04 = 0690
03 60 <-- 6C << 03 = 0360
01 84 <-- 61 << 02 = 0184
A0 <-- 50 << 01 = A0
--------------------------------
A1 87 66 9D D9 39 6F DB 97 98 00
Я экспериментировал со строками различного размера и algori thm соответствует счету.
Есть ли какой-то протокол (ы), который это делает? Если да, то какие?
Благодарный для любого направления
Это просто поразило меня, когда я попытался декодировать данные, которые я сформировал. Однако для решения вашей проблемы эти данные являются частью более крупного пакета, который отправляется более 9600 бод без контроля четности, 8 данных, 1 остановка, отсутствие потока. Я думаю, что они просто используют битную упаковку для части данных. – Piotr