Go Down

Topic: Zeitprobleme Serial.read (Read 1 time) previous topic - next topic

666

Hi,
folgende Problemstellung:

Ich schicke via C# 5 Werte zum µC speichere diese in ein Array, werte aus diesen die Prüfsumme (alle Werte addieren) und vergleiche diese mit einer zu Fuß eingegebenen Prüfsumme im Programm und schicke dann ok wenn Prüfsumme == Prüfsumme oder ein Nicht OK wenn nicht.

Soo, bei 5 Werten kein ding, alles Prima, 10 gehen auch.

Ab 30 krieg ich nicht OK.

Wo ist das Problem. (9600 baut beidseitig).

Danke
Matthias

uwefed

#1
Sep 02, 2010, 10:37 pm Last Edit: Sep 02, 2010, 10:40 pm by uwefed Reason: 1
Hallo Oesema

Zuviele Leute glauben, daß es hier nur so von Hellsehern wimmelt.
Um etwas sagen zu können mußt Du schon den Sketch uns schicken.

Wie groß sind die Werte? Eine Summe ist kein gutes Mittel um eine Prüfsumme zu erzeugen; da mußt Du schon bitweise ExklusivOR von jedem Byte machen.

Grüße Uwe

Joghurt

#2
Sep 03, 2010, 08:06 am Last Edit: Sep 03, 2010, 08:08 am by Joghurt Reason: 1
Bitweises XOR alleine ist auch nicht 100% gut, weil dann die Reihenfolge der Eingaben egal ist. Besser wäre ein XOR in Verbindung mit einem Bitweisen Shift auf einer Variable von passender Größe, sicherer wäre eine Rotation...

Wie mach ich denn beim Arduino eine Rotation...?

uwefed

Ganz egal ist die Reihenfolge der Werte nicht, aber Du hast Recht, ist nicht 100% sicher Fehler zu finden.
Grüße Uwe

Joghurt

Hm? Wenn ich Bytes direkt übereinander-XOR-e, ohne die Position der Bits zu verändern, dann ist die Reihenfolge doch egal, oder nicht...? Wo ist mein Denkfehler?

uwefed

xor erkennt den Vertausch 2 Benachbarter  Bytes.
Grüße Uwe

Joghurt

Ich verstehs immer noch nicht... :(

Hättest Du mal ein Beispiel...?

666

Hi,
ich verpacke eine 32 bit zahl in 4byte, lesen diese über serielle schnittstelle aus, packe sie durch eine for schleife in ein array.
hab den/die fehler gefunden.
der µc ist zu schnell
warte jetzt erst bis ich 4 byte im seriel buffer hab und inkrementiere die schleifenvariable wenn die forschleife durch ist.
mit der summierten prüfsumme hatte ich bis jetzt keine probleme, ich meine das sin 200 werte die ich prüfe, das müsste doch klar gehen oder?

666

Ich glaube nicht an hellseher :-)

Go Up