LabVIEWForum.de
Prüfsummenberechnung anhand C-Code - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Prüfsummenberechnung anhand C-Code (/Thread-Pruefsummenberechnung-anhand-C-Code)



Prüfsummenberechnung anhand C-Code - Y-P - 20.09.2016 08:32

Hallo,

ich habe hier ein kurzes Bsp. in C++, wie man für ein bestimmtes Gerät eine Prüfsumme berechnen muss
(Bei der Prüfsumme handelt es sich um das 256-Komplement des Modulo-256-
Divisionsrests über die ASCII-Werte aller Zeichen im String, die Werte für ETX und die
Prüfsumme selbst werden nicht addiert.):
Code:
Programmiersprache: C++
const char ASCII[ ]= "0123456789ABCDEF";
char *Pruefsumme (char *buffer)
{
static char Hex[10];
static int a1, a2;
register unsigned int i;
int sum;
sum = 256;
for ( i=0 ; i<strlen(buffer) ; i++)
{
sum-=buffer[i];
if ( sum<0 )
sum+= 256;
}
a1 = (sum & 0xF0) >> 4;
a2 = sum & 0x0F;
Hex[0] = ASCII[a1];
Hex[1] = ASCII[a2];
Hex[2] = 0;
return(Hex);
}

Hier ist ein Bsp., wo die Prüfsumme verwendet wird:

String: {STX}z?xx{ETX}
Beispiel:
{STX}
z Busadresse des Geräts
? Aufforderung zu senden
xx Prüfsumme
{ETX}
z = 1
xx = 8E


Kann mir jemand sagen, wie die Prüfsummenbestimmung in LabVIEW aussieht?

Gruß Markus


RE: Prüfsummenberechnung anhand C-Code - jg - 20.09.2016 08:56

Womit hast du Probleme? Mit diesem Abschnitt?
Code:
{
sum-=buffer[i];
if ( sum<0 )
sum+= 256;
}

Ausgeschrieben ist das:
Code:
{
sum = sum -buffer[i];
if ( sum<0 )
sum = sum + 256;
}
Jetzt sollte die Umsetzung in LabVIEW aber kein Problem sein...

Gruß, Jens
Kann man aber noch ein wenig eindampfen:
[attachment=56672]
Gruß, Jens


RE: Prüfsummenberechnung anhand C-Code - Y-P - 20.09.2016 09:42

Dankeschön. :-)

Gruß Markus