замечательно))
а где остальной код программы на СИ ?
можно и Ada...
но сначала на СИ... )) у нас уже есть кусок кода на СИ.
потом переделаем на Ada...
Код: Выделить всё
<!DOCTYPE html>
<html>
<head>
<title>КС</title>
<h1>Расчёт КС:</h1>
</head>
<body>
</body>
</html>Код: Выделить всё
<!DOCTYPE html>
<html>
<head>
<title>КС</title>
<h1>Расчёт КС:</h1>
</head>
<body>
</body>
</html>ты уже определись наконец))Nranddek писал(а):Ок. МК-56
Код: Выделить всё
<!DOCTYPE html>
<html>
<head>
<title>КС</title>
<h1>Расчёт КС:</h1>
</head>
<body>
<script>
////////////////////////////////////////////////////////////////////////////////
function 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;
};
////////////////////////////////////////////////////////////////////////////////
</script>
</body>
</html>
ты уже определись наконец))Nranddek писал(а):Ок. МК-56
Код: Выделить всё
<!DOCTYPE html>
<html>
<head>
<title>КС</title>
<h1>Расчёт КС:</h1>
</head>
<body>
<script>
////////////////////////////////////////////////////////////////////////////////
function 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;
};
////////////////////////////////////////////////////////////////////////////////
</script>
</body>
</html>
Код: Выделить всё
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));
}ладно, ладно, пусть будет MK-61, регистров побольше.roman.com писал(а): Nranddek писал(а):
Ок. МК-56
ты уже определись наконец))
не я это сказалroman.com писал(а):говорю же... пофигу на чём писать))
Код: Выделить всё
<!DOCTYPE html>
<html>
<head>
<title>КС</title>
<h1>Расчёт КС:</h1>
</head>
<body>
<script>
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////Buf:
var Buf = [
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
];
////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////CheckSum:
function 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;
};
////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////CheckSum:
DoCheckSum(1); // вызываем функцию DoCheckSum
////////////////////////////////////////////////////////////////////////////////
</script>
</body>
</html>Код: Выделить всё
<!DOCTYPE html>
<html>
<head>
<title>КС</title>
<h1>Расчёт КС:</h1>
</head>
<body>
<script>
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////Buf:
var Buf = [
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
];
////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////CheckSum:
function 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;
};
////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////CheckSum:
DoCheckSum(1); // вызываем функцию DoCheckSum
////////////////////////////////////////////////////////////////////////////////
</script>
</body>
</html>Код: Выделить всё
<!DOCTYPE html>
<html>
<head>
<title>КС</title>
<h2>Расчёт КС:</h2>
</head>
<body>
<script>
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////Buf:
//лог 1B 02 04 DE 00 00 00 С0 7Е
var Buf = [
0x1B, 0x02, 0x04, 0xDE, 0x00, 0x00, 0x00,
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 7Е
var String;
var xK = 0;
////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////CheckSum:
/*
function 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;
};
*/
////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////наверное, можно немного упростить:
/*
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));
}
*/
////////////////////////////////////////////////////////////////////////////////
</script>
<!-----------------------------label------------------------------------------->
<div id='label'
style='position: absolute; left: 0px; top: 100px; width: 970px; height: 0px;
font-size: 30px; color: #000000; background: #1CD3A2;'>Buf:</div>
<script>var label = document.getElementById('label');</script>
<script>
////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////DoCheckSum:
//DoCheckSum();
////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////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
}
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////LCD:
String = "Buf: ";
for (xK=0; xK<9; xK++) {
String += LCD_HEX(Buf[xK]);
};
label.innerHTML = String;
////////////////////////////////////////////////////////////////////////////////
</script>
</body>
</html>Код: Выделить всё
вначале даёт красивую и корректную подсветку, а потом сбрасывает обратно (как в сообщении выше):
[spoiler][img]https://img.radiokot.ru/files/161123/3tpkt27c82.PNG[/img][/spoiler]так выше писали зачем)) будем подменять пакеты...HardWareMan писал(а):В чём здесь заключается величие сумрачного гения?