Thread C Funktion in perl umsetzen (16 answers)
Opened by piet at 2015-02-11 13:03

Gast piet
 2015-02-11 13:03
#179583 #179583
Hallo,

ich möchte ein Gerät per Socket über Perl ansteuern, für das ich nur C Beispiele habe.
Soweit so gut.
Nun muss beim Telegramm eine Checksumme berechnet werden. Das ist mein Problem.

Hier einmal die C Funktion.
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
uint8 normalChecksum8(uint8 *b, int n)
{
int i;
uint16 a, bb;

//Sums bytes 1 to n-1 unsigned to a 2 byte value. Sums quotient and
//remainder of 256 division. Again, sums quotient and remainder of
//256 division.
for(i = 1, a = 0; i < n; i++)
a+=(uint16)b[i];

bb = a / 256;
a = (a - 256 * bb) + bb;
bb = a / 256;

return (uint8)((a-256*bb)+bb);
}

Ich weiß nun nicht wie ich die Zahlen auf 8/16Bit ohne Vorzeichen umwandeln kann und das im laufenden Programm.
Vielleicht gibt es ja schon eine fertige Funktion von jemanden.

Gruß
piet
Last edited: 2015-02-11 13:13:22 +0100 (CET)

View full thread C Funktion in perl umsetzen