Форум обсуждения систем  

Вернуться   Форум обсуждения систем "Умный дом", проектов Ардуино, OpenWRT и других DIY устройств > Форум умного дома > Сделай сам > Открытый проект умного дома

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 19.06.2014, 21:33   #34
uni
Senior Member
 
Аватар для uni
 
Регистрация: 29.10.2013
Адрес: Екатеринбург, Нижневартовск, Энергодар
Возраст: 43
Сообщений: 573
Вес репутации: 599
uni has a spectacular aura aboutuni has a spectacular aura about
Отправить сообщение для uni с помощью ICQ
По умолчанию Re: Описание протокола "Умный дом"

Там числа нужно было вводить в десятичном представлении по три разряда на число, т.е. 0x85 = 113.

Вот новый вариант, где можно hex'ами побайтно писать:
Код:
string="010500060001"

cnt=${#string}
let 'cnt -= 2'

crc=0xFFFF

for i in `seq 0 2 $cnt`; do

    crc=$(( crc ^ 0x${string:$i:2} ))

    for j in `seq 0 7`; do

        c=$(( crc >> 1 ))

        if [ $(( crc & 1 )) = 1 ]; then					

            let 'c ^= 0xA001'
        fi

        crc=$c

    done

done

printf "0x%04X" "$crc"
echo
Также нужно не забывать, что crc16 отличаются полиномами. Этот алгоритм использует число 0xA001.

Цитата:
а должно быть 0925DD
У crc16 длина crc равна 16 битам, т.е. двум байтам, а не трём.
__________________
Россия навсегда!

Последний раз редактировалось uni; 19.06.2014 в 23:24.
uni вне форума   Ответить с цитированием
 


Здесь присутствуют: 2 (пользователей: 0 , гостей: 2)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 14:26. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Яндекс.Метрика