Например TDA7294

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

Текущее время: Ср окт 22, 2025 21:33:12

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


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



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

Зарегистрирован: Сб авг 09, 2025 22:19:34
Сообщений: 114
Рейтинг сообщения: 0
muravei_, надо и обратную сказать. Туда-сюда же надо ))

туда была выше:
download/file.php?id=420720

В экселе ему не нравится , а программировать он не умеет, эксель тоже не знает .
Всем "помагателям" хамоватому халявщику - славу супер программиста вам стяжать не удастся (так себе задачка) , а проучить его стоит.


HardWareMan писал(а):
А разве такую обувь ещё носят в миру?

По моему это к обуви не имеет отношения, а имеет к шабаду , к бидонам с молоком и пятнице . :)
Но могу ошибаться.

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


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

Карма: -1
Рейтинг сообщений: 68
Зарегистрирован: Вт мар 13, 2012 12:16:13
Сообщений: 8693
Откуда: .ru
Рейтинг сообщения: 0
на смену SIZE пришёл len... от length.
это пришло из интернета... ))
o90 писал(а):
" Выдана полная программа."

забыли дописать... для ардуино))
ардуино знает что такое uint8_t... uint16_t...
остальные программы не в курсе))
:tea:


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

Зарегистрирован: Сб авг 09, 2025 22:19:34
Сообщений: 114
Рейтинг сообщения: 0
на смену SIZE пришёл len... от length.
это пришло из интернета... ))
o90 писал(а):
" Выдана полная программа."

забыли дописать... для ардуино))
ардуино знает что такое uint8_t... uint16_t...
остальные программы не в курсе))
:tea:

понял.
скажите а что ардуино IDE сможет провести расчёт это интересно.
(и была шальная мысля в ide попробовать но как то отбросил ее после здешних перепалок )
на ней можно было бы сразу сформировать и отсыл по RS232 либо посыл в память "умному экрану"


Последний раз редактировалось o90 Вт сен 02, 2025 16:25:50, всего редактировалось 1 раз.

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

Карма: -1
Рейтинг сообщений: 68
Зарегистрирован: Вт мар 13, 2012 12:16:13
Сообщений: 8693
Откуда: .ru
Рейтинг сообщения: 0
разумеется)) выше писал... копируем и вставляем в МК...
изменив типы переменных... типа всяких uint8_t... uint16_t... и т.д.

далее... crc нам больше не нужен...

Спойлер
Код:
<!DOCTYPE html>
<html>
<head>
<title>КС</title>
<h2>Расчёт КС:</h2>
</head>
<body>


<script>
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////Buf: 
var Buf = [ 
0x00,0x00,0x00,0xC0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
];
var xTX = 0;              // счёт xTX
var KS_len = 4;           // KS_len
var String;           
////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////KS:
var Cnt = 0; var Sum = 0; var Tmp1 = 0;  var Tmp2 = 0;
function KS(){
// Сброс
Cnt = 0; Sum = 0; Tmp1 = 0; Tmp2 = 0;

// Цикл расчёта
while (Cnt < KS_len)
{
// Tmp1
Tmp1 += Buf[Cnt]; if (Tmp1 > 0x00FE) { Tmp1 += 0xFF01; }; 
Tmp1 = Tmp1 & 0xFFFF;
// Sum
Sum += Tmp1; if (Sum > 0x00FE) { Sum += 0xFF01; }; 
Sum = Sum & 0xFFFF;
// Следующий байт
Cnt++;
};

// Финализация
Tmp2 = Tmp1 + Sum; if (Tmp2 > 0x00FE) { Tmp2 += 0xFF01; };
Tmp2 = Tmp2 & 0xFFFF;
Tmp2 ^= 0x00FF;
Tmp1 += Tmp2; if (Tmp1 > 0x00FE) { Tmp1 += 0xFF01; };
Tmp1 = Tmp1 & 0xFFFF;
Tmp1 ^= 0x00FF;
Sum = (Tmp1 & 0x00FF) | ((Tmp2 << 8) & 0xFF00);

// Результат
Buf[KS_len+1] = ((Sum>>8) & 0xFF);           
Buf[KS_len] = ((Sum) & 0xFF);       

};
////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////наверное, можно немного упростить:
/*
public static ushort DoCheckSum(byte[] Buf, ushort Size)
{
    ushort Cnt = 0, Tmp1 = 0, Tmp2 = 0;
   
    if (Size == 0) { return 0; }

    while (Cnt < Size)
    {
        // Tmp1
        Tmp1 += Buf[Cnt++];
        if (Tmp1 > 0x00FE) {
            Tmp1 += 0xFF01;
        }
        // Sum
        Tmp2 += Tmp1;
        if (Tmp2 > 0x00FE) {
            Tmp2 += 0xFF01;
        }
    }

    // Финализация
    Tmp2 += Tmp1;
    if (Tmp2 > 0x00FE) {
        Tmp2 += 0xFF01;
    }
    Tmp2 ^= 0x00FF;

    Tmp1 += Tmp2;
    if (Tmp1 > 0x00FE) {
        Tmp1 += 0xFF01;
    }
    Tmp1 ^= 0x00FF;

    return (ushort)((Tmp1 & 0x00FF) | ((Tmp2 << 8) & 0xFF00));
}
*/
////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////HEX(int)> LCD(String):
var bi = 0;
function LCD_HEX(bi) {
///////////////////
bi &= 0xFF;
var z = 0;
var HEX = ""; 
///////////////////
z=0; while (bi>15) {z++; bi=bi-16;};     
if (z==0)  {HEX = "0";} if (z==1)  {HEX = "1";} if (z==2)  {HEX = "2";} if (z==3)  {HEX = "3";}
if (z==4)  {HEX = "4";} if (z==5)  {HEX = "5";} if (z==6)  {HEX = "6";} if (z==7)  {HEX = "7";}
if (z==8)  {HEX = "8";} if (z==9)  {HEX = "9";} if (z==10) {HEX = "A";} if (z==11) {HEX = "B";}
if (z==12) {HEX = "C";} if (z==13) {HEX = "D";} if (z==14) {HEX = "E";} if (z==15) {HEX = "F";}
///////////////////
z=0; while (bi>0)  {z++; bi=bi-1;};   
if (z==0)  {HEX += "0";} if (z==1)  {HEX += "1";} if (z==2)  {HEX += "2";} if (z==3)  {HEX += "3";}
if (z==4)  {HEX += "4";} if (z==5)  {HEX += "5";} if (z==6)  {HEX += "6";} if (z==7)  {HEX += "7";}
if (z==8)  {HEX += "8";} if (z==9)  {HEX += "9";} if (z==10) {HEX += "A";} if (z==11) {HEX += "B";}
if (z==12) {HEX += "C";} if (z==13) {HEX += "D";} if (z==14) {HEX += "E";} if (z==15) {HEX += "F";}
///////////////////
HEX += " ";
return HEX; //String
}
////////////////////////////////////////////////////////////////////////////////
</script>


<!---------->
<div id='label'
style='position: absolute; left: 10px; top: 100px; width: 970px; height: 0px;
font-size: 30px; color: #000000; background: #1CD3A2;'>len:</div>
<script>var label = document.getElementById('label');</script>
<!---------->
<div id='label_1'
style='position: absolute; left: 10px; top: 200px; width: 970px; height: 0px;
font-size: 30px; color: #000000; background: #1CD3A2;'>КС:</div>
<script>var label_1 = document.getElementById('label_1');</script>
<!---------->
<input id='button' type='button' value='нажми меня ))' onClick='Button();'
style='position: absolute; left: 10px; top: 300px; width: 500px; height: 80px;
font-size: 50px; border: 4px solid maroon; background: #00FF00;'>


<script>
function Button() {
////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////KS:
KS(); 
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////LCD:
label.innerHTML = "len: " + KS_len;
///////////////////
String = "КС: ";
for (xTX=0; xTX<KS_len+2; xTX++) {   
String += LCD_HEX(Buf[xTX]); 
};
label_1.innerHTML = String;
Buf[0]++;
if (Buf[0] > 255){Buf[0] = 0;};
};
////////////////////////////////////////////////////////////////////////////////
</script>


</body>
</html>


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения: Re: расчет контрольной суммы (требуется помощь)
СообщениеДобавлено: Вт сен 02, 2025 16:33:50 
Друг Кота
Аватар пользователя

Карма: 59
Рейтинг сообщений: 1566
Зарегистрирован: Вт окт 22, 2013 04:37:23
Сообщений: 3394
Откуда: Казань
Рейтинг сообщения: 0
скажите а что ардуино IDE сможет провести расчёт это интересно.
(и была шальная мысля в ide попробовать

Свят-свят, мы присутствуем при рождении нового ардуинщика!

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

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


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

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

далее... crc нам больше не нужен...

Спойлер
Код:
<!DOCTYPE html>
<html>
<head>
<title>КС</title>
<h2>Расчёт КС:</h2>
</head>
<body>


<script>
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////Buf: 
var Buf = [ 
0x00,0x00,0x00,0xC0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
];
var xTX = 0;              // счёт xTX
var KS_len = 4;           // KS_len
var String;           
////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////KS:
var Cnt = 0; var Sum = 0; var Tmp1 = 0;  var Tmp2 = 0;
function KS(){
// Сброс
Cnt = 0; Sum = 0; Tmp1 = 0; Tmp2 = 0;

// Цикл расчёта
while (Cnt < KS_len)
{
// Tmp1
Tmp1 += Buf[Cnt]; if (Tmp1 > 0x00FE) { Tmp1 += 0xFF01; }; 
Tmp1 = Tmp1 & 0xFFFF;
// Sum
Sum += Tmp1; if (Sum > 0x00FE) { Sum += 0xFF01; }; 
Sum = Sum & 0xFFFF;
// Следующий байт
Cnt++;
};

// Финализация
Tmp2 = Tmp1 + Sum; if (Tmp2 > 0x00FE) { Tmp2 += 0xFF01; };
Tmp2 = Tmp2 & 0xFFFF;
Tmp2 ^= 0x00FF;
Tmp1 += Tmp2; if (Tmp1 > 0x00FE) { Tmp1 += 0xFF01; };
Tmp1 = Tmp1 & 0xFFFF;
Tmp1 ^= 0x00FF;
Sum = (Tmp1 & 0x00FF) | ((Tmp2 << 8) & 0xFF00);

// Результат
Buf[KS_len+1] = ((Sum>>8) & 0xFF);           
Buf[KS_len] = ((Sum) & 0xFF);       

};
////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////наверное, можно немного упростить:
/*
public static ushort DoCheckSum(byte[] Buf, ushort Size)
{
    ushort Cnt = 0, Tmp1 = 0, Tmp2 = 0;
   
    if (Size == 0) { return 0; }

    while (Cnt < Size)
    {
        // Tmp1
        Tmp1 += Buf[Cnt++];
        if (Tmp1 > 0x00FE) {
            Tmp1 += 0xFF01;
        }
        // Sum
        Tmp2 += Tmp1;
        if (Tmp2 > 0x00FE) {
            Tmp2 += 0xFF01;
        }
    }

    // Финализация
    Tmp2 += Tmp1;
    if (Tmp2 > 0x00FE) {
        Tmp2 += 0xFF01;
    }
    Tmp2 ^= 0x00FF;

    Tmp1 += Tmp2;
    if (Tmp1 > 0x00FE) {
        Tmp1 += 0xFF01;
    }
    Tmp1 ^= 0x00FF;

    return (ushort)((Tmp1 & 0x00FF) | ((Tmp2 << 8) & 0xFF00));
}
*/
////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////HEX(int)> LCD(String):
var bi = 0;
function LCD_HEX(bi) {
///////////////////
bi &= 0xFF;
var z = 0;
var HEX = ""; 
///////////////////
z=0; while (bi>15) {z++; bi=bi-16;};     
if (z==0)  {HEX = "0";} if (z==1)  {HEX = "1";} if (z==2)  {HEX = "2";} if (z==3)  {HEX = "3";}
if (z==4)  {HEX = "4";} if (z==5)  {HEX = "5";} if (z==6)  {HEX = "6";} if (z==7)  {HEX = "7";}
if (z==8)  {HEX = "8";} if (z==9)  {HEX = "9";} if (z==10) {HEX = "A";} if (z==11) {HEX = "B";}
if (z==12) {HEX = "C";} if (z==13) {HEX = "D";} if (z==14) {HEX = "E";} if (z==15) {HEX = "F";}
///////////////////
z=0; while (bi>0)  {z++; bi=bi-1;};   
if (z==0)  {HEX += "0";} if (z==1)  {HEX += "1";} if (z==2)  {HEX += "2";} if (z==3)  {HEX += "3";}
if (z==4)  {HEX += "4";} if (z==5)  {HEX += "5";} if (z==6)  {HEX += "6";} if (z==7)  {HEX += "7";}
if (z==8)  {HEX += "8";} if (z==9)  {HEX += "9";} if (z==10) {HEX += "A";} if (z==11) {HEX += "B";}
if (z==12) {HEX += "C";} if (z==13) {HEX += "D";} if (z==14) {HEX += "E";} if (z==15) {HEX += "F";}
///////////////////
HEX += " ";
return HEX; //String
}
////////////////////////////////////////////////////////////////////////////////
</script>


<!---------->
<div id='label'
style='position: absolute; left: 10px; top: 100px; width: 970px; height: 0px;
font-size: 30px; color: #000000; background: #1CD3A2;'>len:</div>
<script>var label = document.getElementById('label');</script>
<!---------->
<div id='label_1'
style='position: absolute; left: 10px; top: 200px; width: 970px; height: 0px;
font-size: 30px; color: #000000; background: #1CD3A2;'>КС:</div>
<script>var label_1 = document.getElementById('label_1');</script>
<!---------->
<input id='button' type='button' value='нажми меня ))' onClick='Button();'
style='position: absolute; left: 10px; top: 300px; width: 500px; height: 80px;
font-size: 50px; border: 4px solid maroon; background: #00FF00;'>


<script>
function Button() {
////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////KS:
KS(); 
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////LCD:
label.innerHTML = "len: " + KS_len;
///////////////////
String = "КС: ";
for (xTX=0; xTX<KS_len+2; xTX++) {   
String += LCD_HEX(Buf[xTX]); 
};
label_1.innerHTML = String;
Buf[0]++;
if (Buf[0] > 255){Buf[0] = 0;};
};
////////////////////////////////////////////////////////////////////////////////
</script>


</body>
</html>

.... ну это почти верх мечтаний ОК.
проверяю ОК пытаюсь сформировать правильно длинную посылку .
к примеру 12 и более.


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

Карма: -1
Рейтинг сообщений: 68
Зарегистрирован: Вт мар 13, 2012 12:16:13
Сообщений: 8693
Откуда: .ru
Рейтинг сообщения: 0
далее... crc нам больше не нужен...

ну и правильно)) потому что это не настоящий crc... а упрощенный.))
а настоящий crc в интернете... поинтересней будет))

Спойлер
Код:
////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////crcEth:
unsigned long RXcrcEth;        // RXcrc
unsigned long crcEth;          // crc
unsigned long bcrcEth;         // буфер crc
unsigned long mask_crcEth;     // маска crc
unsigned char mask_Eth;        // маска биты
unsigned int xEth;             // счёт
unsigned int x1Eth;            // счёт
unsigned int x2Eth;            // счёт
void fcrcEth(void)
{
//crc Eth:  //60...63 -crc
/////////////////////////////////////////////// TX_int > RXcrcEth:
//0. TX_int > RXcrcEth
RXcrcEth = TX_int[UDP_TX_len+3];                  // RXcrc
RXcrcEth = (RXcrcEth<<8) | TX_int[UDP_TX_len+2];  // RXcrc
RXcrcEth = (RXcrcEth<<8) | TX_int[UDP_TX_len+1];  // RXcrc
RXcrcEth = (RXcrcEth<<8) | TX_int[UDP_TX_len];    // RXcrc
/////////////////////////////////////////////// crc Eth:  60 байт  -10 ms (8 мгц) 
//1. сброс crcEth
crcEth=0;     
TX_int[UDP_TX_len] = 0;    // сброс crc Eth  =0
TX_int[UDP_TX_len+1] = 0;  // сброс crc Eth  =0
TX_int[UDP_TX_len+2] = 0;  // сброс crc Eth  =0
TX_int[UDP_TX_len+3] = 0;  // сброс crc Eth  =0
/////////////////////////////////////////////// 
//2. Input Data reflected 0x01 > 0x80
//0...3 Data > crcEth 
for( x1Eth = 0; x1Eth < 4;  x1Eth++ ){  // байты: 4   
////////////
mask_Eth = 0x01;
////////////
  for (xEth=0; xEth<8; xEth++) {        // биты 8     
    /////////// 
    crcEth = crcEth << 1;   
    if ( TX_int[x1Eth]  &  mask_Eth ) { crcEth |= 1; }; 
    mask_Eth = mask_Eth << 1;
    ///////////   
  }; 
/////////// 
}; 
///////////////////////////////////////////////
//3. Initial Value 0xFFFFFFFF
crcEth ^= 0xFFFFFFFF;     
/////////////////////////////////////////////// 
//4. Input Data reflected 0x01 > 0x80
//4...59 Data > crcEth   
x2Eth = 4; // смещение 4 байт
for( x1Eth = 0; x1Eth < UDP_TX_len;  x1Eth++ ){ // байты: UDP_TX_len       
////////////
mask_Eth = 0x01;
////////////
  for (xEth=0; xEth<8; xEth++) {     // биты =8     
    /////////// 
    if (crcEth & 0x80000000) {
      crcEth = crcEth << 1;   
       if ( TX_int[x2Eth]  &  mask_Eth ) { crcEth |= 1; }; 
       mask_Eth = mask_Eth << 1;
       crcEth = crcEth ^ 0x04C11DB7; // Eth.
    }
    else  {   
      crcEth = crcEth << 1;   
      if ( TX_int[x2Eth]  &  mask_Eth ) { crcEth |= 1; }; 
      mask_Eth = mask_Eth << 1;
    };
    ///////////   
  }; 
x2Eth++; 
/////////// 
}; 
/////////////////////////////////////////////// 
//5. Result reflected 0x80 > 0x01
//crc 
bcrcEth = crcEth;             // crc > буфер
crcEth = 0;                   // сброс crc
mask_crcEth = 0x00000001;
for( xEth = 0; xEth < 32; xEth++ ){       
  crcEth=(crcEth<<1);  //0b00000001 >  //0b10000000
  if ( bcrcEth  &  mask_crcEth ) { crcEth |= 1; };
  mask_crcEth = mask_crcEth << 1;
};
/////////////////////////////////////////////// 
//6. Final Xor Value
//crc 
crcEth  ^=  0xFFFFFFFF; 
/////////////////////////////////////////////// 
//7. Data Out
//0...59 Data // 60,61,62,63 -crc
//TX_int[UDP_TX_len] = crcEth;             
//TX_int[UDP_TX_len+1] = crcEth>>8;       
//TX_int[UDP_TX_len+2] = crcEth>>16;             
//TX_int[UDP_TX_len+3] = crcEth>>24;     
/////////////////////////////////////////////// 
};
////////////////////////////////////////////////////////////////////////////////


далеко его убирать не будем... он нам ещё пригодится))
когда по RS232 ничего не получится... будем подключать наше "устройство" по интернету))
:)))


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

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

ну и правильно)) потому что это не настоящий crc... а упрощенный.))
а настоящий crc в интернете... поинтересней будет))

Спойлер
Код:
////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////crcEth:
unsigned long RXcrcEth;        // RXcrc
unsigned long crcEth;          // crc
unsigned long bcrcEth;         // буфер crc
unsigned long mask_crcEth;     // маска crc
unsigned char mask_Eth;        // маска биты
unsigned int xEth;             // счёт
unsigned int x1Eth;            // счёт
unsigned int x2Eth;            // счёт
void fcrcEth(void)
{
//crc Eth:  //60...63 -crc
/////////////////////////////////////////////// TX_int > RXcrcEth:
//0. TX_int > RXcrcEth
RXcrcEth = TX_int[UDP_TX_len+3];                  // RXcrc
RXcrcEth = (RXcrcEth<<8) | TX_int[UDP_TX_len+2];  // RXcrc
RXcrcEth = (RXcrcEth<<8) | TX_int[UDP_TX_len+1];  // RXcrc
RXcrcEth = (RXcrcEth<<8) | TX_int[UDP_TX_len];    // RXcrc
/////////////////////////////////////////////// crc Eth:  60 байт  -10 ms (8 мгц) 
//1. сброс crcEth
crcEth=0;     
TX_int[UDP_TX_len] = 0;    // сброс crc Eth  =0
TX_int[UDP_TX_len+1] = 0;  // сброс crc Eth  =0
TX_int[UDP_TX_len+2] = 0;  // сброс crc Eth  =0
TX_int[UDP_TX_len+3] = 0;  // сброс crc Eth  =0
/////////////////////////////////////////////// 
//2. Input Data reflected 0x01 > 0x80
//0...3 Data > crcEth 
for( x1Eth = 0; x1Eth < 4;  x1Eth++ ){  // байты: 4   
////////////
mask_Eth = 0x01;
////////////
  for (xEth=0; xEth<8; xEth++) {        // биты 8     
    /////////// 
    crcEth = crcEth << 1;   
    if ( TX_int[x1Eth]  &  mask_Eth ) { crcEth |= 1; }; 
    mask_Eth = mask_Eth << 1;
    ///////////   
  }; 
/////////// 
}; 
///////////////////////////////////////////////
//3. Initial Value 0xFFFFFFFF
crcEth ^= 0xFFFFFFFF;     
/////////////////////////////////////////////// 
//4. Input Data reflected 0x01 > 0x80
//4...59 Data > crcEth   
x2Eth = 4; // смещение 4 байт
for( x1Eth = 0; x1Eth < UDP_TX_len;  x1Eth++ ){ // байты: UDP_TX_len       
////////////
mask_Eth = 0x01;
////////////
  for (xEth=0; xEth<8; xEth++) {     // биты =8     
    /////////// 
    if (crcEth & 0x80000000) {
      crcEth = crcEth << 1;   
       if ( TX_int[x2Eth]  &  mask_Eth ) { crcEth |= 1; }; 
       mask_Eth = mask_Eth << 1;
       crcEth = crcEth ^ 0x04C11DB7; // Eth.
    }
    else  {   
      crcEth = crcEth << 1;   
      if ( TX_int[x2Eth]  &  mask_Eth ) { crcEth |= 1; }; 
      mask_Eth = mask_Eth << 1;
    };
    ///////////   
  }; 
x2Eth++; 
/////////// 
}; 
/////////////////////////////////////////////// 
//5. Result reflected 0x80 > 0x01
//crc 
bcrcEth = crcEth;             // crc > буфер
crcEth = 0;                   // сброс crc
mask_crcEth = 0x00000001;
for( xEth = 0; xEth < 32; xEth++ ){       
  crcEth=(crcEth<<1);  //0b00000001 >  //0b10000000
  if ( bcrcEth  &  mask_crcEth ) { crcEth |= 1; };
  mask_crcEth = mask_crcEth << 1;
};
/////////////////////////////////////////////// 
//6. Final Xor Value
//crc 
crcEth  ^=  0xFFFFFFFF; 
/////////////////////////////////////////////// 
//7. Data Out
//0...59 Data // 60,61,62,63 -crc
//TX_int[UDP_TX_len] = crcEth;             
//TX_int[UDP_TX_len+1] = crcEth>>8;       
//TX_int[UDP_TX_len+2] = crcEth>>16;             
//TX_int[UDP_TX_len+3] = crcEth>>24;     
/////////////////////////////////////////////// 
};
////////////////////////////////////////////////////////////////////////////////


далеко его убирать не будем... он нам ещё пригодится))
когда по RS232 ничего не получится... будем подключать наше "устройство" по интернету))
:)))

не по инет не надо управлять только RS232 ( почему не получиться) поэтому шифрование хитрое нет необходимости.
только проверка целостности данных . мне бы это сделать .
потом буду умным экраном управлять девайсом .
длинные посылки пока учусь

Добавлено after 6 minutes 41 second:
скажите а что ардуино IDE сможет провести расчёт это интересно.
(и была шальная мысля в ide попробовать

Свят-свят, мы присутствуем при рождении нового ардуинщика!

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

как обычно не по теме и не в рифму.
сомневаюсь что кто то постоянно пользуется даже 2.0 , как то всё зациклилось на 1.8.19.
да и станок с электронной гитарой на 2560 редактируется под 1.8.19


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

Карма: 59
Рейтинг сообщений: 1566
Зарегистрирован: Вт окт 22, 2013 04:37:23
Сообщений: 3394
Откуда: Казань
Рейтинг сообщения: 0
как обычно не по теме и не в рифму
Это да. До Ваших рифм и тем мне действительно не дотянуться.

сомневаюсь что кто то постоянно пользуется даже 2.0 , как то всё зациклилось на 1.8.19.
да и станок с электронной гитарой на 2560 редактируется под 1.8.19
А как же ирокезы? Причем здесь ирокезы? А причём электрогитара и конкретные версии Arduino IDE?


Действительно интереснее всего наблюдать за глубиной этих глубин со стороны с попкорном.

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


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

Карма: 2
Рейтинг сообщений: -9
Зарегистрирован: Сб авг 09, 2025 22:08:28
Сообщений: 373
Рейтинг сообщения: 0
Ёпрст, осень же!
уфф... теперь всё стало понятно.


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

Карма: -1
Рейтинг сообщений: 68
Зарегистрирован: Вт мар 13, 2012 12:16:13
Сообщений: 8693
Откуда: .ru
Рейтинг сообщения: 0
:)))
наконец то догадался)))


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

Зарегистрирован: Сб авг 09, 2025 22:19:34
Сообщений: 114
Рейтинг сообщения: 0
Ёпрст, осень же!
уфф... теперь всё стало понятно.

уфф... теперь всё стало понятно, тандем с учеником
smacorp это Ваш лучший ученик ? могли бы ему это сказать за экраном.


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

Карма: -1
Рейтинг сообщений: 68
Зарегистрирован: Вт мар 13, 2012 12:16:13
Сообщений: 8693
Откуда: .ru
Рейтинг сообщения: 0
пытаюсь сформировать правильно длинную посылку .
к примеру 12 и более.


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
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

Спойлер
Код:
<!DOCTYPE html>
<html>
<head>
<title>КС</title>
<h2>Расчёт КС:</h2>
</head>
<body>


<script>
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////Buf: 
var Buf = [ 
//30 00 00 69 A5 69 00 00 //8
//00 00 00 4C 04 00 00 4C //16
//04 00 00 4B 06 00 00 00 //24
//01 FF FF 7F FE 00 00 00 //32
//01 FF FF 7F FE 00 00 00 //40
//02 FF FF 7F FE //45
//КС-0E D7
0x30,0x00,0x00,0x69,0xA5,0x69,0x00,0x00,0x00,0x00,0x00,0x4C,0x04,0x00,0x00,0x4C,//16
0x04,0x00,0x00,0x4B,0x06,0x00,0x00,0x00,0x01,0xFF,0xFF,0x7F,0xFE,0x00,0x00,0x00,//32
0x01,0xFF,0xFF,0x7F,0xFE,0x00,0x00,0x00,0x02,0xFF,0xFF,0x7F,0xFE,0,0,0,//48
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,//64
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,//80
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,//96
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,//112
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //128

/*
0x00,0x00,0x00,0xC0,0,0,0,0,0,0,0,0,0,0,0,0,//16
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,//32
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,//48
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,//64
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,//80
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,//96
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,//112
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //128
*/
];
var KS_len = 45;          // KS_len
var xTX = 0;              // счёт xTX
var String;           
////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////KS:
var Cnt = 0; var Sum = 0; var Tmp1 = 0;  var Tmp2 = 0;
function KS(){
// Сброс
Cnt = 0; Sum = 0; Tmp1 = 0; Tmp2 = 0;

// Цикл расчёта
while (Cnt < KS_len)
{
// Tmp1
Tmp1 += Buf[Cnt]; if (Tmp1 > 0x00FE) { Tmp1 += 0xFF01; }; 
Tmp1 = Tmp1 & 0xFFFF;
// Sum
Sum += Tmp1; if (Sum > 0x00FE) { Sum += 0xFF01; }; 
Sum = Sum & 0xFFFF;
// Следующий байт
Cnt++;
};

// Финализация
Tmp2 = Tmp1 + Sum; if (Tmp2 > 0x00FE) { Tmp2 += 0xFF01; };
Tmp2 = Tmp2 & 0xFFFF;
Tmp2 ^= 0x00FF;
Tmp1 += Tmp2; if (Tmp1 > 0x00FE) { Tmp1 += 0xFF01; };
Tmp1 = Tmp1 & 0xFFFF;
Tmp1 ^= 0x00FF;
Sum = (Tmp1 & 0x00FF) | ((Tmp2 << 8) & 0xFF00);

// Результат
Buf[KS_len+1] = ((Sum>>8) & 0xFF);           
Buf[KS_len] = ((Sum) & 0xFF);       

};
////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////наверное, можно немного упростить:
/*
public static ushort DoCheckSum(byte[] Buf, ushort Size)
{
    ushort Cnt = 0, Tmp1 = 0, Tmp2 = 0;
   
    if (Size == 0) { return 0; }

    while (Cnt < Size)
    {
        // Tmp1
        Tmp1 += Buf[Cnt++];
        if (Tmp1 > 0x00FE) {
            Tmp1 += 0xFF01;
        }
        // Sum
        Tmp2 += Tmp1;
        if (Tmp2 > 0x00FE) {
            Tmp2 += 0xFF01;
        }
    }

    // Финализация
    Tmp2 += Tmp1;
    if (Tmp2 > 0x00FE) {
        Tmp2 += 0xFF01;
    }
    Tmp2 ^= 0x00FF;

    Tmp1 += Tmp2;
    if (Tmp1 > 0x00FE) {
        Tmp1 += 0xFF01;
    }
    Tmp1 ^= 0x00FF;

    return (ushort)((Tmp1 & 0x00FF) | ((Tmp2 << 8) & 0xFF00));
}
*/
////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////HEX(int)> LCD(String):
var bi = 0;
function LCD_HEX(bi) {
///////////////////
bi &= 0xFF;
var z = 0;
var HEX = ""; 
///////////////////
z=0; while (bi>15) {z++; bi=bi-16;};     
if (z==0)  {HEX = "0";} if (z==1)  {HEX = "1";} if (z==2)  {HEX = "2";} if (z==3)  {HEX = "3";}
if (z==4)  {HEX = "4";} if (z==5)  {HEX = "5";} if (z==6)  {HEX = "6";} if (z==7)  {HEX = "7";}
if (z==8)  {HEX = "8";} if (z==9)  {HEX = "9";} if (z==10) {HEX = "A";} if (z==11) {HEX = "B";}
if (z==12) {HEX = "C";} if (z==13) {HEX = "D";} if (z==14) {HEX = "E";} if (z==15) {HEX = "F";}
///////////////////
z=0; while (bi>0)  {z++; bi=bi-1;};   
if (z==0)  {HEX += "0";} if (z==1)  {HEX += "1";} if (z==2)  {HEX += "2";} if (z==3)  {HEX += "3";}
if (z==4)  {HEX += "4";} if (z==5)  {HEX += "5";} if (z==6)  {HEX += "6";} if (z==7)  {HEX += "7";}
if (z==8)  {HEX += "8";} if (z==9)  {HEX += "9";} if (z==10) {HEX += "A";} if (z==11) {HEX += "B";}
if (z==12) {HEX += "C";} if (z==13) {HEX += "D";} if (z==14) {HEX += "E";} if (z==15) {HEX += "F";}
///////////////////
HEX += " ";
return HEX; //String
}
////////////////////////////////////////////////////////////////////////////////
</script>


<!---------->
<div id='label'
style='position: absolute; left: 10px; top: 150px; width: 970px; height: 0px;
font-size: 30px; color: #000000; background: #1CD3A2;'>len:</div>
<script>var label = document.getElementById('label');</script>
<!---------->
<div id='label_1'
style='position: absolute; left: 10px; top: 250px; width: 970px; height: 0px;
font-size: 30px; color: #000000; background: #1CD3A2;'>КС:</div>
<script>var label_1 = document.getElementById('label_1');</script>
<!---------->
<input id='button' type='button' value='нажми меня ))' onClick='Button();'
style='position: absolute; left: 10px; top: 380px; width: 500px; height: 80px;
font-size: 50px; border: 4px solid maroon; background: #00FF00;'>


<script>
function Button() {
////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////KS:
KS(); 
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////LCD:
label.innerHTML = "len: " + KS_len;
///////////////////
String = "КС: ";
for (xTX=0; xTX<KS_len+2; xTX++) {   
String += LCD_HEX(Buf[xTX]); 
};
label_1.innerHTML = String;
Buf[0]++;
if (Buf[0] > 255){Buf[0] = 0;};
};
////////////////////////////////////////////////////////////////////////////////
</script>


</body>
</html>

Всё работает.
:tea:


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

Карма: 8
Рейтинг сообщений: 99
Зарегистрирован: Ср сен 02, 2015 07:47:20
Сообщений: 395
Рейтинг сообщения: 0
По моему это к обуви не имеет отношения, а имеет к шабаду , к бидонам с молоком и пятнице . :)
Но могу ошибаться.

Холява, халава — заготовка для производства листового стекла, а также — голенище сапога (уст.).

Добавлено after 4 minutes 32 seconds:
:)))
наконец то догадался)))

А ещё прямо сейчас пришло время переворачивать!

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


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

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


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
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

Спойлер
Код:
<!DOCTYPE html>
<html>
<head>
<title>КС</title>
<h2>Расчёт КС:</h2>
</head>
<body>


<script>
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////Buf: 
var Buf = [ 
//30 00 00 69 A5 69 00 00 //8
//00 00 00 4C 04 00 00 4C //16
//04 00 00 4B 06 00 00 00 //24
//01 FF FF 7F FE 00 00 00 //32
//01 FF FF 7F FE 00 00 00 //40
//02 FF FF 7F FE //45
//КС-0E D7
0x30,0x00,0x00,0x69,0xA5,0x69,0x00,0x00,0x00,0x00,0x00,0x4C,0x04,0x00,0x00,0x4C,//16
0x04,0x00,0x00,0x4B,0x06,0x00,0x00,0x00,0x01,0xFF,0xFF,0x7F,0xFE,0x00,0x00,0x00,//32
0x01,0xFF,0xFF,0x7F,0xFE,0x00,0x00,0x00,0x02,0xFF,0xFF,0x7F,0xFE,0,0,0,//48
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,//64
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,//80
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,//96
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,//112
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //128

/*
0x00,0x00,0x00,0xC0,0,0,0,0,0,0,0,0,0,0,0,0,//16
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,//32
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,//48
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,//64
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,//80
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,//96
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,//112
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //128
*/
];
var KS_len = 45;          // KS_len
var xTX = 0;              // счёт xTX
var String;           
////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////KS:
var Cnt = 0; var Sum = 0; var Tmp1 = 0;  var Tmp2 = 0;
function KS(){
// Сброс
Cnt = 0; Sum = 0; Tmp1 = 0; Tmp2 = 0;

// Цикл расчёта
while (Cnt < KS_len)
{
// Tmp1
Tmp1 += Buf[Cnt]; if (Tmp1 > 0x00FE) { Tmp1 += 0xFF01; }; 
Tmp1 = Tmp1 & 0xFFFF;
// Sum
Sum += Tmp1; if (Sum > 0x00FE) { Sum += 0xFF01; }; 
Sum = Sum & 0xFFFF;
// Следующий байт
Cnt++;
};

// Финализация
Tmp2 = Tmp1 + Sum; if (Tmp2 > 0x00FE) { Tmp2 += 0xFF01; };
Tmp2 = Tmp2 & 0xFFFF;
Tmp2 ^= 0x00FF;
Tmp1 += Tmp2; if (Tmp1 > 0x00FE) { Tmp1 += 0xFF01; };
Tmp1 = Tmp1 & 0xFFFF;
Tmp1 ^= 0x00FF;
Sum = (Tmp1 & 0x00FF) | ((Tmp2 << 8) & 0xFF00);

// Результат
Buf[KS_len+1] = ((Sum>>8) & 0xFF);           
Buf[KS_len] = ((Sum) & 0xFF);       

};
////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////наверное, можно немного упростить:
/*
public static ushort DoCheckSum(byte[] Buf, ushort Size)
{
    ushort Cnt = 0, Tmp1 = 0, Tmp2 = 0;
   
    if (Size == 0) { return 0; }

    while (Cnt < Size)
    {
        // Tmp1
        Tmp1 += Buf[Cnt++];
        if (Tmp1 > 0x00FE) {
            Tmp1 += 0xFF01;
        }
        // Sum
        Tmp2 += Tmp1;
        if (Tmp2 > 0x00FE) {
            Tmp2 += 0xFF01;
        }
    }

    // Финализация
    Tmp2 += Tmp1;
    if (Tmp2 > 0x00FE) {
        Tmp2 += 0xFF01;
    }
    Tmp2 ^= 0x00FF;

    Tmp1 += Tmp2;
    if (Tmp1 > 0x00FE) {
        Tmp1 += 0xFF01;
    }
    Tmp1 ^= 0x00FF;

    return (ushort)((Tmp1 & 0x00FF) | ((Tmp2 << 8) & 0xFF00));
}
*/
////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////HEX(int)> LCD(String):
var bi = 0;
function LCD_HEX(bi) {
///////////////////
bi &= 0xFF;
var z = 0;
var HEX = ""; 
///////////////////
z=0; while (bi>15) {z++; bi=bi-16;};     
if (z==0)  {HEX = "0";} if (z==1)  {HEX = "1";} if (z==2)  {HEX = "2";} if (z==3)  {HEX = "3";}
if (z==4)  {HEX = "4";} if (z==5)  {HEX = "5";} if (z==6)  {HEX = "6";} if (z==7)  {HEX = "7";}
if (z==8)  {HEX = "8";} if (z==9)  {HEX = "9";} if (z==10) {HEX = "A";} if (z==11) {HEX = "B";}
if (z==12) {HEX = "C";} if (z==13) {HEX = "D";} if (z==14) {HEX = "E";} if (z==15) {HEX = "F";}
///////////////////
z=0; while (bi>0)  {z++; bi=bi-1;};   
if (z==0)  {HEX += "0";} if (z==1)  {HEX += "1";} if (z==2)  {HEX += "2";} if (z==3)  {HEX += "3";}
if (z==4)  {HEX += "4";} if (z==5)  {HEX += "5";} if (z==6)  {HEX += "6";} if (z==7)  {HEX += "7";}
if (z==8)  {HEX += "8";} if (z==9)  {HEX += "9";} if (z==10) {HEX += "A";} if (z==11) {HEX += "B";}
if (z==12) {HEX += "C";} if (z==13) {HEX += "D";} if (z==14) {HEX += "E";} if (z==15) {HEX += "F";}
///////////////////
HEX += " ";
return HEX; //String
}
////////////////////////////////////////////////////////////////////////////////
</script>


<!---------->
<div id='label'
style='position: absolute; left: 10px; top: 150px; width: 970px; height: 0px;
font-size: 30px; color: #000000; background: #1CD3A2;'>len:</div>
<script>var label = document.getElementById('label');</script>
<!---------->
<div id='label_1'
style='position: absolute; left: 10px; top: 250px; width: 970px; height: 0px;
font-size: 30px; color: #000000; background: #1CD3A2;'>КС:</div>
<script>var label_1 = document.getElementById('label_1');</script>
<!---------->
<input id='button' type='button' value='нажми меня ))' onClick='Button();'
style='position: absolute; left: 10px; top: 380px; width: 500px; height: 80px;
font-size: 50px; border: 4px solid maroon; background: #00FF00;'>


<script>
function Button() {
////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////KS:
KS(); 
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////LCD:
label.innerHTML = "len: " + KS_len;
///////////////////
String = "КС: ";
for (xTX=0; xTX<KS_len+2; xTX++) {   
String += LCD_HEX(Buf[xTX]); 
};
label_1.innerHTML = String;
Buf[0]++;
if (Buf[0] > 255){Buf[0] = 0;};
};
////////////////////////////////////////////////////////////////////////////////
</script>FB


</body>
</html>

Всё работает.
:tea:

ТЕСТИРУЮ. работает

нашел случай неправильной выдачи

len: 8КС: 00 00 0B 03 0F 2F 12 00 3F 62 в толмуте КС A2 F3 (позже выяснено что все правильно)
len: 8КС: 00 00 0B 03 00 EA 12 00 36 BE ПРАВИЛЬНО

len: 8КС: 00 00 0B 03 15 91 11 00 7C BD в толмуте 01 63 (позже выяснено что все правильно)

len: 8КС: 00 00 0B 03 49 A1 12 00 7F 75 в толмуте B2 CA (позже выяснено что все правильно)

len: 8КС: 00 00 0B 03 CE 41 11 00 72 5E правильно

len: 8КС: 00 00 0B 03 1F BF 10 00 2D D5 в толмуте 93 2B (позже выяснено что все правильно)

буду изучать Букварь. по коду
Ps читать обязательно.

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


Последний раз редактировалось o90 Вт сен 02, 2025 22:28:06, всего редактировалось 3 раз(а).

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

Карма: -1
Рейтинг сообщений: 68
Зарегистрирован: Вт мар 13, 2012 12:16:13
Сообщений: 8693
Откуда: .ru
Рейтинг сообщения: 0
а это уже к разработчику алгоритма HardWareMan... ))
:)
вот почему я в своих конструкциях использую только стандартизированные протоколы...
описаны в Институт инженеров электротехники и электроники (IEEE).
:tea:


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

Зарегистрирован: Сб авг 09, 2025 22:19:34
Сообщений: 114
Рейтинг сообщения: 0
а это уже к разработчику алгоритма HardWareMan... ))
:)
вот почему я в своих конструкциях использую только стандартизированные протоколы...
описаны в Институт инженеров электротехники и электроники (IEEE).
:tea:

ОТБОЙ ВСЕМ СОМНЕНИЯМ.
разобрался .
конечно это была моя ошибка , по невнимательности.
по алгоритму и программе пока нет вопросов, да и априори быть не должно.
продолжаю тестировать . накапливая результаты.


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

Карма: 8
Рейтинг сообщений: 99
Зарегистрирован: Ср сен 02, 2015 07:47:20
Сообщений: 395
Рейтинг сообщения: 0
конечно это была моя ошибка , по невнимательности.

Просто ты забыл, какой сегодня день.
Изображение


Вложения:
2024-09-03-mixnews-1-1.jpg [232.34 KiB]
Скачиваний: 178

_________________
Репозиторий STM32: https://cloud.mail.ru/public/2i19/Y4w8kKEiZ
Актуальность репозитория: 1 сентября 2025 года
Если чего-то не хватает с сайта st.com - пишите, докачаю.
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: расчет контрольной суммы (требуется помощь)
СообщениеДобавлено: Ср сен 03, 2025 10:03:04 
Встал на лапы

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

Просто ты забыл, какой сегодня день.
Изображение


да ,,,В России — День Победы над милитаристской Японией и окончания Второй мировой войны.
и это символично - день окончательной победы в войне.
PS , благодаря огромной братской помощи Союзников, и воли к победе.
впереди еще много работы по возрождению былого....


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

Карма: -1
Рейтинг сообщений: 68
Зарегистрирован: Вт мар 13, 2012 12:16:13
Сообщений: 8693
Откуда: .ru
Рейтинг сообщения: 0
работает... не работает...
пора уже подключать устройство и закрывать тему...
тема уже затянулась...
:tea:


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

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


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

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


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

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


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