Hi, Ich habe ein Carambola Entwicklerboard. Auf diesem Board möchte ich einen Hardwaretreiber/Software schreiben, die über zusätzliche Perepherie Messwerte captured. Den Treiber bekomm ich schon zum laufen, das ist nicht das Problem. Ich möchte über eine der LAN bzw. WLAN Schnittstellen die Messwerte an einen Server schicken. Hierzu fehlt mir nun der prinzipielle Ansatz, damit ich mir mit der mühsam zusammenprogrammiertern Treiberarchitektur nicht ins Knie schieße. Wie kann ich möglichst einfach die Daten zum Server übertragen und dort Speichern, damit diese weiterverarbeitet werden können? Wie muss eine Anwendung am Server aussehen, damit ich die Messwerte in einem Plotter anzeigen lassen kann? Ein Plotterfenster eingebettet in einer Webseite wäre MEGA. Es ist und bleibt ein Hobbyprojekt. Eine möglichst einfache Lösung, die man auch recht einfach umsetzen kann, wäre erstrebenswert. Grüßle, Andreas
Hiho, du kannst ja deine LAN/WLAN Schnittstelle einfach über den Treiber ansprechen. So wies Aussieht läuft da ja eh ein Linux drauf. Schau mal hier: http://www.linuxhowtos.org/C_C++/socket.htm ( Achtung erster Treffer bei Google und nur kurz überflogen) Deine Stickworte bei Google sind Linux und Socket Viel Spaß
Ich denke Du solltest dir für die Darstellung der Messwerte AJAX ansehen. http://www.genlogic3.com/glg_demos/process_demo.html Falls auf dem Server eine Datenbank läuft kannst Du mit einem mini Datenbank Clinet die Daten dorthin übertragen. http://www.hsg-kl.de/faecher/inf/datenbanken/postgres/python/index.php
Sorry. War der falsche link für die Messwertdarstellung. http://www.genlogic3.com/glg_demos/ajax_dashboard_demo.html
Ach, die hälfte vergessen^^ Du must natürlich deine Serverapplikation die Daten entgegennehmen und speicher lassen....ganz überraschend. Das ist letzendlich nur ein Programm, welchen auf dem Port lauscht und die eintrudelnden Daten wegschreibt. Wie du das in dein Browserfenster bekommst? Hm, mir fallen spontan zwei Ansätze ein. 1. über gnuplot ein Bild mit den Daten erstellen und das dann von einem Webserver deiner Wahl und der Homepage deiner Programmierkunst ausliefern lassen. 2. die Homepage von eionem Python Script im Zusammenspiel mit der Lib Mathplotlib die Homerpage erstellen und denn wieder über den Webserver ausliefern. PS: Da lasse ich mich auch gerne eines besseren Belehren, da ich das zur Zeit über python mache und mir das irgend wie ein wenig umständlich vorkommt. Grüße,
Beim Plotten nimmt man ja oft die Zeit für eine der Achsen. Damit kommt es dann drauf an daß man nicht nur die Messwerte aufzeichnet, sondern die auch möglichst früh mit Zeitstempeln verknüpft. Wenn Du auf Deiner Peripherie nen µC hast würde ich dort die Zeitstempel machen, anonsten spätestens auf dem Carambola. Bis das Zeug beim Server ist, ist es zu stark verjittert. Wenn das einmal gelöst ist, kannst Du die Daten ganz relaxed zum Server bekommen. Wie schon vorgeschlagen kannst Du die Daten per Socket zum Server schicken. Halte ich aber für aufwendiger. Vom Client aus direkt in die Datenbank auf dem Server ist nicht schlecht wenn Du die Daten sowieso in ner Datenbank dauerhaft speichern willst. Wenn Du keine Datenbank verwenden möchtest fände ich das hier die einfachste Lösung: - Ein Skript oder kleines Programm sammelt die Daten und schreibt sie in eine Datei - Die Datei liegt am besten auf einer Ramdisk (tmpfs) - Je nach Datenmenge wird alle paar Sekunden/Minuten/Stunden eine neue Datei angefangen - Auf dem Server gibst Du ein Verzeichnis frei, z.B. per SMB oder NFS - Die alte Datei wird geschlossen und auf das freigegebene Verzeichnis verschoben - Den Verschiebevorgang auf den Server machst Du am besten asynchron vom Aufzeichnen der Daten (z.B. 2. Skript mit & hintendran starten). Damit können kurze Netzunterbrechnungen etc. nicht das weitere Aufzeichnen unterbrechen. - Die Daten liegen jetzt hübsch nach Zeit sortiert in einem Verzeichnis auf dem Server. Plotten kannst Du die jetzt z.B. mit Gnuplot
>Es ist und bleibt ein Hobbyprojekt. Eine möglichst einfache Lösung, die
man auch recht einfach umsetzen kann, wäre erstrebenswert.
Schoen ... andere verbraten Monate daran.
Andreas Gassner schrieb: > Ein Plotterfenster eingebettet in einer Webseite wäre MEGA. Wenn sowieso schon ein Webserver läuft, kann dieser die Daten auch entgegen nehmen und mittels php o.ä. z.B in einer DB ablegen. Einfach eine Verbindung zum Webser aufbauen und z.B.: "GET /datenerfassung.php?daten=123" dahin schicken. (Siehe HTTP z.B. bei Wikipedia) Ein Plotterfenster kann der Webserver mittels php auch erstellen. Gruß Jobst
Hallo Zusammen, Vielen Dank für eure Antworten. Ich versuche mal die beiden Varianten, so wie ich sie Verstanden habe, zusammenzufassen: 1. Auf Basis Dateifreigabe: - Der Client erzeugt zyklisch eine Messdatendatei, die mit festen abständen auf einer Serverfreigabe die Messdatei abspeichert - die Weiterverarbeitung läuft damm am Server, seis die Datein zusammenzufassen, in einer DB zu speichern, oder auf einen WebServer zu legen 2. Auf Basis ClientServer über Sockets - "natürliche" Interprozesskomunikation, wie im Netzwerk üblich - die Intelligenz liegt im Server der die Daten wie gebraucht weiterverarbeitet - Der Server verteilt entweder eine Systemzeit, oder einen Broadcast trigger, auf dem die Clients ihre Messstellen abfragen. - Die Clients kümmern sich nur ums Capturen und Zeitstempeln der Messdaten Bewertung 1: - Formatierung der Messdatei als Basis der Funktionen - Proprietärer Ansatz, Clients setzen redundant Funktionen um, die besser im Server aufgehoben sind - Änderungen und Erweiterungen müssen auf allen Clients ausgerollt werden - Höherer Aufwand (Speicher) in Clients - Keine einheitliche Zeitbasis - Wenn auch Server ein Carambola board ist, könnte es wegen dem Dateioverhead mit Speicherplatz eng werden Bewertung 2: - Resourcenbedarf bei Clients gering - Server verteilt entweder eine einheitliche Zeitbasis, oder einen Messtrigger, damit ist zeitliche Konsitenz der Daten gesichert - System und Funktionsänderungen betreffen nur das Serversystem, nicht aber die Clients - Trennung von Datenerfassung und Datenverarbeitung - Nutzen eines Standards - Es gibt einen zentralen Datenpool, gerne auch DB Ich denke dass die Lösung zwei insgesamt die bessere Lösung ist.Danke für eure Hilfe, die Architektur steht. Grüßle Andreas
Der clientseitige Aufwand lässt sich noch weiter reduzieren, indem der Client nicht Dateien erzeugt und diese mit Dateiübertragungsprotokollen (SMB, FTP etc.) über Netzwerkfreigaben bewegt, sondern indem der Client mittels HTTP-GET- bzw. POST-Requests Daten an ein auf dem Webserver laufendes CGI-Skript sendet, das diese wiederum in eine Datenbank einträgt. Das CGI-Skript kann problemlos z.B. in php geschrieben werden. Der Client muss neben dem grundlegenden TCP/IP-Stack nur noch über die Fähigkeit verfügen, HTTP-Requests abzusetzen, und das ist 'ne ziemlich leichte Übung.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.