Forum: Mikrocontroller und Digitale Elektronik BASCOM einfache Prüfsumme und PHP


von Christian Z. (christian_z)


Lesenswert?

Hallo,

folgendes Problem. Ich übermittle Daten von einem PHP-Socketserver, auf 
anfrage meines µC, an den µC und sollte sicherstellen das die Daten 
einigermaßen richtig ankommen.

Konkret frägt der µC mit dem String:

2-5-gettime (2 = Nummer des Terminals in dem der µC steckt, 5 = Die 
gewünschte Aktion in dem Fall "schick mal die aktuelle Zeit rüber", 
gettime = lesbarer Text ohne weitere Funktion)

beim PHP Socketserver nach der Uhrzeit und bekommt dann soetwas zurück:

12:33:17_03-04-11_3 (Uhrzeit_Datum_TagderWoche)

Da is ein wenig mit der Seriellen Übertragung auf dem Kriegsfuss stehe 
will ich mit einer einfachen Prüfsumme schaun obs ungefair hinhaut.

Meine Idee:

Ich gehe auf der PHP-Seite hin und zerlege den String in seine 
"Zeichen", multipliziere diese mit einem Wert (ka. 1234) und summiere 
alles auf. Die Summe hänge ich dann einfach noch an den String an.

Gleiches das auf der µC-Seite, Wert vergleichen und ggf. Daten neu 
anfordern.

Denke ich da gerade in eine falsche Richtung ? hat wer sowas schonmal 
gemacht ? oder eine viel bessere Idee ?

Stichwort CRC, ich weis aber nicht ob die BASCOM implementation mit 
einer in PHP übereinstimmt, wenn das wer weis nehme ich auch gern diese 
Funktion ;-).

Danke

PS: Das gibt ne Zeiterfassung, läuft soweit auch ganz gut nur immer 
wieder kommts vor das die Daten irgendwo untergehen. Aufbau im Prinzip 
ein µC -> RS232 -> DeviceServer (RS232->LAN) -> eigenen PHP-Sockeserver 
-> Datenbank und Daten an den µC zurück.

Christian

von Manuel M. (Gast)


Lesenswert?

Mit Bascom kannste ziemlich leicht eine CRC-Prüfsumme von nem String 
berechnen. Und in PHP hängste einfach an den Zeit-String (durch ein 
Komma getrennt) die CRC-Prüfsumme der Zeit an. Auf dem AVR einfach den 
ankommenden String wieder zerlegen -> schauen ob Prüfsummer der 
Empfangenen Zeit = mitgelieferte Prüfsumme.

Hoffe das hilft dir!
Manuel

von Christian Z. (christian_z)


Lesenswert?

Das Prinzip ist mir klar (hatte ich versucht zu beschreiben) nur das wie 
berechne ich auc beiden seiten das gleiche. Ich muss in der PHP-Welt 
einen nenne wir es "Algorithmus" bauen den ich in Bascom nachvollziehen 
kann (gleiches Ergebnis). Die Checksum Funktion wir wohl kaum einer aus 
PHP ebtsprechen. Diese CRC8/16/32 Funktionen sind selbs auch noch 
unterschiedlich wie ich lesen musste.

Danke soweit, noch wer eine IDEE ?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.