Forum: Projekte & Code SignalView - octave/gnuplot in C++ einbinden


von Franz N. (abnoname)


Angehängte Dateien:

Lesenswert?

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

von Franz N. (abnoname)


Angehängte Dateien:

Lesenswert?

Und der Quellcode.

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.