mikrocontroller.net

Forum: PC-Programmierung X/Y Plot mit C++


Autor: keule (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich verwende als Programmierumgebung Microsoft Visual Studio 6.0 C++.
Bisher hab ich erreicht das ein bmp Bild eingelesen werden kann und 
dieses
in Graustufen umgewandelt werden kann. Nun möchte ich ein Histogramm 
grafisch darstellen. Gibt es irgendwo einen Sourcecode, den man nur 
einbinden muss?

Autor: Daniel S. (theoretiker)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
http://www.gnuplot.info/faq/faq.html
Punkt 6.8

Wie es genau über die Pipe abgewickelt wird, weiss ich leider nicht.

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ihr mit eurem GnuPlot immer. ;) Viel schöner, und direkt zum integrieren 
in die GUI: http://www.mitov.com/html/plotlab.html

Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Ich verwende als Programmierumgebung Microsoft Visual Studio 6.0 C++.

Visual C++ 6 ist vollkommen veraltet, nimm lieber eine der modernen
Visual-C++-Versionen (mit der Express-Version gibt es die sogar
kostenlos). Du wirst heutzutage mit der Version 6 einfach keine Freude
mehr haben, weil du alle naselang in irgendwelche Probleme durch die
mangelhafte C++-Umsetzung rennen wirst. Sehr viele, auch sehr
grundlegende und einfache, C++-Programme lassen sich mit VC6 nicht
kompilieren, weil dieser Compiler nicht im geringsten standard-konform
ist.

Tu dir selbst einen Gefallen und gib diesem Antik-Stück seine
wohlverdiente letzte Ruhe.

Autor: keule (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn ich C++ MFC Version downloade und verwende, muss ich da was 
bezahlen?

Autor: keule (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kennt von euch jemand "zedGraph" ? Mit dieser Software kann man auch 
Grafiken plotten. Diese Software wurde in C# geschrieben. Kann man 
eigentlich die DLL in MFC C++ verwenden?

Autor: Tobias T. (thelaughingman)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was hältst du von sowas ?
Hab nur mal eben schnell gesucht:
http://www.codeproject.com/KB/miscctrl/pgllib.aspx

Visual Studio 2008 Express C++ gibt es kostenlos hier:
http://www.microsoft.com/germany/Express/download/...

Ich verwende die Professional Version - habe aber gehört das man unter 
Umständen bei der Express Version noch das Platform SDK installieren 
muss.
Infos hier:
http://blogs.msdn.com/windowssdk/archive/2008/02/2...

Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Wenn ich C++ MFC Version downloade und verwende, muss ich da was
> bezahlen?

Jein. MFC wird für neue Programme nicht mehr empfohlen, es ist einfach 
viel zu alt. Aber MFC kostet Geld, ja.

Autor: keule (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab in mein Visual Studio 6.0 C++ Programm die GUI von der Homepage 
http://www.mitov.com/html/plotlab.html eingebunden. Ich kann von den 
Darstellungsarten zwischen Scope und Waterfall wählen. Um nun ein 
Grauwerte Histogramm grafisch auszugeben, da hab ich noch Probleme. Kann 
mir dazu jemand helfen?

Autor: keule (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Beispiel mit Waterfall:
float SampleDataArray[ 255 ];
  
for( int i = 0; i < 255; i ++ )
  SampleDataArray[ i ] = rand()-16000;
  
Waterfall.Data.AddData( SampleDataArray, 255 );

Nun hab ich da folgendes Problem. Ich möchte das nur ein Wert pro 
x-Position darstellen. Die x-Achse geht von 0 bis 255. Wie kann ich dies 
mir "plotLab" realisieren?

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Für dein histogramm brauchst du doch nur das Scope. Dann einfach ein 
Array mit 256 Elementen (x-Achse) und die Elemente sind dann die Höhe. 
dann musst du noch irgendwo auf "bars" bei der Darstellung umstellen. 
normal sind ja durch interpolation verbundene Linien. Es gibt aber auch 
so eine Art Säulendiagramm... weiß leider ausm Kopf nicht genau, wie das 
hieß.

Autor: keule (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank für die Hilfe. Das wäre super wenn dies so gehen würde. Ich 
hab bisher alles mögliche durchsucht. Ich weiss nicht wie man die "Bars" 
bzw. "Säulendiagramm" einstellen kann.

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich kann´s dir morgen zeitigstens sagen. In meiner Diplomarbeit: 
http://supachris.homeip.net/Diplomarbeit.pdf auf Seite 61 oder so siehst 
du, wie das aussieht.

Autor: keule (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In der Header Datei "CSLScope.h" hab ich etwas entdeckt.
Es gibt ein Aufzählungstyp mit dem Namen "CTSLScopeChannelMode".

enum CTSLScopeChannelMode { cmLine, cmBar, cmPoint };

Ich weiss allerdings nicht was ich nun genau tun muss, damit ich das 
Säulenformat nutzen kann.

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
keule wrote:
> In der Header Datei "CSLScope.h" hab ich etwas entdeckt.
> Es gibt ein Aufzählungstyp mit dem Namen "CTSLScopeChannelMode".
>
> enum CTSLScopeChannelMode { cmLine, cmBar, cmPoint };
>
> Ich weiss allerdings nicht was ich nun genau tun muss, damit ich das
> Säulenformat nutzen kann.

Dann lies die Doku.

Autor: keule (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In der Doku steht auch nicht viel drin. Es sind da keine kleinen 
Beispiele enthalten.

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Doku gibts leider wirklich nicht viel. Ich hab´s über die Drop-Down Box 
der IntelliSense gefunden. Schließlich wird einem ja von Visual Studio 
alles angeboten, was man mit den Klassen-Membern machen kann.

Autor: keule (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was meinst du mit Drop-Down Box der IntelliSense ?

Autor: keule (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab in der Hilfe was gefunden, ich weiss nicht wie man die Grafik so 
einstellen kann, das sie so aussieht wie das zweite Bild.

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
http://sapphiresteel.com/IMG/png/intellisense.png Automatisch 
Vervollständigung. Somit kannst du dich durch alle Klassen-Member usw 
hangeln.

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So einfach geht das:
m_Scope.Channels[0].ChannelMode = CTSLScopeChannelMode::cmBar;

Autor: keule (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das mit dem Intelliisense funktioniert bei mir nicht. Wieso, das weiss 
ich auch nicht.

Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
gab's das je in VC6?

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Klar. Hat aber nur sporadisch funktioniert. Und aktivieren muss man es 
glaub auch irgendwo in den Optionen. Naja, wie fast alles an VC++ 6.0 
ein Graus.

Autor: keule (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja und wo muss man das in VC++ 6.0 aktivieren?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.