|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
17.11.2021, 21:43 | #91 | |||
Форумчанин
Регистрация: 12.03.2019
Сообщений: 376
|
Да пересмотрел и для CRC8 и для CRC15 и для CRC16 везде 7 , один бит теряется?
Цитата:
Цитата:
Код:
Далее, за место функциий function CRC16(P: PChar; Len: Word; function CRC15(P: PChar; Len: Word; function CRC8(P: PChar; Len: Word; Одну универсальную для всех эту: Код:
function CRC5MPT1327(P: PChar; Len: Word; skip_: Integer): Word; begin Result := CRCN(P, Len, skip_ , $6815, 0, 1, False, False); end; function CRC8(P: PChar; Len: Word; skip_: Integer): Word; begin Result := CRCN(P, Len, skip_ , $7, 0, 0, False, False); end; function CRC115(P: PChar; Len: Word; skip_: Integer): Word; begin Result := CRCN(P, Len, skip_ , $4599, 0, 0, False, False); end; То есть теперь для всех CRC теперь так, я правильно понял? Цитата:
А тема, думаю интересная и крайне полезная. И кому то надо начинать. Мы первые будем ! В остальном надо проверять , согласен , сейчас буду проверять, тестовый файл есть, таблица есть. Сейчас и попробуем. Последний раз редактировалось BDA; 19.11.2021 в 18:54. |
|||
17.11.2021, 22:17 | #92 | |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,291
|
Цитата:
Да. Да. Нет. Не хватает значения параметра N при вызове CRCN. Нужно после параметра skip_ еще вписать число width алгоритма.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
|
17.11.2021, 22:24 | #93 |
Форумчанин
Регистрация: 12.03.2019
Сообщений: 376
|
Попробовал в тестовой программе универсальную функцию как выше и компилятор сразу в ошибку при компиляции. как я понял ему. не нравится что из WORD в boolean , короче универсальная не подходит пока, что то надо дополнять. или менять.
|
17.11.2021, 22:37 | #94 | |
Форумчанин
Регистрация: 12.03.2019
Сообщений: 376
|
Цитата:
Result := CRCN(P, Len, skip_ ,15,$1021, 0, 0, true, true); Result := CRCN(P, Len, skip_ ,16,$1021, 0, 0, true, true); Result := CRCN(P, Len, skip_ ,8,$ 7, 0, 0, false, false); Ошибка исправлена, остаётся добавить в программу CRC8 и прогнать тестовый файл и сравнить с таблицей контрольную сумму. Гигантская работа предстоит. но истина дороже, быть первыми обязывает. Поехали ! |
|
17.11.2021, 23:17 | #95 | |
Форумчанин
Регистрация: 12.03.2019
Сообщений: 376
|
Цитата:
CRC8 всё сходится с таблицей контрольная сумма А0 , в нашем коде и в таблице. в HxD вообще нет CRC8 софт тритона выдаёт D7, прога наша А0, таблица А0 , тестовый файл один. Получается два разных результата, кому верить ? |
|
18.11.2021, 00:33 | #96 |
Форумчанин
Регистрация: 12.03.2019
Сообщений: 376
|
BDA? Вас можно поздравить ! проверено все 23 варианта CRC16, всё отлично, проверены все варианты CRC8 10 штук, всё отлично, всё сходится с таблицей.
Одно только расхождение по CRC8, как писал в HxD нет CRC8, в Тритоне выходит D&, в таблице и у нас A0. CRC15 не проверено, по нечем, но думаю всё окей должно быть. Поздравляю Вас ! |
18.11.2021, 01:31 | #97 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,291
|
Да что-то Тритону не верю
crccalc выдал A0, HxD выдал A0 (если выбрать из списка алгоритмов "Заданный CRC" и задать настройки для CRC8).
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
18.11.2021, 01:35 | #98 | |
Форумчанин
Регистрация: 12.03.2019
Сообщений: 376
|
Цитата:
В остальном , всё отлично. Не нашёл калькулятора-онлайн для CRC15, от слова совсем. Видимо совсем не популярный алгоритм. инфы по нему 0. |
|
18.11.2021, 01:44 | #99 | |
Форумчанин
Регистрация: 12.03.2019
Сообщений: 376
|
Цитата:
Что бывает контрольная сумма, хранится. в середине файла (это как?. я такого не встречал) и при подсчёте . бывает что надо пропустить два байта. А у нас в программе пропускается только один байт. Отсюдо вопрос. можно сделать чтоб. когда надо. один байт пропускал. а когда надо. то два байта пропустить. Вот думаю как и можно ли реализовать это? Наверное надо в функцию вводить переменную Byt типа Word, далее новый едит, это тоже понятно. А вот как организовать в функцию, чтоб когда надо один байт (по старому), а когда надо то два байта. Как то условие новое надо делать? Вот думаю как этот момент реализовать, помозговал, думаю прав сокурсник, нужно и так и так. function CRC16(P: PChar; Len, BYT: Word; skip_ : Integer; Poly, Init, XorOut: Word; RefIn, RefOut: Boolean): Word; // новая переменная типа word для двух байт for i := 0 to Len - 1 do begin if i = $2C then continue; for i := 0 to Len - 1 do begin if i = skip_i then continue; Последний раз редактировалось sergey.serg-72; 18.11.2021 в 01:47. |
|
18.11.2021, 04:34 | #100 |
Форумчанин
Регистрация: 12.03.2019
Сообщений: 376
|
Сделал так : function CRCN(P: PChar; Len: Word; skip_i , skip_2 : Integer; N, Poly, Init, XorOut: Word; RefIn, RefOut: Boolean): Word; // добавил в функцию новую переменную skip_2
далее : if i = skip_i then Continue; if i = skip_2 then Continue; далее : function CRC16CCITT(P: PChar; Len: Word; skip_i ,skip_2 : Integer): Word; begin Result := CRCN(P, Len, skip_i , skip_2 ,16, $1021, $FFFF, 0, False, False); end; далее ; procedure TForm1.Button2Click(Sender: TObject); var addr1, addr2, addr3,skip_i , skip_2, buf_len: Integer; далее : skip_i := StrToIntDef('$' + Edit1.Text, -1); skip_2 := StrToIntDef('$' + Edit2.Text, -1); // новый едит далее : crc :=CRC16CCITT(PChar(buffer), buf_len, skip_i - addr1 , skip_2 - addr1 ); Компилируется но результат стал неверным . где то ошибка ? Последний раз редактировалось sergey.serg-72; 18.11.2021 в 04:38. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Opendialog завис | DimOn4Ik | Общие вопросы Delphi | 12 | 02.11.2018 16:08 |
Реализация суммы в простом варианте. | Mariolka | PHP | 8 | 10.11.2016 15:50 |
С++ сортировка в текстовом файле. (Задание на курсовик никак не получается) | Evg888 | Помощь студентам | 1 | 02.06.2012 19:37 |
Житейская задачка о простом копировании | mephist | Помощь студентам | 11 | 16.05.2009 20:42 |