Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

CRC [D7]


Страницы:   1 2 3

defen ©   (2012-01-03 11:58:00) 

Всем доброго времени суток. Подскажите пожалуйста, как быстро реализовать подсчет CRC для передаваемого пакета? Длинна пакета 136 байт  Заголовок 2 байта, Счетчик 2байта, Длинна пакета 2байта, Данные 128байт. В конце CRC тоже 2 байта. по гуглу нашел только проверку CRC для готового файла, но применить к своей проге не смог, увы... :(


defen   (2012-01-07 11:03:00) [1]

Всем спасибо... Низкий поклон товарищу DVM ©  за оказанную помощь!!!


Sha   (2012-01-06 09:32:00) [2]

Удалено модератором


Sha   (2012-01-06 09:32:00) [3]

> на каждую ячейку массива ( их 134) типа Byte накладывать CRC, а потом склеивать?

мне неизвестны операция "накладывания на ячейку массива" и
операция "склеивания чисел"

> потому как перед отправкой данные из типа Byte переводятся в AnsiSrting...

проще сразу выбрать нужный тип данных

> Как эти значения сложить, чтобы не было ошибок?

очень редко имеет смысл как-то складывать значения CRC,
скорее всего тебе это не надо

или я снова чего-то не понял?

Конечно.
Боюсь показаться кэпом, но тебе, вероятно, надо вычислить CRC буфера,
а не сложить CRC байтов.

> данные в массиве примерно выглядят так
> [255,255,0,1,68,54,16,34,..до..135...,0,0] 135 и 136 будет СRС.

функции вычисления CRC это безразлично

> А отправляются в канал уже вот так 'яя'#1#0'какой-нибудь не читаемый символ'#A7#1D..до..135....#0#0 вот...

зачем отправлять переставленные (#1#0) нечитаемые символы вместо читаемых?

> по сути, весь пакет хранится в байтовом виде в массиве......

А не по сути - в строках?
По сути тебе достаточно, наконец, разобрать работу
любого примера вычисления CRC и отправки данных.


defen   (2012-01-06 08:21:00) [4]

по сути, весь пакет хранится в байтовом виде в массиве......


defen   (2012-01-06 08:06:00) [5]

данные в массиве примерно выглядят так [255,255,0,1,68,54,16,34,..до..135...,0,0] 135 и 136 будет СRС. А отправляются в канал уже вот так 'яя'#1#0'какой-нибудь не читаемый символ'#A7#1D..до..135....#0#0 вот...


defen   (2012-01-06 07:52:00) [6]

или я снова чего-то не понял?


defen   (2012-01-06 07:50:00) [7]

значит получается мне надо на каждую ячейку массива ( их 134) типа Byte накладывать CRC, а потом склеивать? потому как перед отправкой данные из типа Byte переводятся в AnsiSrting... Как эти значения сложить, чтобы не было ошибок?


defen   (2012-01-06 04:12:00) [8]


> я бы предпочел чтобы мне посоветовали, а не взять с помойки
> "любой" код и потом гадать из-за чего чексуммы разные. Т.
> к. алгоритм - это одно, а реализация - другое :)
>
>

Спасибо, Кэп! ))


antonn   (2012-01-05 13:36:00) [9]


> Германн ©   (05.01.12 04:35) [41]
>
>
> > Андреевич   (04.01.12 21:06) [40]
> >
> > значит мне
> >
>
> Ну и зачем тебе понадобился ещё один ник на ДМ?

я уже говорил, что это не надобность.


> RWolf ©   (05.01.12 09:26) [43]
>
> не надо ничего создавать, инет завален алгоритмами расчёта
> crc любой разновидности на любых данных.

я бы предпочел чтобы мне посоветовали, а не взять с помойки "любой" код и потом гадать из-за чего чексуммы разные. Т.к. алгоритм - это одно, а реализация - другое :)


DVM   (2012-01-05 11:07:00) [10]


> defen ©   (05.01.12 09:01) [42]

Вообще говоря тебе уже дали код, да и в интернет этого добра навалом. Могу дать еще:

http://dvmuratov.narod.ru/crc.pas

там для твоей задачи вероятно лучше всего подходит этот:

////////////////////////////////////////////////////////////////////////////////
//  Имя алгоритма               : CRC16-XMODEM (?????)                        //
//  Стандарты                   : ITU-T V.41                                  //
//  Где используется            : XMODEM, PPP                                 //
//  Иннициализирующее значение  : $0000                                       //
//  Выходная XOR маска          : $0000                                       //
//  Входные данные              : не инвертируются                            //
//  Выходной CRC перед XOR      : не инвертируется                            //
//  Значение полинома           : $1021 (Зеркальное значение = $8408)         //
//  Полином                     : x^16 + x^15 + x^2 + 1                       //
//  Значение для '123456789'    : $31C3                                       //
////////////////////////////////////////////////////////////////////////////////


Anatoly Podgoretsky   (2012-01-05 11:05:00) [11]


>  Работает и Гипер Терминал (ZModem) но он до ужаса глючный,
>  поэтому я пытаюсь создать что-то своё

И при этом у тебя проблема с CRC, не в состояние восспользоваться готовыми.


Anatoly Podgoretsky   (2012-01-05 11:04:00) [12]


> народ, прекратите эту вербальную резню. мне нужно было организовать
> наложение CRC16 на строку (переменная Data_Paket_For_Send,
>  File_Name :AnsiString;)

Тебя уже несколько раз спросили, какой именно CRC нужен, и привели несколько различных реализаций. Может за тебя программу надо написать?


defen   (2012-01-05 10:50:00) [13]


> не надо ничего создавать, инет завален алгоритмами расчёта
> crc любой разновидности на любых данных.

спасибо за пост в тему...


RWolf   (2012-01-05 09:26:00) [14]

не надо ничего создавать, инет завален алгоритмами расчёта crc любой разновидности на любых данных.


defen   (2012-01-05 09:01:00) [15]

народ, прекратите эту вербальную резню. мне нужно было организовать наложение CRC16 на строку (переменная Data_Paket_For_Send, File_Name :AnsiString;) см [27].
Передаются данные через модем. В настоящий момент по протоколу Kermit. Работает и Гипер Терминал (ZModem) но он до ужаса глючный, поэтому я пытаюсь создать что-то своё... Если есть вопросы, задавайте пожалуйста без сарказма... на что смогу, отвечу.


Германн   (2012-01-05 04:35:00) [16]


> Андреевич   (04.01.12 21:06) [40]
>
> значит мне
>

Ну и зачем тебе понадобился ещё один ник на ДМ?


Андреевич   (2012-01-04 21:06:00) [17]

значит мне


DVM   (2012-01-04 17:32:00) [18]


>  Андреевич   (04.01.12 16:37) [38]
>
>
> > фраза была адресована не тебе.
>
> в кому?

Там написано было кому - antonn ©   (04.01.12 12:51) [31].


Андреевич   (2012-01-04 16:37:00) [19]


> фраза была адресована не тебе.

в кому?


DVM   (2012-01-04 16:25:00) [20]


> Андреевич   (04.01.12 15:37) [34]


> ну и еще вырву из контекста:

фраза была адресована не тебе.


> Это был ответ или оффтоп?

у меня к [1] вопросов нет. Хотя нет, есть один, что за метод вычисления CRC там? Какой полином? Желательно использовать методы рассчета, которые можно идентифицировать, иначе потом очень сложно будет с совместимостью и поддержкой.


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо