Hi,
ich möchte hier mal kurz meine quick and dirty Lösung für eine sehr
komfortable Möglichkeit, Messwerte von Mikrocontrollern über die
serielle Schnittstelle, direkt in GNU Octave bzw. GNUplot grafisch
darzustellen und weiterzuverarbeiten. Enstanden ist es mal für meine
Studienarbeit als mir die Anbindung Scilab/Octave zur seriellen
Schnittstelle unter Linux fehlte. Seither ist das mein Mittel der Wahl
:-)
Das Programm öffnet eine pipe auf die binary der jeweiligen Programme
und steuert direkt jene direkt mit deren Kommandosprache an.
Für das C/C++ Projekt steht dann z.B. folgende Klasse zur Verfügung:
1 | class GNUoctave
|
2 | {
|
3 | public:
|
4 | GNUoctave();
|
5 | ~GNUoctave();
|
6 | void command(const string& cmd);
|
7 |
|
8 | protected:
|
9 | FILE *pipe;
|
10 | };
|
Das ganze ist in einem einfachen Konsolenprogramm realisiert, welches
für meine Zwecke Daten von Mikrocontrollern verarbeitet. Dazu wird die
serielle Schnittstelle eingebunden (fest im Code: ttyUSB0, 57600 Baud).
Auf das Kommando "R" an den µC wartet das Programm dann auf einen
Datenblock: "<"+129Byte+">" und verarbeitet diesen mit verschiedenen
gnuplot/octace Funktionen.
Als Beispiel ist im Bild mal die Berechnung einer FFT von einem
digitalisierten Signal, erfasst von einem ARM7.
Falls es jemandem Nützt, stelle ich hier gleich noch den Quelltext rein.
Compilieren sollte es unter fast jedem aktuellen Linux mit GCC4.3/4.4.
Spezielle Libs sind nicht von Nöten.
Tschöö
Franz