Nerwin
@Nerwin
И ни капельки я не тупой...просто ленивый

Как узнать алгорит расчета контрольной суммы?

Пытаюсь подключить беспроводной датчик от noname метеостанции к компьютеру с помощью arduino. Подключился к базовой станции на выход приемника 433Мгц, но в силу зашумленности диапазона получаю много лишнего.
Пакет передачи почти разобрал, осталось понять, как crc считается, чтобы точно находить свой пакет.
Пример пакета передачи (пакет шлется 2 раза, второй раз без последних 8 бит):
111111110111 0111011100 1010101010 00111000 01 01 1111 1100100011110100
что удалось выяснить:
первые 12 бит всегда одинаковые, затем 10 бит меняются после перезагрузки датчика, 10 бит температуры, 8 бит влажности, 2 бита сигнал низкой батареи, 2 бита номер канала, 4 бита 1111, 16 бит случайные числа (логично должно быть crc). Как узнать, как считаются эти 16 бит?
пробовал искать пакет по первым битам и 4 единицам в конце, но все равно много левых пакетов.
  • Вопрос задан
  • 3106 просмотров
Пригласить эксперта
Ответы на вопрос 2
есть статья про реверс-инжиниринг CRC, можете попробовать. www.cosc.canterbury.ac.nz/greg.ewing/essays/CRC-Re...

еще там упоминается программа pycrc, которая умеет считать crc по распространенным алгоритмам - можете попробовать подобрать
Ответ написан
kearins
@kearins
Я бы сделал так: логировал бы данные и записывал, какие показания при этом были на приборе. Когда накопится десяток-другой строк, можно начать анализировать. Если двум строкам двоичных данных соответствуют одинаковые показания на приборе, то и контрольные суммы у двоичных строк должны совпадать. Если не совпадают, то это либо не контрольная сумма, либо она короче 16 бит. Затем сравнить строки, которые отличаются только показаниями температуры только на один разряд и проанализировать изменение контрольной суммы. Таким путем убедиться, сколько же занимает реально контрольная сумма, если она есть. Возможно, там еще время присутствует.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы