Datenübertragung allgemein…

Hallo, wie wird es denn richtig gemacht?

Der Mega 2560 hat eine serielle Verbindung direkt zu FileMaker (Mac). Die gesendeden Daten werden direkt in eine FM-Datenbank geschrieben. Ein Satz (mehrere Werte) gleich ein Datensatz (mehrere WerteFelder in FM) Im Moment läuft es so.

Ich gebe in FM eine StartZeit und einen Intervall ein. Beispiel: Startzeit 09:00h, Intervall 1 Stunde. Dann drücke ich eine StartTaste in FM. Um 09:00h sendet FM über seriell eine Anfrage an den Mega 2560 und holt die Daten des selben in den ersten Datensatz. Über einen FM-Timer wird nun alle Stunde eine Abfrage an den Mega 2560 gesendet- der dann auch die angeforderten Daten sendet. FM läuft im Hintergrund auf dem Mac. Neue Abfrage, neuer Datensatz. Hier liegt der Mega 2560 auf der Lauer und wartet auf die Abfrage.

Es geht aber auch umgekehrt. Der Mega 2560 bekommt eine StartZeit und einen Intevall zugewiesen. Nun sendet der Mega 2560 in einem bestimmten Intervall seine Daten an FM. Für jede Sendung wird auch hier ein neuer Datensatz angelegt. Hier liegt der Mac mit FM auf der Lauer.

Wer gibt denn nun den „Takt“ an? Der, der die Daten sendet (Mega 2560) oder der, der die Daten abruft (FM auf Mac)?

Gibt es da bestimmte festgelegte Regeln oder Richtlinien wie das abzulaufen hat? Für diese Art der Kommunikation gibt es doch bestimmt einen Fachausdruck, der einem Ideen für den richtigen Ablauf und dessen Sicherheit vermitteln kann. Gruß und Dank Andreas

Hallo,

wie wird es denn richtig gemacht?

wie man es richtig macht hängt sicher sehr vom geforderten Einsatzgebiet und der gewünschten Zuverlässigkeit ab. Der von Dir beschriebene Ablauf sieht für mich schon mal ganz gut aus.

Ich hab selber viele Jahre beruflich damit zugebracht, die Daten von verschiedenen Geräten auf den PC zu holen. Und ich hab eigentlich fast immer den Weg gewählt, dass der PC das Sagen hat, also die Daten von den Geräten holt. Wenn man es anders herum macht, dann muss der kleine Controller die ganze Fehlerbehandlung machen, die man wesentlich komfortabler auf dem PC lösen kann.

Im direkten Vergleich ist der Controller auch fast immer zuverlässiger als der PC. Dem kann schon mal die Putzfrau den Stecker ziehen, um Saft für den Staubsauger zu haben. Oder jemand meint es gut und will Strom sparen. Das merkt man erst am nächsten Morgen. Also: wenn der PC Daten haben will, dann kann er ziemlich sicher davon ausgehen, dass er die bekommt. Anders herum muss der Controller immer damit rechnen, dass er die Daten nicht los wird, weil der PC irgendwie out of order ist.

Der letzte Fall macht viel mehr Arbeit, es sind vielmehr Fallstricke zu berücksichtigen und man kann selber viel mehr Fehler einbauen. Und die zu debuggen kann echt haarig werden.

Aber das ist nur meine Meinung

Graubart

Zumindest eine serielle Datenübertragung läuft normalerweise erst in einen Puffer, der vom Treiber des jeweiligen Systems gefüllt wird. Ein Programm kann dann einen Übertragungswunsch angeben, und den Rest dem Treiber überlassen (asynchrone I/O). Ist die Ein-/Ausgabe erledigt, kann das Programm ein Signal erhalten und entsprechend reagieren.

Auf dem Arduino hat Serial einen eingebauten Puffer (von Stream geerbt), der in loop() gelesen oder geschrieben werden kann. Wenn nur auf eine Eingabe gewartet wird, dann kann der Controller schlafen gelegt werden, und nur bei einem Interrupt das eingetroffene Zeichen in den Puffer schreiben. Dann läuft loop() weiter und prüft, ob die Eingabe abgeschlossen ist, oder ob weiter gewartet/geschlafen werden soll. Umgekehrt kann der Arduino auch jederzeit etwas abschicken, das dann im Puffer des PC landet.

Wie die Gegenseite auf einem Mac aussieht, kann ich nicht sagen, da ich weder MacOS noch FileMaker kenne. Ansonsten sieht es dort gleich aus, FM darf jederzeit Daten senden oder empfangen.

Hallo, so richtig weiß hier wohl keiner etwas über einen bestimmten Standart. Dann mache ich es nach meinen eigenen Richtlinien. Ich bin auch der Meinung, das der PC der Master ist und der Arduino der Slave. Der Arduino sammelt- und der PC holt es sich, wenn er es braucht.

Über ein Defekt oder Totalausfall muß man sich nicht so die Sorgen machen. Wenn der PC ausfällt, dann sammelt der Arduino weiter. Fällt der Arduino aus- ist der Drops gelutscht, der PC schaltet alles auf "aus".

Das mit der seriellen Übertragung habe ich wohl noch nicht so richtig gefressen. Oberflächlich scheint es zu laufen, aber wenn man richtig hinschaut, dann zickt da noch etwas. Die abgerufenen Werte scheinen hinterher zu laufen. Es sieht fast so aus, als wenn immer das "erste" aus dem Puffer geholt wird- und nicht das letzte. Das muß ich mir noch einmal anschauen. Also, schönen Dank euch beiden. Gruß und Spaß Andreas