2015-03-09 2 views
0

У меня есть устройство, подключенное через последовательный порт к компьютеру, и я пытаюсь выяснить, как он отправляет данные. (чтобы сделать длинный рассказ коротким) У меня есть приложение, которое может поручить ему отправить мне текст по серийному номеру, и я пытаюсь выяснить, как устройство форматирует данные. До сих пор я 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 соответствует счету.

Есть ли какой-то протокол (ы), который это делает? Если да, то какие?

Благодарный для любого направления

ответ

0

Похоже, что посылает 7-бит на байт, и вы настроены на получение 8. Проверьте настройки последовательного порта.

+0

Это просто поразило меня, когда я попытался декодировать данные, которые я сформировал. Однако для решения вашей проблемы эти данные являются частью более крупного пакета, который отправляется более 9600 бод без контроля четности, 8 данных, 1 остановка, отсутствие потока. Я думаю, что они просто используют битную упаковку для части данных. – Piotr

0

Данные в потоке бит-упакованы, что означает, что MSBit каждого байта удаляется.