Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Allgemeines (OffTopic) » Auf dem Schlauch?!?

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
30.09.2005, 10:14 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Hi, irgendwie steh ich aufm Schlauch... Kann mir einer erklären was das hier nun genau heißt?


Zitat:

checksum -- A char[2] field. These characters when paired and interpreted as a hexadecimal value display the least significant byte of the ones complement of the sum of the byte values represented by the pairs of characters making up the count, the address, and the data fields



ab "display the least ..." irgendwie peil ich nicht ganz wie das jetzt geht



Code:
15 <- count
01 00 00 00 <- address
40 75 9F E5 01 60 A0 E3 B0 60 C7 E1 38 05 9F E5 <- data fields
53 <- checksum



wie zum henker kommt man auf diese checksum?!?
--
class God : public ChuckNorris { };

Dieser Post wurde am 30.09.2005 um 10:14 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
30.09.2005, 10:25 Uhr
ao

(Operator)



C++:
// count, address und data fields aufsummieren
unsigned sum = 0x15 + 0x01 + 0x00 + ... + 0x9F + 0xE5;

// von der Summe das Low-Byte nehmen
unsigned lb = sum & 0xFF;

// wenn das 1-Komplement davon 0x53 ist, dann ist lb ^ checksum == 0
if (~lb == checksum) return ALLES_OK;

// das ist dasselbe wie
if (lb ^ checksum == 0) return ALLES OK;



ao

Dieser Post wurde am 30.09.2005 um 10:30 Uhr von ao editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
30.09.2005, 10:28 Uhr
Tommix



Hallo,
Pseudo Code (alles Hex):

Code:
Checksum = !(FF&(
15+
01+00+00+00+
40+75+9F+E5+01+60+A0+E3+B0+60+C7+E1+38+05+9F+E5))
= 53



- Tommix


Bearbeitung von Tommix:

! bedeutet in Pseudo-Code, anders als in C, die bitweise Negation.
Das wußten vielleicht nicht alle


Dieser Post wurde am 30.09.2005 um 10:35 Uhr von Tommix editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
30.09.2005, 10:36 Uhr
(un)wissender
Niveauwart


Das keinste Byte halt -> steht am weitesten "links" bei Little Endian und "rechts" bei Big Endian, wobei "links" die kleineren Adressen stehen.
Von Hand rechnet man normalerweise Big Endian.

Also

Code:
15  <- count
01 00 00 00 <- address
40 75 9F E5 01 60 A0 E3 B0 60 C7 E1 38 05 9F E5 <- data fields


//1.Schritt Addieren
15 + 2 * 01 + 40 + 75 + 2* 9F + 2 *  E5 + 2 * 60  + A0 + E3 + B0 + C7 + E1 + 38 + 05 =  8AC

//2.Schritt Binär aufschreiben
8AC = 1000 1010 1100

//3.Schritt Komplement bilden
~1000 1010 1100 = 0111 0101 0011

//4.Schritt least significant byte nehmen
0101 0011 = 53 (hexa)

//5.Schritt
vgl. 53 == 53





Bearbeitung:

Man seid ihr alle schnell...


--
Wer früher stirbt ist länger tot.

Dieser Post wurde am 30.09.2005 um 10:38 Uhr von (un)wissender editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
30.09.2005, 10:40 Uhr
(un)wissender
Niveauwart


Sag mal, das ist doch der IP-Header oder sowas?
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
30.09.2005, 10:41 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


ah thx ich stand tatsächlich aufm schlauch

und das sind S-Record-Files bzw eine Zeile davon
--
class God : public ChuckNorris { };

Dieser Post wurde am 30.09.2005 um 10:42 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
30.09.2005, 10:56 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


ok kleines weiteres problem, die checksum stimmt nun, nur folgendes:

Vom Flashprogramm werden die daten so übertragen: (alles hex und wird binär übertragen)


Code:
31 <- ka, evtl count, nur wenn, wie kommen die auf d49?, ok 0x31 - 0x20 = 0x11 = d17 <- count(data)+chksum, nur warum -d32 ???
00 00 B2 32 00 00 00 00 0F 00 00 00 DC 32 00 00 <- data
CD <- checksum, hier stimmt sie (aus 0x31+data)

2D
00 00 00 00 00 00 00 00 00 00 00 00
D2 <-- nur hier wie kommen die hier auf D2???? theoretisch kommt da 0x12 raus?



evtl stell ich mich auch mal wieder blöd an (soll ja vorkommen ) und seh den wald vor lauter bäumen nicht
--
class God : public ChuckNorris { };

Dieser Post wurde am 30.09.2005 um 10:59 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
30.09.2005, 11:00 Uhr
(un)wissender
Niveauwart


Passt schon

~2D == D2

~0010 1101 == 1101 0010
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
30.09.2005, 11:09 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


naja nur woher weiß er welche regel er nehmen muss
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
30.09.2005, 11:14 Uhr
(un)wissender
Niveauwart


Wie welche Regel? Ist immer die gleiche. Addieren (nicht die CheckSum!), Komplement bilden, Byte extrahieren, vergleichen.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ Allgemeines (OffTopic) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: