|
crc 8, Нужна помощь |
|
|
|
Jan 28 2011, 16:11
|
Участник

Группа: Участник
Сообщений: 27
Регистрация: 24-11-10
Пользователь №: 61 153

|
Все добрый день! необходимо написать программу, простенькую, для расчета контрольной суммы по алгоритму crc8.Собственно говоря, я в С++ только только начал разбираться  , но вот появилась такая задача и можно сказать зашился. Хочу, что бы просто в командной строке вводишь данные и сразу выдает ответ. Данные hex. Алгоритм программы таков public class CRC8 { private static int getCrc(int oneByte, int crc){ int i = oneByte ^ crc; crc = 0; if((i & 0x01)>0) crc ^= 0x5e; if((i & 0x02)>0) crc ^= 0xbc; if((i & 0x04)>0) crc ^= 0x61; if((i & 0x08)>0) crc ^= 0xc2; if((i & 0x10)>0) crc ^= 0x9d; if((i & 0x20)>0) crc ^= 0x23; if((i & 0x40)>0) crc ^= 0x46; if((i & 0x80)>0) crc ^= 0x8c; return crc; } byte[] bytes = {(byte)0x31,(byte)0xFF,(byte)0x06}; System.out.printf("crc=%X\n",CRC8.getCrc4Array(bytes)); Сразу скажу, что возможно он отличается от привычных всем, ибо этот алгоритм разработан производителями переферийнного устройства и, подсчитывая crc в ручную, у меня не совпадало значение моего crc со значением производителя  . Я писал им support  , но они отказываются мне помогать.
|
|
|
|
|
 |
Ответов
|
Jan 31 2011, 15:48
|
Участник

Группа: Участник
Сообщений: 27
Регистрация: 24-11-10
Пользователь №: 61 153

|
Цитата(DpInRock @ Jan 31 2011, 17:36)  Я бы на вашем месте попытался бы разобраться что такое CRC8 вообще. Ибо вы не имеете об этом ни малейшего представления. Т.е. пишите программу, которая слышала звон. Вот рассмотрите данные вам примеры у поинтересуйтесь, чего это оне все имеют некий счетчик байт... И все работают в каком-то цикле... Зачем? Вот в википедии можно подчерпнуть как знания, так и исходные коды на всех языках мира. Сомневаюсь, что на всех языках мира. Я увидел только на СИ...В принципе, как я считаю, алгоритм исчесления я понял. Всю информацию предстваляем как огромное число в бинарном ввиде и делим столбиком, как в школе на используемый полином,ну т.е. не на полином, а на тоже бинарное число, интерпретированное как полином..Остаток от деления и есть искомое crc8. Честно вам скажу, я это делал на бумаге, с небольшими числами. Но когда вижу, такой алгоритм в СИ, почему -то не могу разобраться, что к чему. Я только начал изучать языки и понимаю, что взялся за слишком серьезную задачу для своего уровня программирования. Поэтому прошу помочь мне для ее решения. Ведь чувствую, что близок к завершению
|
|
|
|
|
Feb 1 2011, 17:23
|
Участник

Группа: Участник
Сообщений: 22
Регистрация: 1-02-11
Из: Днепропетровск
Пользователь №: 62 622

|
Цитата(nokepp @ Jan 31 2011, 17:48)  Сомневаюсь, что на всех языках мира. Я увидел только на СИ...В принципе, как я считаю, алгоритм исчесления я понял. Всю информацию предстваляем как огромное число в бинарном ввиде и делим столбиком, как в школе на используемый полином,ну т.е. не на полином, а на тоже бинарное число, интерпретированное как полином..Остаток от деления и есть искомое crc8. Честно вам скажу, я это делал на бумаге, с небольшими числами. Но когда вижу, такой алгоритм в СИ, почему -то не могу разобраться, что к чему. Я только начал изучать языки и понимаю, что взялся за слишком серьезную задачу для своего уровня программирования. Поэтому прошу помочь мне для ее решения. Ведь чувствую, что близок к завершению Вы не представляете, насколько усложнили себе понимание подсчета CRC ! Посмотрите, как это организуется аппаратно, в виде сдвигового регистра с обратными связями - будете смеяться, насколько все просто ! А для "долбания" указанного вами алгоритма предлагаю взять "нормальные" - из app/notes - и проверить их на ваших тестовых последовательностях - в них могли быть элементарно ошибки, а вы будете долбить головой стену ! ps - имеет значение порядок следования байтов, порядок "сдвига" битов, расположение тетрад в байте ! сделайте сперва работающую правильно модель, а затем бодайтесь с этим конкретным алгоритмом.
|
|
|
|
Сообщений в этой теме
nokepp crc 8 Jan 28 2011, 16:11 Сергей Борщ QUOTE (nokepp @ Jan 28 2011, 18:11) и, по... Jan 28 2011, 16:44 zltigo QUOTE (nokepp @ Jan 28 2011, 19:11) Сразу... Jan 28 2011, 19:23 XVR Так, мимоходом -
ЦитатаСобственно говоря, я в С++ ... Jan 31 2011, 09:28 nokepp В общем вот что у меня получилось:
#include <c... Jan 31 2011, 10:25 Artem_Petrik Цитата(nokepp @ Jan 31 2011, 12:25) ...
u... Jan 31 2011, 20:10  nokepp Цитата(Artem_Petrik @ Jan 31 2011, 23:10)... Feb 7 2011, 15:53   Палыч Цитата(nokepp @ Feb 7 2011, 18:53) Но не ... Feb 7 2011, 16:01    nokepp Цитата(Палыч @ Feb 7 2011, 19:01) Вроде, ... Feb 7 2011, 16:03     defunct Цитата(nokepp @ Feb 7 2011, 18:03) переме... Feb 7 2011, 16:13      nokepp Цитата(defunct @ Feb 7 2011, 19:13) Вы ча... Feb 7 2011, 16:20       Палыч Цитата(nokepp @ Feb 7 2011, 19:20) buf[i]... Feb 7 2011, 16:26       defunct Цитата(nokepp @ Feb 7 2011, 18:20) да нет... Feb 7 2011, 22:58   Artem_Petrik Цитата(nokepp @ Feb 7 2011, 17:53) Как я ... Feb 7 2011, 16:04  Палыч Цитата(nokepp @ Jan 31 2011, 18:48) ... и... Jan 31 2011, 16:18 ViKo Мне попадался полином x^8 + x^2 + x + 1 (CRC-8-Dal... Feb 1 2011, 09:21 nokepp ну да...данные вбиваются с клавиатуры. Так точнее ... Feb 7 2011, 16:08 Artem_Petrik Цитата(nokepp @ Feb 7 2011, 18:08) ну да.... Feb 7 2011, 16:15  Dnepr33 Цитата(Artem_Petrik @ Feb 7 2011, 18:15) ... Feb 7 2011, 17:15 nokepp Вроде подразобрался, но все равно возникают трудно... Feb 10 2011, 15:41 Палыч Цитата(nokepp @ Feb 10 2011, 18:41) но по... Feb 10 2011, 15:47 Artem_Petrik надо не Кодfor(i=0;i++;i<8) а Кодfor... Feb 10 2011, 17:18 nokepp Всем спасибо огромное за терпение и помощь. Програ... Feb 11 2011, 09:49
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|