Например TDA7294

Форум РадиоКот • Просмотр темы - расчет контрольной суммы (требуется помощь)
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Сб дек 27, 2025 06:33:44

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 318 ]     ... , , , 8, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: расчет контрольной суммы (требуется помощь)
СообщениеДобавлено: Вт авг 26, 2025 22:58:16 
Встал на лапы

Зарегистрирован: Сб авг 09, 2025 22:19:34
Сообщений: 114
Рейтинг сообщения: 0
Ну, вот и всё. Задача решена. Был не прав: контрольки всего 2: первая на заголовке, как описано выше, вторая на данные, считается от 0000. Вот результаты расчёта, алгоритм, внезапно, простой, но со своей изюминкой. Ниже исходные данные и рассчитанная сумма после ??. Видно, что в посылке она идёт "вперёд ногами", т.е. little endian. Было интересно размять мозги, всем спасибо, все свободны.
Код:
Загружено 57 пакетов.
1B 02 80 ! 62 : [FF 03 00 C0] : C9 72 ?? 72C9
1B 02 80 ! 62 : [00 03 00 C0] : C9 72 ?? 72C9
1B 02 04 ! DE : [FF 00 00 C0] : C0 7E ?? 7EC0
1B 02 04 ! DE : [00 00 00 C0] : C0 7E ?? 7EC0
1B 02 04 ! DE : [01 00 00 FF] : 04 FA ?? FA04
1B 02 04 ! DE : [02 00 00 0A] : 12 E1 ?? E112
1B 02 05 ! DD : [03 00 00 0B 00] : 25 CC ?? CC25
1B 02 09 ! D9 : [04 00 00 0B 03 7F F1 6F 00] : 28 E4 ?? E428
1B 02 05 ! DD : [05 00 00 0F 00] : 37 B4 ?? B437
1B 02 06 ! DC : [06 00 00 60 00 00] : 45 54 ?? 5445
1B 02 0D ! D5 : [07 00 00 60 03 00 E7 07 05 1C 14 16 0A] : B7 99 ?? 99B7
1B 02 04 ! DE : [08 00 00 C0] : E0 56 ?? 56E0
1B 02 04 ! DE : [09 00 00 C0] : E4 51 ?? 51E4
1B 02 04 ! DE : [0A 00 00 C0] : E8 4C ?? 4CE8
1B 02 04 ! DE : [0B 00 00 C0] : EC 47 ?? 47EC
1B 02 04 ! DE : [0C 00 00 C0] : F0 42 ?? 42F0
1B 02 04 ! DE : [0D 00 00 C0] : F4 3D ?? 3DF4
1B 02 04 ! DE : [0E 00 00 C0] : F8 38 ?? 38F8
1B 02 04 ! DE : [0F 00 00 C0] : FC 33 ?? 33FC
1B 02 04 ! DE : [10 00 00 C0] : 01 2E ?? 2E01
1B 02 04 ! DE : [11 00 00 C0] : 05 29 ?? 2905
1B 02 04 ! DE : [12 00 00 C0] : 09 24 ?? 2409
1B 02 04 ! DE : [13 00 00 C0] : 0D 1F ?? 1F0D
1B 02 06 ! DC : [14 00 00 59 00 00] : 84 0E ?? 0E84
1B 02 06 ! DC : [15 00 00 58 00 00] : 87 0B ?? 0B87
1B 02 06 ! DC : [16 00 00 5A 00 00] : 93 FB ?? FB93
1B 02 04 ! DE : [17 00 00 10] : 6C 6C ?? 6C6C
1B 02 04 ! DE : [18 00 00 30] : 90 27 ?? 2790
1B 02 06 ! DC : [19 00 00 68 00 00] : CF AE ?? AECF
1B 02 04 ! DE : [1A 00 00 33] : 9B 17 ?? 179B
1B 02 0C ! D6 : [1B 00 00 6A 00 00 00 00 00 00 00 00] : 03 77 ?? 7703
1B 02 06 ! DC : [1C 00 00 69 00 00] : E4 95 ?? 95E4
1B 02 04 ! DE : [1D 00 00 C0] : 35 EC ?? EC35
1B 02 04 ! DE : [1E 00 00 C0] : 39 E7 ?? E739
1B 02 04 ! DE : [1F 00 00 C0] : 3D E2 ?? E23D
1B 02 04 ! DE : [20 00 00 30] : B0 FE ?? FEB0
1B 02 2D ! B5 : [21 00 00 69 A5 69 00 00 00 00 00 4C 04 00 00 4C 04 00 00 4B 06 00 00 00 01 FF FF 7F FE 00 00 00 01 FF FF 7F FE 00 00 00 02 FF FF 7F FE] : 68 8C ?? 8C68
1B 02 04 ! DE : [22 00 00 7A] : 03 60 ?? 6003
1B 02 04 ! DE : [23 00 00 30] : BC EF ?? EFBC
1B 02 2D ! B5 : [24 00 00 69 A5 69 00 00 00 00 00 4C 04 00 00 4C 04 00 00 4B 06 00 00 00 01 FF FF 7F FE 00 00 00 01 FF FF 7F FE 00 00 00 02 FF FF 7F FE] : EF 02 ?? 02EF
1B 02 04 ! DE : [25 00 00 7A] : 0F 51 ?? 510F
1B 02 04 ! DE : [26 00 00 30] : C8 E0 ?? E0C8
1B 02 2D ! B5 : [27 00 00 69 A5 69 00 00 00 00 00 4C 04 00 00 4C 04 00 00 4B 06 00 00 00 01 FF FF 7F FE 00 00 00 01 FF FF 7F FE 00 00 00 02 FF FF 7F FE] : 77 77 ?? 7777
1B 02 04 ! DE : [28 00 00 7A] : 1B 42 ?? 421B
1B 02 04 ! DE : [29 00 00 30] : D4 D1 ?? D1D4
1B 02 2D ! B5 : [2A 00 00 69 A5 69 00 00 00 00 00 4C 04 00 00 4C 04 00 00 4B 06 00 00 00 01 FF FF 7F FE 00 00 00 01 FF FF 7F FE 00 00 00 02 FF FF 7F FE] : FE EC ?? ECFE
1B 02 04 ! DE : [2B 00 00 7A] : 27 33 ?? 3327
1B 02 04 ! DE : [2C 00 00 30] : E0 C2 ?? C2E0
1B 02 2D ! B5 : [2D 00 00 69 A5 69 00 00 00 00 00 4C 04 00 00 4C 04 00 00 4B 06 00 00 00 01 FF FF 7F FE 00 00 00 01 FF FF 7F FE 00 00 00 02 FF FF 7F FE] : 86 62 ?? 6286
1B 02 04 ! DE : [2E 00 00 7A] : 33 24 ?? 2433
1B 02 04 ! DE : [2F 00 00 30] : EC B3 ?? B3EC
1B 02 2D ! B5 : [30 00 00 69 A5 69 00 00 00 00 00 4C 04 00 00 4C 04 00 00 4B 06 00 00 00 01 FF FF 7F FE 00 00 00 01 FF FF 7F FE 00 00 00 02 FF FF 7F FE] : 0E D7 ?? D70E
1B 02 04 ! DE : [31 00 00 7A] : 3F 15 ?? 153F
1B 02 04 ! DE : [32 00 00 30] : F8 A4 ?? A4F8
1B 02 2D ! B5 : [33 00 00 69 A5 69 00 00 00 00 00 4C 04 00 00 4C 04 00 00 4B 06 00 00 00 01 FF FF 7F FE 00 00 00 01 FF FF 7F FE 00 00 00 02 FF FF 7F FE] : 95 4D ?? 4D95
1B 02 04 ! DE : [34 00 00 7A] : 4B 06 ?? 064B
1B 02 04 ! DE : [35 00 00 30] : 05 95 ?? 9505

ВЫ говорите , что шахматная задача - решена.
алгоритм, внезапно, простой, но со своей изюминкой.
прекрасно...
могу я чисто практически применить Ваш алгоритм


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: расчет контрольной суммы (требуется помощь)
СообщениеДобавлено: Ср авг 27, 2025 00:32:49 
Друг Кота
Аватар пользователя

Карма: 59
Рейтинг сообщений: 1575
Зарегистрирован: Вт окт 22, 2013 04:37:23
Сообщений: 3421
Откуда: Казань
Рейтинг сообщения: 3
HardWareMan, спорим теперь Вам придётся ещё написать и программку, чтобы она нужные команды ТС по найденному алгоритму паковала и в хитрый аппарат отправляла?

_________________
Платы для HLDI - установки лазерной засветки фоторезиста.
Фоторезисты Ordyl Alpha 350 и AM 140.
Жидкое олово для лужения плат (видео) - самое лучшее и только у меня.
Паяльная маска XV501T-4 и KSM-S6189 (5 цветов).
Заказ печатных плат - pcbsmac@gmail.com


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: расчет контрольной суммы (требуется помощь)
СообщениеДобавлено: Ср авг 27, 2025 07:14:32 
Мучитель микросхем
Аватар пользователя

Карма: 8
Рейтинг сообщений: 105
Зарегистрирован: Ср сен 02, 2015 07:47:20
Сообщений: 420
Рейтинг сообщения: 1
Алгоритм расчёта контрольной суммы заголовка прост: берём FF и вычитаем побайтно SOF, EP и SIZE. Расчёт контрольной суммы блока данных производится по такому алгоритму (писал на память, не компилировал, могут быть синтаксические ошибки):
Код:
uint16_t DoCheckSum( uint8_t *Buf, uint16_t Size )
{   // Локальные переменные
    uint16_t Cnt,Sum,Tmp1,Tmp2;
    // Инит
    Sum = 0; Tmp1 = 0; Tmp2 = 0;
    // Если размер больше 0
    if (Size > 0)
    {   // Цикл расчёта
        Cnt = 0;
        while (Cnt < Size)
        {   // Tmp1
            Tmp1 += *(Buf); if (Tmp1 > 0x00FE) { Tmp1 += 0xFF01; }
            // Sum
            Sum += Tmp1; if (Sum > 0x00FE) { Sum += 0xFF01; }
            // Следующий байт
            Buf++; Cnt++;
        }
        // Финализация
        Tmp2 = Tmp1 + Sum; if (Tmp2 > 0x00FE) { Tmp2 += 0xFF01; }
        Tmp2 ^= 0x00FF;
        Tmp1 += Tmp2; if (Tmp1 > 0x00FE) { Tmp1 += 0xFF01; }
        Tmp1 ^= 0x00FF;
        Sum = (Tmp1 & 0x00FF) | ((Tmp2 << 8) & 0xFF00);
    }
    // Результат
    return Sum;
}

Ну и немного пошаговых примеров под спойлером, в том числе и коллизионные, для интересующихся почему так происходит.
СпойлерКоллизионные пакеты:
Код:
Пакет:
1B 02 80 : 62 [FF 03 00 C0] : C9 72
Заголовок:
1B > HSUM: FF - 1B = E4
02 > HSUM: E4 - 02 = E2
80 > HSUM: E2 - 80 = 62
62 > HSUM: ==========^^
Данные:
FF > TMP1: 0000 + 00FF = 00FF (00FF > 00FE) ? 00FF + FF01 = 0000
     SUM:  0000 + 0000 = 0000 (0000 > 00FE) ?
03 > TMP1: 0000 + 0003 = 0003 (0003 > 00FE) ?
     SUM:  0000 + 0003 = 0003 (0003 > 00FE) ?
00 > TMP1: 0003 + 0000 = 0003 (0003 > 00FE) ?
     SUM:  0003 + 0003 = 0006 (0006 > 00FE) ?
C0 > TMP1: 0003 + 00C0 = 00C3 (00C3 > 00FE) ?
     SUM:  0006 + 00C3 = 00C9 (00C9 > 00FE) ?
Финализация:
     TMP2: 00C3 + 00C9 = 018C (018C > 00FE) ? 018C + FF01 = 008D
           008D ^ 00FF = 0072
     TMP1: 0072 + 00C3 = 0135 (0135 > 00FE) ? 0135 + FF01 = 0036
           0036 ^ 00FF = 00C9
     SUM:  (00C9 & 00FF) | ((0072 << 8) & FF00) = 72C9
Результат:
CRC: C9 72 == SUM: C9 72

Пакет:
1B 02 80 : 62 [00 03 00 C0] : C9 72
Заголовок:
1B > HSUM: FF - 1B = E4
02 > HSUM: E4 - 02 = E2
80 > HSUM: E2 - 80 = 62
62 > HSUM: ==========^^
Данные:
00 > TMP1: 0000 + 0000 = 0000 (0000 > 00FE) ?
     SUM:  0000 + 0000 = 0000 (0000 > 00FE) ?
03 > TMP1: 0000 + 0003 = 0003 (0003 > 00FE) ?
     SUM:  0000 + 0003 = 0003 (0003 > 00FE) ?
00 > TMP1: 0003 + 0000 = 0003 (0003 > 00FE) ?
     SUM:  0003 + 0003 = 0006 (0006 > 00FE) ?
C0 > TMP1: 0003 + 00C0 = 00C3 (00C3 > 00FE) ?
     SUM:  0006 + 00C3 = 00C9 (00C9 > 00FE) ?
Финализация:
     TMP2: 00C3 + 00C9 = 018C (018C > 00FE) ? 018C + FF01 = 008D
           008D ^ 00FF = 0072
     TMP1: 0072 + 00C3 = 0135 (0135 > 00FE) ? 0135 + FF01 = 0036
           0036 ^ 00FF = 00C9
     SUM:  (00C9 & 00FF) | ((0072 << 8) & FF00) = 72C9
Результат:
CRC: C9 72 == SUM: C9 72

Ещё коллизионные пакеты:
Код:
Пакет:
1B 02 04 : DE [FF 00 00 C0] : C0 7E
Заголовок:
1B > HSUM: FF - 1B = E4
02 > HSUM: E4 - 02 = E2
04 > HSUM: E2 - 04 = DE
DE > HSUM: ==========^^
Данные:
FF > TMP1: 0000 + 00FF = 00FF (00FF > 00FE) ? 00FF + FF01 = 0000
     SUM:  0000 + 0000 = 0000 (0000 > 00FE) ?
00 > TMP1: 0000 + 0000 = 0000 (0000 > 00FE) ?
     SUM:  0000 + 0000 = 0000 (0000 > 00FE) ?
00 > TMP1: 0000 + 0000 = 0000 (0000 > 00FE) ?
     SUM:  0000 + 0000 = 0000 (0000 > 00FE) ?
C0 > TMP1: 0000 + 00C0 = 00C0 (00C0 > 00FE) ?
     SUM:  0000 + 00C0 = 00C0 (00C0 > 00FE) ?
Финализация:
     TMP2: 00C0 + 00C0 = 0180 (0180 > 00FE) ? 0180 + FF01 = 0081
           0081 ^ 00FF = 007E
     TMP1: 007E + 00C0 = 013E (013E > 00FE) ? 013E + FF01 = 003F
           003F ^ 00FF = 00C0
     SUM:  (00C0 & 00FF) | ((007E << 8) & FF00) = 7EC0
Результат:
CRC: C0 7E == SUM: C0 7E

Пакет:
1B 02 04 : DE [00 00 00 C0] : C0 7E
Заголовок:
1B > HSUM: FF - 1B = E4
02 > HSUM: E4 - 02 = E2
04 > HSUM: E2 - 04 = DE
DE > HSUM: ==========^^
Данные:
00 > TMP1: 0000 + 0000 = 0000 (0000 > 00FE) ?
     SUM:  0000 + 0000 = 0000 (0000 > 00FE) ?
00 > TMP1: 0000 + 0000 = 0000 (0000 > 00FE) ?
     SUM:  0000 + 0000 = 0000 (0000 > 00FE) ?
00 > TMP1: 0000 + 0000 = 0000 (0000 > 00FE) ?
     SUM:  0000 + 0000 = 0000 (0000 > 00FE) ?
C0 > TMP1: 0000 + 00C0 = 00C0 (00C0 > 00FE) ?
     SUM:  0000 + 00C0 = 00C0 (00C0 > 00FE) ?
Финализация:
     TMP2: 00C0 + 00C0 = 0180 (0180 > 00FE) ? 0180 + FF01 = 0081
           0081 ^ 00FF = 007E
     TMP1: 007E + 00C0 = 013E (013E > 00FE) ? 013E + FF01 = 003F
           003F ^ 00FF = 00C0
     SUM:  (00C0 & 00FF) | ((007E << 8) & FF00) = 7EC0
Результат:
CRC: C0 7E == SUM: C0 7E

Длинный пакет:
Код:
Пакет:
1B 02 2D : B5 [21 00 00 69 A5 69 00 00 00 00 00 4C 04 00 00 4C 04 00 00 4B 06 00 00 00 01 FF FF 7F FE 00 00 00 01 FF FF 7F FE 00 00 00 02 FF FF 7F FE] : 68 8C
Заголовок:
1B > HSUM: FF - 1B = E4
02 > HSUM: E4 - 02 = E2
2D > HSUM: E2 - 2D = B5
B5 > HSUM: ==========^^
Данные:
21 > TMP1: 0000 + 0021 = 0021 (0021 > 00FE) ?
     SUM:  0000 + 0021 = 0021 (0021 > 00FE) ?
00 > TMP1: 0021 + 0000 = 0021 (0021 > 00FE) ?
     SUM:  0021 + 0021 = 0042 (0042 > 00FE) ?
00 > TMP1: 0021 + 0000 = 0021 (0021 > 00FE) ?
     SUM:  0042 + 0021 = 0063 (0063 > 00FE) ?
69 > TMP1: 0021 + 0069 = 008A (008A > 00FE) ?
     SUM:  0063 + 008A = 00ED (00ED > 00FE) ?
A5 > TMP1: 008A + 00A5 = 012F (012F > 00FE) ? 012F + FF01 = 0030
     SUM:  00ED + 0030 = 011D (011D > 00FE) ? 011D + FF01 = 001E
69 > TMP1: 0030 + 0069 = 0099 (0099 > 00FE) ?
     SUM:  001E + 0099 = 00B7 (00B7 > 00FE) ?
00 > TMP1: 0099 + 0000 = 0099 (0099 > 00FE) ?
     SUM:  00B7 + 0099 = 0150 (0150 > 00FE) ? 0150 + FF01 = 0051
00 > TMP1: 0099 + 0000 = 0099 (0099 > 00FE) ?
     SUM:  0051 + 0099 = 00EA (00EA > 00FE) ?
00 > TMP1: 0099 + 0000 = 0099 (0099 > 00FE) ?
     SUM:  00EA + 0099 = 0183 (0183 > 00FE) ? 0183 + FF01 = 0084
00 > TMP1: 0099 + 0000 = 0099 (0099 > 00FE) ?
     SUM:  0084 + 0099 = 011D (011D > 00FE) ? 011D + FF01 = 001E
00 > TMP1: 0099 + 0000 = 0099 (0099 > 00FE) ?
     SUM:  001E + 0099 = 00B7 (00B7 > 00FE) ?
4C > TMP1: 0099 + 004C = 00E5 (00E5 > 00FE) ?
     SUM:  00B7 + 00E5 = 019C (019C > 00FE) ? 019C + FF01 = 009D
04 > TMP1: 00E5 + 0004 = 00E9 (00E9 > 00FE) ?
     SUM:  009D + 00E9 = 0186 (0186 > 00FE) ? 0186 + FF01 = 0087
00 > TMP1: 00E9 + 0000 = 00E9 (00E9 > 00FE) ?
     SUM:  0087 + 00E9 = 0170 (0170 > 00FE) ? 0170 + FF01 = 0071
00 > TMP1: 00E9 + 0000 = 00E9 (00E9 > 00FE) ?
     SUM:  0071 + 00E9 = 015A (015A > 00FE) ? 015A + FF01 = 005B
4C > TMP1: 00E9 + 004C = 0135 (0135 > 00FE) ? 0135 + FF01 = 0036
     SUM:  005B + 0036 = 0091 (0091 > 00FE) ?
04 > TMP1: 0036 + 0004 = 003A (003A > 00FE) ?
     SUM:  0091 + 003A = 00CB (00CB > 00FE) ?
00 > TMP1: 003A + 0000 = 003A (003A > 00FE) ?
     SUM:  00CB + 003A = 0105 (0105 > 00FE) ? 0105 + FF01 = 0006
00 > TMP1: 003A + 0000 = 003A (003A > 00FE) ?
     SUM:  0006 + 003A = 0040 (0040 > 00FE) ?
4B > TMP1: 003A + 004B = 0085 (0085 > 00FE) ?
     SUM:  0040 + 0085 = 00C5 (00C5 > 00FE) ?
06 > TMP1: 0085 + 0006 = 008B (008B > 00FE) ?
     SUM:  00C5 + 008B = 0150 (0150 > 00FE) ? 0150 + FF01 = 0051
00 > TMP1: 008B + 0000 = 008B (008B > 00FE) ?
     SUM:  0051 + 008B = 00DC (00DC > 00FE) ?
00 > TMP1: 008B + 0000 = 008B (008B > 00FE) ?
     SUM:  00DC + 008B = 0167 (0167 > 00FE) ? 0167 + FF01 = 0068
00 > TMP1: 008B + 0000 = 008B (008B > 00FE) ?
     SUM:  0068 + 008B = 00F3 (00F3 > 00FE) ?
01 > TMP1: 008B + 0001 = 008C (008C > 00FE) ?
     SUM:  00F3 + 008C = 017F (017F > 00FE) ? 017F + FF01 = 0080
FF > TMP1: 008C + 00FF = 018B (018B > 00FE) ? 018B + FF01 = 008C
     SUM:  0080 + 008C = 010C (010C > 00FE) ? 010C + FF01 = 000D
FF > TMP1: 008C + 00FF = 018B (018B > 00FE) ? 018B + FF01 = 008C
     SUM:  000D + 008C = 0099 (0099 > 00FE) ?
7F > TMP1: 008C + 007F = 010B (010B > 00FE) ? 010B + FF01 = 000C
     SUM:  0099 + 000C = 00A5 (00A5 > 00FE) ?
FE > TMP1: 000C + 00FE = 010A (010A > 00FE) ? 010A + FF01 = 000B
     SUM:  00A5 + 000B = 00B0 (00B0 > 00FE) ?
00 > TMP1: 000B + 0000 = 000B (000B > 00FE) ?
     SUM:  00B0 + 000B = 00BB (00BB > 00FE) ?
00 > TMP1: 000B + 0000 = 000B (000B > 00FE) ?
     SUM:  00BB + 000B = 00C6 (00C6 > 00FE) ?
00 > TMP1: 000B + 0000 = 000B (000B > 00FE) ?
     SUM:  00C6 + 000B = 00D1 (00D1 > 00FE) ?
01 > TMP1: 000B + 0001 = 000C (000C > 00FE) ?
     SUM:  00D1 + 000C = 00DD (00DD > 00FE) ?
FF > TMP1: 000C + 00FF = 010B (010B > 00FE) ? 010B + FF01 = 000C
     SUM:  00DD + 000C = 00E9 (00E9 > 00FE) ?
FF > TMP1: 000C + 00FF = 010B (010B > 00FE) ? 010B + FF01 = 000C
     SUM:  00E9 + 000C = 00F5 (00F5 > 00FE) ?
7F > TMP1: 000C + 007F = 008B (008B > 00FE) ?
     SUM:  00F5 + 008B = 0180 (0180 > 00FE) ? 0180 + FF01 = 0081
FE > TMP1: 008B + 00FE = 0189 (0189 > 00FE) ? 0189 + FF01 = 008A
     SUM:  0081 + 008A = 010B (010B > 00FE) ? 010B + FF01 = 000C
00 > TMP1: 008A + 0000 = 008A (008A > 00FE) ?
     SUM:  000C + 008A = 0096 (0096 > 00FE) ?
00 > TMP1: 008A + 0000 = 008A (008A > 00FE) ?
     SUM:  0096 + 008A = 0120 (0120 > 00FE) ? 0120 + FF01 = 0021
00 > TMP1: 008A + 0000 = 008A (008A > 00FE) ?
     SUM:  0021 + 008A = 00AB (00AB > 00FE) ?
02 > TMP1: 008A + 0002 = 008C (008C > 00FE) ?
     SUM:  00AB + 008C = 0137 (0137 > 00FE) ? 0137 + FF01 = 0038
FF > TMP1: 008C + 00FF = 018B (018B > 00FE) ? 018B + FF01 = 008C
     SUM:  0038 + 008C = 00C4 (00C4 > 00FE) ?
FF > TMP1: 008C + 00FF = 018B (018B > 00FE) ? 018B + FF01 = 008C
     SUM:  00C4 + 008C = 0150 (0150 > 00FE) ? 0150 + FF01 = 0051
7F > TMP1: 008C + 007F = 010B (010B > 00FE) ? 010B + FF01 = 000C
     SUM:  0051 + 000C = 005D (005D > 00FE) ?
FE > TMP1: 000C + 00FE = 010A (010A > 00FE) ? 010A + FF01 = 000B
     SUM:  005D + 000B = 0068 (0068 > 00FE) ?
Финализация:
     TMP2: 000B + 0068 = 0073 (0073 > 00FE) ?
           0073 ^ 00FF = 008C
     TMP1: 008C + 000B = 0097 (0097 > 00FE) ?
           0097 ^ 00FF = 0068
     SUM:  (0068 & 00FF) | ((008C << 8) & FF00) = 8C68
Результат:
CRC: 68 8C == SUM: 68 8C

_________________
Репозиторий STM32: https://cloud.mail.ru/public/2i19/Y4w8kKEiZ
Актуальность репозитория: 6 декабря 2025 года
Если чего-то не хватает с сайта st.com - пишите, докачаю.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: расчет контрольной суммы (требуется помощь)
СообщениеДобавлено: Ср авг 27, 2025 10:05:24 
Встал на лапы

Зарегистрирован: Сб авг 09, 2025 22:19:34
Сообщений: 114
Рейтинг сообщения: 0
HardWareMan, спорим теперь Вам придётся ещё написать и программку, чтобы она нужные команды ТС по найденному алгоритму паковала и в хитрый аппарат отправляла?

скажите , а вот обязательно . что " доброе" вставлять , из своей головы.
вам кажется без этой умной мысли, задача ну никак не решиться.
мелковата наверно провакация для HardWareMan.
он оказался ВЫШЕ вашего понимания действительности.
... существуют конечно и " джон неуловимый " и " бесценные мысли"

Добавлено after 14 minutes 19 seconds:
Алгоритм расчёта контрольной суммы заголовка прост: берём FF и вычитаем побайтно SOF, EP и SIZE. Расчёт контрольной суммы блока данных производится по такому алгоритму (писал на память, не компилировал, могут быть синтаксические ошибки):
Код:
uint16_t DoCheckSum( uint8_t *Buf, uint16_t Size )
{   // Локальные переменные
    uint16_t Cnt,Sum,Tmp1,Tmp2;
    // Инит
    Sum = 0; Tmp1 = 0; Tmp2 = 0;
    // Если размер больше 0
    if (Size > 0)
    {   // Цикл расчёта
        Cnt = 0;
        while (Cnt < Size)
        {   // Tmp1
            Tmp1 += *(Buf); if (Tmp1 > 0x00FE) { Tmp1 += 0xFF01; }
            // Sum
            Sum += Tmp1; if (Sum > 0x00FE) { Sum += 0xFF01; }
            // Следующий байт
            Buf++; Cnt++;
        }
        // Финализация
        Tmp2 = Tmp1 + Sum; if (Tmp2 > 0x00FE) { Tmp2 += 0xFF01; }
        Tmp2 ^= 0x00FF;
        Tmp1 += Tmp2; if (Tmp1 > 0x00FE) { Tmp1 += 0xFF01; }
        Tmp1 ^= 0x00FF;
        Sum = (Tmp1 & 0x00FF) | ((Tmp2 << 8) & 0xFF00);
    }
    // Результат
    return Sum;
}

Ну и немного пошаговых примеров под спойлером, в том числе и коллизионные, для интересующихся почему так происходит.
СпойлерКоллизионные пакеты:
Код:
Пакет:
1B 02 80 : 62 [FF 03 00 C0] : C9 72
Заголовок:
1B > HSUM: FF - 1B = E4
02 > HSUM: E4 - 02 = E2
80 > HSUM: E2 - 80 = 62
62 > HSUM: ==========^^
Данные:
FF > TMP1: 0000 + 00FF = 00FF (00FF > 00FE) ? 00FF + FF01 = 0000
     SUM:  0000 + 0000 = 0000 (0000 > 00FE) ?
03 > TMP1: 0000 + 0003 = 0003 (0003 > 00FE) ?
     SUM:  0000 + 0003 = 0003 (0003 > 00FE) ?
00 > TMP1: 0003 + 0000 = 0003 (0003 > 00FE) ?
     SUM:  0003 + 0003 = 0006 (0006 > 00FE) ?
C0 > TMP1: 0003 + 00C0 = 00C3 (00C3 > 00FE) ?
     SUM:  0006 + 00C3 = 00C9 (00C9 > 00FE) ?
Финализация:
     TMP2: 00C3 + 00C9 = 018C (018C > 00FE) ? 018C + FF01 = 008D
           008D ^ 00FF = 0072
     TMP1: 0072 + 00C3 = 0135 (0135 > 00FE) ? 0135 + FF01 = 0036
           0036 ^ 00FF = 00C9
     SUM:  (00C9 & 00FF) | ((0072 << 8) & FF00) = 72C9
Результат:
CRC: C9 72 == SUM: C9 72

Пакет:
1B 02 80 : 62 [00 03 00 C0] : C9 72
Заголовок:
1B > HSUM: FF - 1B = E4
02 > HSUM: E4 - 02 = E2
80 > HSUM: E2 - 80 = 62
62 > HSUM: ==========^^
Данные:
00 > TMP1: 0000 + 0000 = 0000 (0000 > 00FE) ?
     SUM:  0000 + 0000 = 0000 (0000 > 00FE) ?
03 > TMP1: 0000 + 0003 = 0003 (0003 > 00FE) ?
     SUM:  0000 + 0003 = 0003 (0003 > 00FE) ?
00 > TMP1: 0003 + 0000 = 0003 (0003 > 00FE) ?
     SUM:  0003 + 0003 = 0006 (0006 > 00FE) ?
C0 > TMP1: 0003 + 00C0 = 00C3 (00C3 > 00FE) ?
     SUM:  0006 + 00C3 = 00C9 (00C9 > 00FE) ?
Финализация:
     TMP2: 00C3 + 00C9 = 018C (018C > 00FE) ? 018C + FF01 = 008D
           008D ^ 00FF = 0072
     TMP1: 0072 + 00C3 = 0135 (0135 > 00FE) ? 0135 + FF01 = 0036
           0036 ^ 00FF = 00C9
     SUM:  (00C9 & 00FF) | ((0072 << 8) & FF00) = 72C9
Результат:
CRC: C9 72 == SUM: C9 72

Ещё коллизионные пакеты:
Код:
Пакет:
1B 02 04 : DE [FF 00 00 C0] : C0 7E
Заголовок:
1B > HSUM: FF - 1B = E4
02 > HSUM: E4 - 02 = E2
04 > HSUM: E2 - 04 = DE
DE > HSUM: ==========^^
Данные:
FF > TMP1: 0000 + 00FF = 00FF (00FF > 00FE) ? 00FF + FF01 = 0000
     SUM:  0000 + 0000 = 0000 (0000 > 00FE) ?
00 > TMP1: 0000 + 0000 = 0000 (0000 > 00FE) ?
     SUM:  0000 + 0000 = 0000 (0000 > 00FE) ?
00 > TMP1: 0000 + 0000 = 0000 (0000 > 00FE) ?
     SUM:  0000 + 0000 = 0000 (0000 > 00FE) ?
C0 > TMP1: 0000 + 00C0 = 00C0 (00C0 > 00FE) ?
     SUM:  0000 + 00C0 = 00C0 (00C0 > 00FE) ?
Финализация:
     TMP2: 00C0 + 00C0 = 0180 (0180 > 00FE) ? 0180 + FF01 = 0081
           0081 ^ 00FF = 007E
     TMP1: 007E + 00C0 = 013E (013E > 00FE) ? 013E + FF01 = 003F
           003F ^ 00FF = 00C0
     SUM:  (00C0 & 00FF) | ((007E << 8) & FF00) = 7EC0
Результат:
CRC: C0 7E == SUM: C0 7E

Пакет:
1B 02 04 : DE [00 00 00 C0] : C0 7E
Заголовок:
1B > HSUM: FF - 1B = E4
02 > HSUM: E4 - 02 = E2
04 > HSUM: E2 - 04 = DE
DE > HSUM: ==========^^
Данные:
00 > TMP1: 0000 + 0000 = 0000 (0000 > 00FE) ?
     SUM:  0000 + 0000 = 0000 (0000 > 00FE) ?
00 > TMP1: 0000 + 0000 = 0000 (0000 > 00FE) ?
     SUM:  0000 + 0000 = 0000 (0000 > 00FE) ?
00 > TMP1: 0000 + 0000 = 0000 (0000 > 00FE) ?
     SUM:  0000 + 0000 = 0000 (0000 > 00FE) ?
C0 > TMP1: 0000 + 00C0 = 00C0 (00C0 > 00FE) ?
     SUM:  0000 + 00C0 = 00C0 (00C0 > 00FE) ?
Финализация:
     TMP2: 00C0 + 00C0 = 0180 (0180 > 00FE) ? 0180 + FF01 = 0081
           0081 ^ 00FF = 007E
     TMP1: 007E + 00C0 = 013E (013E > 00FE) ? 013E + FF01 = 003F
           003F ^ 00FF = 00C0
     SUM:  (00C0 & 00FF) | ((007E << 8) & FF00) = 7EC0
Результат:
CRC: C0 7E == SUM: C0 7E

Длинный пакет:
Код:
Пакет:
1B 02 2D : B5 [21 00 00 69 A5 69 00 00 00 00 00 4C 04 00 00 4C 04 00 00 4B 06 00 00 00 01 FF FF 7F FE 00 00 00 01 FF FF 7F FE 00 00 00 02 FF FF 7F FE] : 68 8C
Заголовок:
1B > HSUM: FF - 1B = E4
02 > HSUM: E4 - 02 = E2
2D > HSUM: E2 - 2D = B5
B5 > HSUM: ==========^^
Данные:
21 > TMP1: 0000 + 0021 = 0021 (0021 > 00FE) ?
     SUM:  0000 + 0021 = 0021 (0021 > 00FE) ?
00 > TMP1: 0021 + 0000 = 0021 (0021 > 00FE) ?
     SUM:  0021 + 0021 = 0042 (0042 > 00FE) ?
00 > TMP1: 0021 + 0000 = 0021 (0021 > 00FE) ?
     SUM:  0042 + 0021 = 0063 (0063 > 00FE) ?
69 > TMP1: 0021 + 0069 = 008A (008A > 00FE) ?
     SUM:  0063 + 008A = 00ED (00ED > 00FE) ?
A5 > TMP1: 008A + 00A5 = 012F (012F > 00FE) ? 012F + FF01 = 0030
     SUM:  00ED + 0030 = 011D (011D > 00FE) ? 011D + FF01 = 001E
69 > TMP1: 0030 + 0069 = 0099 (0099 > 00FE) ?
     SUM:  001E + 0099 = 00B7 (00B7 > 00FE) ?
00 > TMP1: 0099 + 0000 = 0099 (0099 > 00FE) ?
     SUM:  00B7 + 0099 = 0150 (0150 > 00FE) ? 0150 + FF01 = 0051
00 > TMP1: 0099 + 0000 = 0099 (0099 > 00FE) ?
     SUM:  0051 + 0099 = 00EA (00EA > 00FE) ?
00 > TMP1: 0099 + 0000 = 0099 (0099 > 00FE) ?
     SUM:  00EA + 0099 = 0183 (0183 > 00FE) ? 0183 + FF01 = 0084
00 > TMP1: 0099 + 0000 = 0099 (0099 > 00FE) ?
     SUM:  0084 + 0099 = 011D (011D > 00FE) ? 011D + FF01 = 001E
00 > TMP1: 0099 + 0000 = 0099 (0099 > 00FE) ?
     SUM:  001E + 0099 = 00B7 (00B7 > 00FE) ?
4C > TMP1: 0099 + 004C = 00E5 (00E5 > 00FE) ?
     SUM:  00B7 + 00E5 = 019C (019C > 00FE) ? 019C + FF01 = 009D
04 > TMP1: 00E5 + 0004 = 00E9 (00E9 > 00FE) ?
     SUM:  009D + 00E9 = 0186 (0186 > 00FE) ? 0186 + FF01 = 0087
00 > TMP1: 00E9 + 0000 = 00E9 (00E9 > 00FE) ?
     SUM:  0087 + 00E9 = 0170 (0170 > 00FE) ? 0170 + FF01 = 0071
00 > TMP1: 00E9 + 0000 = 00E9 (00E9 > 00FE) ?
     SUM:  0071 + 00E9 = 015A (015A > 00FE) ? 015A + FF01 = 005B
4C > TMP1: 00E9 + 004C = 0135 (0135 > 00FE) ? 0135 + FF01 = 0036
     SUM:  005B + 0036 = 0091 (0091 > 00FE) ?
04 > TMP1: 0036 + 0004 = 003A (003A > 00FE) ?
     SUM:  0091 + 003A = 00CB (00CB > 00FE) ?
00 > TMP1: 003A + 0000 = 003A (003A > 00FE) ?
     SUM:  00CB + 003A = 0105 (0105 > 00FE) ? 0105 + FF01 = 0006
00 > TMP1: 003A + 0000 = 003A (003A > 00FE) ?
     SUM:  0006 + 003A = 0040 (0040 > 00FE) ?
4B > TMP1: 003A + 004B = 0085 (0085 > 00FE) ?
     SUM:  0040 + 0085 = 00C5 (00C5 > 00FE) ?
06 > TMP1: 0085 + 0006 = 008B (008B > 00FE) ?
     SUM:  00C5 + 008B = 0150 (0150 > 00FE) ? 0150 + FF01 = 0051
00 > TMP1: 008B + 0000 = 008B (008B > 00FE) ?
     SUM:  0051 + 008B = 00DC (00DC > 00FE) ?
00 > TMP1: 008B + 0000 = 008B (008B > 00FE) ?
     SUM:  00DC + 008B = 0167 (0167 > 00FE) ? 0167 + FF01 = 0068
00 > TMP1: 008B + 0000 = 008B (008B > 00FE) ?
     SUM:  0068 + 008B = 00F3 (00F3 > 00FE) ?
01 > TMP1: 008B + 0001 = 008C (008C > 00FE) ?
     SUM:  00F3 + 008C = 017F (017F > 00FE) ? 017F + FF01 = 0080
FF > TMP1: 008C + 00FF = 018B (018B > 00FE) ? 018B + FF01 = 008C
     SUM:  0080 + 008C = 010C (010C > 00FE) ? 010C + FF01 = 000D
FF > TMP1: 008C + 00FF = 018B (018B > 00FE) ? 018B + FF01 = 008C
     SUM:  000D + 008C = 0099 (0099 > 00FE) ?
7F > TMP1: 008C + 007F = 010B (010B > 00FE) ? 010B + FF01 = 000C
     SUM:  0099 + 000C = 00A5 (00A5 > 00FE) ?
FE > TMP1: 000C + 00FE = 010A (010A > 00FE) ? 010A + FF01 = 000B
     SUM:  00A5 + 000B = 00B0 (00B0 > 00FE) ?
00 > TMP1: 000B + 0000 = 000B (000B > 00FE) ?
     SUM:  00B0 + 000B = 00BB (00BB > 00FE) ?
00 > TMP1: 000B + 0000 = 000B (000B > 00FE) ?
     SUM:  00BB + 000B = 00C6 (00C6 > 00FE) ?
00 > TMP1: 000B + 0000 = 000B (000B > 00FE) ?
     SUM:  00C6 + 000B = 00D1 (00D1 > 00FE) ?
01 > TMP1: 000B + 0001 = 000C (000C > 00FE) ?
     SUM:  00D1 + 000C = 00DD (00DD > 00FE) ?
FF > TMP1: 000C + 00FF = 010B (010B > 00FE) ? 010B + FF01 = 000C
     SUM:  00DD + 000C = 00E9 (00E9 > 00FE) ?
FF > TMP1: 000C + 00FF = 010B (010B > 00FE) ? 010B + FF01 = 000C
     SUM:  00E9 + 000C = 00F5 (00F5 > 00FE) ?
7F > TMP1: 000C + 007F = 008B (008B > 00FE) ?
     SUM:  00F5 + 008B = 0180 (0180 > 00FE) ? 0180 + FF01 = 0081
FE > TMP1: 008B + 00FE = 0189 (0189 > 00FE) ? 0189 + FF01 = 008A
     SUM:  0081 + 008A = 010B (010B > 00FE) ? 010B + FF01 = 000C
00 > TMP1: 008A + 0000 = 008A (008A > 00FE) ?
     SUM:  000C + 008A = 0096 (0096 > 00FE) ?
00 > TMP1: 008A + 0000 = 008A (008A > 00FE) ?
     SUM:  0096 + 008A = 0120 (0120 > 00FE) ? 0120 + FF01 = 0021
00 > TMP1: 008A + 0000 = 008A (008A > 00FE) ?
     SUM:  0021 + 008A = 00AB (00AB > 00FE) ?
02 > TMP1: 008A + 0002 = 008C (008C > 00FE) ?
     SUM:  00AB + 008C = 0137 (0137 > 00FE) ? 0137 + FF01 = 0038
FF > TMP1: 008C + 00FF = 018B (018B > 00FE) ? 018B + FF01 = 008C
     SUM:  0038 + 008C = 00C4 (00C4 > 00FE) ?
FF > TMP1: 008C + 00FF = 018B (018B > 00FE) ? 018B + FF01 = 008C
     SUM:  00C4 + 008C = 0150 (0150 > 00FE) ? 0150 + FF01 = 0051
7F > TMP1: 008C + 007F = 010B (010B > 00FE) ? 010B + FF01 = 000C
     SUM:  0051 + 000C = 005D (005D > 00FE) ?
FE > TMP1: 000C + 00FE = 010A (010A > 00FE) ? 010A + FF01 = 000B
     SUM:  005D + 000B = 0068 (0068 > 00FE) ?
Финализация:
     TMP2: 000B + 0068 = 0073 (0073 > 00FE) ?
           0073 ^ 00FF = 008C
     TMP1: 008C + 000B = 0097 (0097 > 00FE) ?
           0097 ^ 00FF = 0068
     SUM:  (0068 & 00FF) | ((008C << 8) & FF00) = 8C68
Результат:
CRC: 68 8C == SUM: 68 8C

ОК. спасибо.
буду пробовать и тренироваться.
"тернист путь создателя к звездам ,
Через усилие к победе, Через трудности к триумфу,
особенно мешает грязь завистников и мелкие покусывания , от недостатка имеющихся знаний в багаже.


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения: Re: расчет контрольной суммы (требуется помощь)
СообщениеДобавлено: Ср авг 27, 2025 10:34:04 
Вымогатель припоя

Карма: 2
Рейтинг сообщений: -5
Зарегистрирован: Сб авг 09, 2025 22:08:28
Сообщений: 601
Рейтинг сообщения: 0
особенно мешает грязь завистников и мелкие покусывания , от недостатка имеющихся знаний в багаже.

Вы не смогли решить задачу, зато способны оценивать чужой багаж знаний?
Вы считаете, что кто-то Вам завидует?
Вам лечиться надо. И учиться.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: расчет контрольной суммы (требуется помощь)
СообщениеДобавлено: Ср авг 27, 2025 12:24:16 
Друг Кота

Карма: -1
Рейтинг сообщений: 86
Зарегистрирован: Вт мар 13, 2012 12:16:13
Сообщений: 8887
Откуда: .ru
Рейтинг сообщения: 0
ну с заголовком мы уже догадались... выше...
Код:
Пакет:
1B 02 80 : 62 [FF 03 00 C0] : C9 72
Заголовок:
1B > HSUM: FF - 1B = E4
02 > HSUM: E4 - 02 = E2
80 > HSUM: E2 - 80 = 62


а это ?
Код:
Данные:
FF > TMP1: 0000 + 00FF = 00FF (00FF > 00FE) ? 00FF + FF01 = 0000
     SUM:  0000 + 0000 = 0000 (0000 > 00FE) ?
03 > TMP1: 0000 + 0003 = 0003 (0003 > 00FE) ?
     SUM:  0000 + 0003 = 0003 (0003 > 00FE) ?
00 > TMP1: 0003 + 0000 = 0003 (0003 > 00FE) ?
     SUM:  0003 + 0003 = 0006 (0006 > 00FE) ?
C0 > TMP1: 0003 + 00C0 = 00C3 (00C3 > 00FE) ?
     SUM:  0006 + 00C3 = 00C9 (00C9 > 00FE) ?
Финализация:
     TMP2: 00C3 + 00C9 = 018C (018C > 00FE) ? 018C + FF01 = 008D
           008D ^ 00FF = 0072
     TMP1: 0072 + 00C3 = 0135 (0135 > 00FE) ? 0135 + FF01 = 0036
           0036 ^ 00FF = 00C9
     SUM:  (00C9 & 00FF) | ((0072 << 8) & FF00) = 72C9
Результат:
CRC: C9 72 == SUM: C9 72

:shock:
кто в здравом уме такое мог придумать ? ))
пипец...
:tea:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: расчет контрольной суммы (требуется помощь)
СообщениеДобавлено: Ср авг 27, 2025 12:56:22 
Встал на лапы

Зарегистрирован: Сб авг 09, 2025 22:19:34
Сообщений: 114
Рейтинг сообщения: 0
особенно мешает грязь завистников и мелкие покусывания , от недостатка имеющихся знаний в багаже.

Вы не смогли решить задачу, зато способны оценивать чужой багаж знаний?
Вы считаете, что кто-то Вам завидует?
Вам лечиться надо. И учиться.


А мне то чего завидовать, и изначально сказано , не могу решить задачу. прошу помощи ( а не обсуждения , почему ты плохо знаешь програмирование . больной ?)
В чем криминал то. смотрите кому идет обращение. и адвокатов Здеся тоже нет
но наглость второе счастье .
не надо переходить на личности и бросаться просто так .
учитесь нормальному диалогу.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: расчет контрольной суммы (требуется помощь)
СообщениеДобавлено: Ср авг 27, 2025 13:39:21 
Мучитель микросхем
Аватар пользователя

Карма: 8
Рейтинг сообщений: 105
Зарегистрирован: Ср сен 02, 2015 07:47:20
Сообщений: 420
Рейтинг сообщения: 0
:shock:
кто в здравом уме такое мог придумать ? ))
пипец...
:tea:

Индусы на аутсорсе у крупной компании, производящей медицинское оборудование? Кто знает... Обычный CRC конечно был бы проще в реализации, я же писал и CRC8 и CRC16 для MCS51 25 лет назад (делал XYMODEM, на ZMODEM и CRC32 уже запала не хватило).

_________________
Репозиторий STM32: https://cloud.mail.ru/public/2i19/Y4w8kKEiZ
Актуальность репозитория: 6 декабря 2025 года
Если чего-то не хватает с сайта st.com - пишите, докачаю.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: расчет контрольной суммы (требуется помощь)
СообщениеДобавлено: Ср авг 27, 2025 14:52:09 
Встал на лапы

Зарегистрирован: Сб авг 09, 2025 22:19:34
Сообщений: 114
Рейтинг сообщения: 0
:shock:
кто в здравом уме такое мог придумать ? ))
пипец...
:tea:

Индусы на аутсорсе у крупной компании, производящей медицинское оборудование? Кто знает... Обычный CRC конечно был бы проще в реализации, я же писал и CRC8 и CRC16 для MCS51 25 лет назад (делал XYMODEM, на ZMODEM и CRC32 уже запала не хватило).


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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: расчет контрольной суммы (требуется помощь)
СообщениеДобавлено: Ср авг 27, 2025 16:40:31 
Собутыльник Кота
Аватар пользователя

Карма: 18
Рейтинг сообщений: 266
Зарегистрирован: Пт фев 12, 2010 13:47:17
Сообщений: 2534
Рейтинг сообщения: 0
o90 писал(а):
причина списания нового оборудования, стоящего больших денег
Такие вещи к технической стороне дела отношения не имеют. Только в редких исключениях. Но настолько редких, что обычному человеку из этой системы надо, наверное, 100 000 лет прожить, что б хоть одно застать. Попробуйте объяснить бухгалтеру, у которого аммортизация, срок службы и основные средства про контрольную сумму. Оно вообще в разных вселенных.

o90 писал(а):
главное что бы шевелилось
Надеюсь не по прямому назначению? Речь вроде о мед. оборудовании шла?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: расчет контрольной суммы (требуется помощь)
СообщениеДобавлено: Ср авг 27, 2025 16:47:42 
Мучитель микросхем
Аватар пользователя

Карма: 8
Рейтинг сообщений: 105
Зарегистрирован: Ср сен 02, 2015 07:47:20
Сообщений: 420
Рейтинг сообщения: 0
По крайней мере она тут действительно сумма, а не цикличный сокращённый код.

_________________
Репозиторий STM32: https://cloud.mail.ru/public/2i19/Y4w8kKEiZ
Актуальность репозитория: 6 декабря 2025 года
Если чего-то не хватает с сайта st.com - пишите, докачаю.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: расчет контрольной суммы (требуется помощь)
СообщениеДобавлено: Ср авг 27, 2025 21:47:28 
Встал на лапы

Зарегистрирован: Сб авг 09, 2025 22:19:34
Сообщений: 114
Рейтинг сообщения: 0
По крайней мере она тут действительно сумма, а не цикличный сокращённый код.

вы правы .
тема была изначальна
расчет контрольной суммы (требуется помощь)

Добавлено after 3 hours 49 minutes 14 seconds:
o90 писал(а):
причина списания нового оборудования, стоящего больших денег
Такие вещи к технической стороне дела отношения не имеют. Только в редких исключениях. Но настолько редких, что обычному человеку из этой системы надо, наверное, 100 000 лет прожить, что б хоть одно застать. Попробуйте объяснить бухгалтеру, у которого аммортизация, срок службы и основные средства про контрольную сумму. Оно вообще в разных вселенных.

o90 писал(а):
главное что бы шевелилось
Надеюсь не по прямому назначению? Речь вроде о мед. оборудовании шла?

у нас сейчас не бухгалтера принимаю решение, импортозамещение не работает
расходников нет, сервис .обслуживание ушло, комплектующих нет.
да вот ещё и кривовато в программах .
со слезами на глазах - но в утиль. а что делать . где лицензионная обслуга.
что умельцам удаётся спасти для себя . вот и этому портальчику повезло.
должен ....должен поработать на благо.
правда поменяет свою профессию на работу в домашней мастерской.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: расчет контрольной суммы (требуется помощь)
СообщениеДобавлено: Чт авг 28, 2025 13:09:26 
Встал на лапы

Зарегистрирован: Сб авг 09, 2025 22:19:34
Сообщений: 114
Рейтинг сообщения: 0
По крайней мере она тут действительно сумма, а не цикличный сокращённый код.

чудо алгоритм нашли. в ручном режиме высчитывать возможно.
как довести до ума , автоматизировать процесс.
т.е. беру длинный код ,, с излишними командами возвращения в исходную позицию.
отрезаю лишнее. вставляю и получаю заветную КС .
понятно что требуется длинный ряд проб. экспериментального подтверждения работы алгоритма.
пока девайс будет четко понимать и отвечать.
visual studio code - будет достаточно для применения данного алгоритма.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: расчет контрольной суммы (требуется помощь)
СообщениеДобавлено: Чт авг 28, 2025 13:29:42 
Мучитель микросхем
Аватар пользователя

Карма: 8
Рейтинг сообщений: 105
Зарегистрирован: Ср сен 02, 2015 07:47:20
Сообщений: 420
Рейтинг сообщения: 0
o90, я реверс инженегр. Я не пишу код на заказ.

_________________
Репозиторий STM32: https://cloud.mail.ru/public/2i19/Y4w8kKEiZ
Актуальность репозитория: 6 декабря 2025 года
Если чего-то не хватает с сайта st.com - пишите, докачаю.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: расчет контрольной суммы (требуется помощь)
СообщениеДобавлено: Чт авг 28, 2025 16:58:05 
Встал на лапы

Зарегистрирован: Сб авг 09, 2025 22:19:34
Сообщений: 114
Рейтинг сообщения: 0
o90, я реверс инженегр. Я не пишу код на заказ.

инженегр не инженегр а алгоритм нашли , и он не реверс , прямо так и работает.
думалось, по опубликованным " экранам ", что это плод програмный, автоматически сформированный при известных формулах.
и без проблем должен работать в visual studio code. при полном формирование программы.
понимаю , что решение шахматной задачи не имеет цели протоколировать решение, и печатать его.
алгоритм и формулы понятны. ( можно хоть в EXEL запихать макросами ) удобней просто уже готовый алгоритм
в visual studio code заставить работать, раз он уже и создан .
ок спасибочки . буду далее думать . большой шаг уже сделан. с Вашей и божьей помощью.
да и мир, не без добрых людей .
и то что я буду делать месяц ( ну а что делать тем более 3\4пути и даже более - пройдено) , норм. программист думаю за полчаса обернет этот алоритм в програмный код.
надо понимать , что у каждого своя стезя, один прекрассный реверс инженегр, другой физик, третий
может быть чудо токарем -кулибиным ( даже знаю такого). и все они прекрасно работают , хорошие и умные ребята, и могут даже иметь общую страсть
решения шахматных задач в свободное время. но....
- "КАЖДОМУ СВОЁ. " что и было ловко подмечено и написано на известных вратах.....
снимаю шляпу...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: расчет контрольной суммы (требуется помощь)
СообщениеДобавлено: Чт авг 28, 2025 18:47:12 
Мучитель микросхем
Аватар пользователя

Карма: 8
Рейтинг сообщений: 105
Зарегистрирован: Ср сен 02, 2015 07:47:20
Сообщений: 420
Рейтинг сообщения: 0
инженегр не инженегр а алгоритм нашли , и он не реверс , прямо так и работает.

Шутку понял, но я имел в виду другое: https://ru.wikipedia.org/wiki/%D0%9E%D0 ... 0%BA%D0%B0
снимаю шляпу...

Сколько их там у вас?

_________________
Репозиторий STM32: https://cloud.mail.ru/public/2i19/Y4w8kKEiZ
Актуальность репозитория: 6 декабря 2025 года
Если чего-то не хватает с сайта st.com - пишите, докачаю.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: расчет контрольной суммы (требуется помощь)
СообщениеДобавлено: Чт авг 28, 2025 19:41:32 
Встал на лапы

Зарегистрирован: Сб авг 09, 2025 22:19:34
Сообщений: 114
Рейтинг сообщения: 0
инженегр не инженегр а алгоритм нашли , и он не реверс , прямо так и работает.

Шутку понял, но я имел в виду другое: https://ru.wikipedia.org/wiki/%D0%9E%D0 ... 0%BA%D0%B0
снимаю шляпу...

Сколько их там у вас?

в каждой шутке есть -доля шутки.
по мне так понимаю, конечно электронщику ЧПУ мелковато возится с ремонтом розеток и выключателей.
и это правильно. есть дела и по важнее. но для него однако это " пыль для моряков"
и обратный инжиниринг это программист 6 разряда. программист - полковник ,,,ИМХО.
не я не прошу ( постараюсь сам ) просто мне казалось что решение данного алгоритма в проге V.S. оно как бы автоматом сформировалось.
судя по машинным экранам,,, опубликованным. я же не знаю инструмент Вашего созидания .
...а кол-во снятых шляп в уважение к труду, оно безгранично, так же как и благодарность.
. но я не волшебник , а только учусь поэтому и интересуюсь , какой путь ( хоть и во мраке) будет покороче к победе.
победе , которую приблизили Вы но нужна мне практически.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: расчет контрольной суммы (требуется помощь)
СообщениеДобавлено: Пт авг 29, 2025 20:12:52 
Встал на лапы

Зарегистрирован: Сб авг 09, 2025 22:19:34
Сообщений: 114
Рейтинг сообщения: 0
int16_t DoCheckSum — функция, которая рассчитывает контрольную сумму блока данных.
Описание:
Принимает указатель на блок данных (uint8_t *Buf) и размер блока (uint16_t Size).
Вычисляет контрольную сумму по алгоритму, который включает суммирование байтов и вычисление результата по модулю (например, 255).
Суммы — 16-битные переменные, чтобы сложения не переполнялись.
Вычисление по модулю выполняется после каждого добавления, чтобы в конце цикла суммы всегда сводились к 8 битам.
В конце входных данных две суммы объединяются в 16-битное значение контрольной суммы и возвращаются функцией.
Инициализация переменных. Создаются локальные переменные: Cnt, Sum, Tmp1, Tmp2.
Проверка размера. Если размер больше 0, то выполняется цикл расчёта.
Расчёт суммы. В цикле Cnt (количество) добавляется к сумме Tmp1, если значение Tmp1 больше 0x00FE, то к нему прибавляется 0xFF01.
Переход к следующему байту. Буфер увеличивается на 1, а Cnt увеличивается на 1.
Финализация. Выполняются некоторые операции с переменными, в том числе Tmp2 (Tmp1 + Sum) и Tmp1 (Tmp1 + Tmp2).
Возвращение результата. Функция возвращает значение Sum.
Пример: в алгоритме расчёта контрольной суммы для блока данных из байтов (FF, 03, 00, C0) функция возвращает значение C9 72.
ps
теоретическое описание алгоритма. (всё понимаю , вот только сказать не могу )
надо придумывать програмный код для него.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: расчет контрольной суммы (требуется помощь)
СообщениеДобавлено: Сб авг 30, 2025 07:19:55 
Мучитель микросхем
Аватар пользователя

Карма: 8
Рейтинг сообщений: 105
Зарегистрирован: Ср сен 02, 2015 07:47:20
Сообщений: 420
Рейтинг сообщения: 0
ChatGPT перелогинься.

_________________
Репозиторий STM32: https://cloud.mail.ru/public/2i19/Y4w8kKEiZ
Актуальность репозитория: 6 декабря 2025 года
Если чего-то не хватает с сайта st.com - пишите, докачаю.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: расчет контрольной суммы (требуется помощь)
СообщениеДобавлено: Сб авг 30, 2025 08:11:19 
Друг Кота
Аватар пользователя

Карма: 59
Рейтинг сообщений: 1575
Зарегистрирован: Вт окт 22, 2013 04:37:23
Сообщений: 3421
Откуда: Казань
Рейтинг сообщения: 4
Сначала ТС где-то урвал дорогой (по его словам) прибор. Прибор вынужденно списанный, а значит, скорее всего, ТС урвал его на халяву.

Потом ТС каким-то чудом нашёл грамотного человека, с которым сначала разорался в хлам на несколько страниц форума, но который, тем не менее, размотал для ТС искомый алгоритм.

Теперь ТС ищет очередного волонтёра, которому "полчаса всего" и нужно, чтобы слепить нужную ТС программу, усиленно задвигая за "все должны помогать друг-другу" и "сами мы не местные, в этом не шарим, зато наверняка крутые специалисты в других каких-то областях".

У меня одного эта неистребимая любовь к тотальной халяве вызывает гадостные чувства?

_________________
Платы для HLDI - установки лазерной засветки фоторезиста.
Фоторезисты Ordyl Alpha 350 и AM 140.
Жидкое олово для лужения плат (видео) - самое лучшее и только у меня.
Паяльная маска XV501T-4 и KSM-S6189 (5 цветов).
Заказ печатных плат - pcbsmac@gmail.com


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 318 ]     ... , , , 8, , , ...  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 15


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

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y