реклама на сайте
подробности

 
 
> crc 8, Нужна помощь
nokepp
сообщение Jan 28 2011, 16:11
Сообщение #1


Участник
*

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



Все добрый день! необходимо написать программу, простенькую, для расчета контрольной суммы по алгоритму crc8.Собственно говоря, я в С++ только только начал разбираться smile3046.gif , но вот появилась такая задача и можно сказать зашился. Хочу, что бы просто в командной строке вводишь данные и сразу выдает ответ. Данные 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 со значением производителя wacko.gif . Я писал им support 1111493779.gif , но они отказываются мне помогать.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
nokepp
сообщение Feb 7 2011, 16:08
Сообщение #2


Участник
*

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



ну да...данные вбиваются с клавиатуры. Так точнее мне будет понятен режим работы устройства. А для этого необходимо с ним пообщаться. ))
Конечно, я бы хотел снабдить терминал уже готовым калькулятором crc, но пока со своими навыками программирования, думаю это задача пока для меня неразрешима)

Сообщение отредактировал nokepp - Feb 7 2011, 16:09
Go to the top of the page
 
+Quote Post
Artem_Petrik
сообщение Feb 7 2011, 16:15
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 443
Регистрация: 22-07-06
Из: Украина, г. Харьков
Пользователь №: 19 006



Цитата(nokepp @ Feb 7 2011, 18:08) *
ну да...данные вбиваются с клавиатуры. Так точнее мне будет понятен режим работы устройства. А для этого необходимо с ним пообщаться. ))
Конечно, я бы хотел снабдить терминал уже готовым калькулятором crc, но пока со своими навыками программирования, думаю это задача пока для меня неразрешима)

Чтож, по поводу ввода с клавиатуры могу только отослать к чтению буваря. Это элементарнейшая вещь, и разжевывать ее нет никакого желания.

Посоветую только не вводить сразу многобайтные значения типа 0xed13a632, а делать ввод побайтно: 0x32 0xa6 0x13 0xed. Соответственно первый байт ложить в buf[0], второй в buf[1] и так далее.


Go to the top of the page
 
+Quote Post
Dnepr33
сообщение Feb 7 2011, 17:15
Сообщение #4


Участник
*

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



Цитата(Artem_Petrik @ Feb 7 2011, 18:15) *
Чтож, по поводу ввода с клавиатуры могу только отослать к чтению буваря. Это элементарнейшая вещь, и разжевывать ее нет никакого желания.

Посоветую только не вводить сразу многобайтные значения типа 0xed13a632, а делать ввод побайтно: 0x32 0xa6 0x13 0xed. Соответственно первый байт ложить в buf[0], второй в buf[1] и так далее.


На мой взгляд надо взять для начала небольшой компилятор - напр. Borland-C++ (даже 1.0) sm.gif
и поработать с обработкой массива
char ms[] = {0x01, 0x04, 0x55 . . . . . . .};
int i, sz_ms = sizeof(ms);
for(i=0;i<sz_ms;i++) printf("%.2X", ms[i]);
calc_CRC8(ms, sz_ms);
А если это Java или нечто сверхвысокоуровневое - можно человеку только посочувствовать sm.gif
Ну а ввод с терминала - там еще упр.последовательности пролетают sm.gif
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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
- - DpInRock   Я бы на вашем месте попытался бы разобраться что т...   Jan 31 2011, 14:36
|- - nokepp   Цитата(DpInRock @ Jan 31 2011, 17:36) Я б...   Jan 31 2011, 15:48
|- - Палыч   Цитата(nokepp @ Jan 31 2011, 18:48) ... и...   Jan 31 2011, 16:18
|- - Dnepr33   Цитата(nokepp @ Jan 31 2011, 17:48) Сомне...   Feb 1 2011, 17:23
- - ViKo   Мне попадался полином x^8 + x^2 + x + 1 (CRC-8-Dal...   Feb 1 2011, 09:21
- - 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


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 12:13
Рейтинг@Mail.ru


Страница сгенерированна за 0.01439 секунд с 7
ELECTRONIX ©2004-2016