Я пытаюсь выяснить, как проверить ошибки в следующих потоках данных. Данные поступают от коммерческого пульта дистанционного управления для программирования электрических радиаторных обогревателей.
Я тщательно изучил большинство протоколов IR (RC5, NEC и т. д.), и, насколько я могу судить, он не подходит ни для одного из них. Однако я не могу подтвердить, что это не ИК-порт.
Аппаратное обеспечение, которое я использую, представляет собой стандартный приемник Vishay IR 38 кГц, подключенный к старому ПК с запущенной WinLIRC, поэтому я могу видеть необработанную последовательность импульсов/пространств и подтверждаю с помощью различных тестов/настроек основные параметры в конфигурации (такие как время штамп с разрешением до секунд), что данные выводятся через ИК в виде 10-битного, одного стартового бита, 8-битного байта данных и стопового бита. Затем я инвертировал байты данных, поменяв местами биты MSB-LSB, чтобы добраться до точки, которая соответствует расписанию программирования.
Единственным камнем преткновения для меня является последний байт, который, как я считаю, является проверкой ошибок, я знаю это, потому что я настроил тестовую установку для отправки данных с другой проверкой ошибок, и нагреватель не принимает их, и с правильным значение, как записано, принимается.
Ниже показан поток данных, за которым следуют еще 2 итерации, но с отметкой времени, опережающей на 1 секунду в каждом случае. Я вижу некоторое математическое сходство между проверками ошибок, но я пробовал все 8-битные CRC/контрольные суммы XOR, методы декодирования сложения, вычитания и т. д., а также использовал reveng, который не дал ответа.
Любая помощь в этом очень ценится!
1-Й РАУНД ДАННЫХ
ДВОИЧНЫЕ ШЕСТНАДЦАТИЧНЫЕ ДЕСЯТИЧНЫЕ ПРИМЕЧАНИЯ
11111111 FF 255
00000000 0 0
00001111 F 15
10110011 B3 179
01001100 4C 76
00000000 0 0
00000000 0 0 0
3 0 0 0
0 0 0 1 0 0 0 0 0 1 0 0 0 3
00000000 0 0
00000000 0 0
00000000 0 0
00000000 0 0
00000000 0 0
00000011 3 3
00000000 0 0
0 0 0000000 br> 00000000 0 0
00000000 0 0
00000000 0 0
00000011 3 3
00000000 0 0
00000000 0 0
00000000 0 0
000 00000 0 00000000 0 0
00000011 3 3
00000000 0 0
00000000 0 0
00000000 0 0
00000000 0 0
00000000 0 0
00000011 3 0 0
0
00000000 0 0
00000000 0 0
00000000 0 0
00000000 0 0
000000 11 3 3
00000000 0 0
00000000 0 0
00000000 0 0
00000000 0 0
00000000 0 0
00000011 3 3
00000000 0 0
0 0000 0
00000011 3 3
00000010 2 2 ЧАСА
00010010 12 18 МИНУТ
00000000 0 0 СЕКУНД
01101011 6B 107 ПРОВЕРКА CRC?
2-Й РАУНД ДАННЫХ ТАК ЖЕ, ЧТО 1-Й РАУНД ДО СЕКУНД ОТ МЕТКИ ВРЕМЕНИ: -
00000001 1 1 СЕКУНДЫ
00110101 35 53 ПРОВЕРКА CRC?
3-Й РАУНД ДАННЫХ ТАК ЖЕ, КАК 1-Й РАУНД, ДО СЕКУНД ОТ МЕТКИ ВРЕМЕНИ: -
00000010 2 2 СЕКУНДЫ 11010111 D7 215 CRC ПРОВЕРИТЬ?
4-Й РАУНД ДАННЫХ ТАК ЖЕ, КАК 1-Й РАУНД ДО СЕКУНДЫ ВРЕМЕНИ: -
00000011 3 3 СЕКУНДЫ
10001001 89 137 ПРОВЕРКА CRC?
5-Й РАУНД ДАННЫХ ТАК ЖЕ, КАК 1-Й РАУНД, ДО СЕКУНД ОТ МЕТКИ ВРЕМЕНИ: -
00000100 4 4 СЕКУНДЫ
00001010 ПРОВЕРКА 10 CRC?
6-Й РАУНД ДАННЫХ ТАК ЖЕ, КАК 1-Й РАУНД, ДО СЕКУНД ОТ МЕТКИ ВРЕМЕНИ: -
00000101 5 5 СЕКУНД
01010100 54 84 ПРОВЕРКА CRC?
7-Й РАУНД ДАННЫХ ТАК ЖЕ, КАК 1-Й РАУНД ДО ОТМЕТКИ ВРЕМЕНИ МИНУТ: -
00011000 18 24 МИНУТЫ
00001101 D 13 СЕКУНД
01110001 71 113 ПРОВЕРКА CRC?
8-Й РАУНД ДАННЫХ ТАК ЖЕ, КАК 1-Й РАУНД ДО ОТМЕТКИ ВРЕМЕНИ МИНУТ: -
00011011 1B 27 МИНУТ
00111011 3B 59 СЕКУНД
01000111 47 71 ПРОВЕРКА CRC?