www.mikrocontroller.net

Forum: PC-Programmierung Daten von digiOszi graphisch darstellen mit C++


Autor: martinwisi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute

Also ich habe vor in den Weihnachtsferien mal wieder ein wenig zu
basteln B-)
Naja jedenfalls hab ich auf der Uni ein wenig C++ gelernt. Und wollte
jetzt mal fragen wie ich da am besten Daten sichtbar mache. Ich meine
wir haben da immer nur so Konsolenprogramme geschrieben mit allen nur
erdenklichen Zeugs (dyn Speicher, Arrays, Strings, File IO, Streams,
etc..), aber eine grafische Ausgabe haben wir nie gemacht. Auch kein
Benutzerinterface.
Ist das sehr schwer? Ich meine ich will mir ein Programm schreiben,
dass mir 10 oder 8 Bit Werte die von der seriellen Schnittstelle(später
wenn die neuen USB Chips von Microchip kommen auch mit USB) kommen,
darstellt und speichert. Und nein ich will eigentlich nicht LabView
verwenden, auch wenns verlockend ist ;-)
Also die elektronische Schaltung ist kein Problem, habe ich auch schon
mal aufgebaut und mit VisualBasic dann ausgewertet, aber das VB ist
einfach zu langsam und bietet mir nicht genug möglichkeiten.

Also da ich absolut keinen Tau davon habe wie ich da Grafiken /
Diagramme mit C++ erstellen kann, frage ich mal ob mir hier jemand eine
kleine Anleitung, oder eine gute Internetadresse geben könnte, DrGoogle
hat leider wieder mal versagt...

Danke im Voraus

MfG Martin W

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Empfehlung: Eine der portierbaren C++-GUI-Klassenbibliotheken, wie
beispielsweise wxWidgets. Auf www.wxwidgets.org sind neben der
Klassenbibliothek selber auch etliche Beispiele und Tutorials zu
finden.

Wenn es - aus welchen Gründen auch immer - MFC erforderlich ist. dann
finden sich unter www.codeproject.com etliche Beispiele, Codefragmente
und Tutorials.
wxWidgets hat den Vorteil, daß es im Gegensatz zur MFC auch auf anderen
Plattformen als Windows verwendbar ist ...

Zur Kommunikation mit USB-Devices scheint die von mir hier bereits
mehrfach empfohlene LibUSB auch eine Lösung zu sein, die gibt's
ebenfalls für mehrere Plattformen (Win32, Linux und wohl auch MacOS
X).

Wohlauf, viel Spaß!

Autor: Blubb (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, wenn du in Zukunft regelmäßig ähnliche Tools erstellen willst, dann
arbeite dich in die C++ - Geschichte ein.
Wenn es dagegen ein einmaliges Projekt ist, dann nimm LabView. Damit
hast du in einem Nachmittag Ergebnisse, die du sonst nur in
wochenlanger Arbeit und Tüftelei erreichen wirst. Gerade für solche
kleinen und einmaligen Projekte ist LabView ideal. Wenn du nicht gerade
Softwareentwickler bist/wirst, wäre es sinnvoller sich in LabView als in
die Windows-GUI-Programmierung einzuarbeiten.

Autor: martinwisi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Also naja ich studiere Elektrotechnik / Informationstechnik ist
zumindestens sicher nicht von Nachteil wenn man mit der Windows GUI
umgehen kann oder ;-)

Naja ich habe mich inzwischen schon ein wenig eingearbeitet mit der
Hilfe von: http://pronix.linuxdelta.de/C/win32/win32_1.shtml
Kann jetzt schon Fenster erzeugen und verändern und so, nur irgendwie
find ich das schon recht kompliziert. Klasse anmelden, Fenster aufrufen
mit Parametern, Message Handling, etc...
Außerdem bin ich auch noch nicht richtig drauf gekommen wie ich die
Daten dann anzeigen kann. Ich meine es gibt zwar wieder dieses
Microsoft Chart Tool mit dem man einfache Diagramme erstellen kann,
aber das gleiche hatte ich in Visual Basic auch schon und war nicht
zufrieden damit. Vielleicht kann mir da ja wer einen Tip geben ob es da
noch was anderes gibt was ich nicht finde ;-)

Was ist eigentlich dieses MFC++ von dem ich überall lese?

MfG Martin W

Autor: Blubb (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
MFC ist Männer-C++ g

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Martin, der von Dir angefangene Weg ist sicherlich der steinigste, wenn
er auch das beste Grundlagenwissen vermittlen wird.

MFC ist - wie das von mir empfohlene wxWidgets - eine C++ -
Klassenbibliothek, die mehr oder weniger gut die Win32-API vor Dir
"versteckt" und vor allem nervige Tipparbeit (Fensterklasse
registrieren, monströse switch-Statements in den Messagehandlern etc.)
abnimmt.
MFC ist recht unbeliebt, da einerseits von Microsoft, und daher
andererseits nicht portierbar. MFC-Programme schreibt man am besten mit
einem Microsoft-Compiler und dessen App- und ClassWizards (das sind
recht primitive Quellcodegeneratoren).
Man kann mit der MFC genausogute Ergebnisse erzielen, wie mit anderen
Klassenbibliotheken auch - nur muss man sich dann auch sehr gründlich
mit deren Einschränkungen auseinandersetzen.

Portierbare Klassenbibliotheken bieten den Vorteil, daß das erlerte
Wissen nicht plattformabhängig ist - was IMHO ein nicht von der Hand zu
weisender Vorteil ist.

Verbreitete plattformübergreifende Klassenbibliotheken sind QT von
Trolltech und eben wxWidgets (früher wxWindows). QT ist wunderbar, kann
nur unter Windows nicht eingesetzt werden, da der Quelltext, der zum
Verstehen einer Klassenbibliothek, zum Debuggen etc. erforderlich ist,
nur gegen sehr viel Geld (1500 EUR) zur Verfügung gestellt wird.
Würdest Du unter Linux entwickeln, machte das nichts, da die
Linux-Variante von QT offen zur Verfügung steht.

wxWidgets ist frei, offen und mit diversen Compilern einsetzbar. Ein
Codegenerator und GUI-Builder ist DialogBlocks von Anthemion, der
allerdings kostet etwas Geld (unter 100 EUR).

Autor: Dennis Moser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

wir würden uns freuen wenn Sie sich einmal www.LabViewForum.de
ansehen.

Wir sind ein Forum für LabVIEW (*1) Entwickler und Interessierte.

Das LabViewForum.de (*2)  entwickelt sich zum grössten Forum rund um
LabVIEW im deutschsprachigen Raum (D-A-CH).

Durch rege Teilnahme an Diskussionen konnten schon so manche Problem
erfolgreich gelöst werden :-)

Wir würden uns freuen wenn Sie uns einmal auf Ihrer Seite erwähnen
würden und verbleiben


Mit freundlichem Gruss

Dennis Moser
Rosenweg 4
57577 Hamm-Sieg
Tel. 0172 8 444 129
Webmaster@LabViewForum.de


Zu *1:  LabVIEW ist eine Objektorientierte Programmiersprache aus dem
Hause National Instruments www.ni.com
            mit der es möglich ist innerhalb von kürzester Zeit
komplexe Anwendungen für fast jeden Bereich zu realisieren,
            da  nicht wie mit herkömmlichen Programmiersprachen ohne
Quelltext programmiert wird.

    *2: Das LabViewForum.de wurde durch Initiative von Dennis Moser im
August 2004 gegründet, um nach jahrelanger Programmiererfahrung mit
LabVIEW das Wissen         mit gleichgesinnten auszutauschen und
KnowHow zu bündeln. Für viele ist das LVF zentraler Anlaufpunkt
geworden, um sich über Problemlösungen auszutauschen.

Autor: Weihnachtsmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Ich kann mehr oder weniger gut C++ Builder. Eigentlich habe ich nur
Probleme mit dem Syntax gehabt. Wenn man sich ein bisschen mit
Grafikprogrammierung auskennt ist es ein Klacks 2D-Grafiken zu
programmieren. Du wirst das sicher auch locker hinkriegen. Vielleicht
am Anfang nicht so schnell aber wenn man den Dreh dann raus hat ist es
kein Problem mehr. Wenn es nur darum geht erfasste Daten darzustellen
könnte man die Sache nach Excel  exportieren Ich selber halte auch
nicht viel von andere Elemente wie LabView.Wenn LabView sicher auch
nicht schlecht ist.

Gruss

Der Weihnachtsmann

Autor: Blubb (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"LabVIEW ist eine Objektorientierte Programmiersprache "

Naja...

Autor: Paul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
MFC ist nicht nur wegen dieser zwei Gründe ("von MS" und
"windows-only") unbeliebt, sondern insbesondere auch wegen des
schlechten Designs.

Zum Einen werden durchweg Präfixe anstelle namepaces benutzt. Wieso das
äußerst schlecht ist, kann man hier nachlesen:
http://www.c-plusplus.de/forum/viewtopic.php?t=41464
Prefixe stammen aus früheren Tagen und sind heute bestenfalls völlig
überflüssig. Vor allem war nie beabsichtigt, dass "normale
Programmierer" ihren Klassen das C-Präfix verpassen. Dies war
ursprünglich nur für MFC-Klassen vorgesehen, um sie eben vom
Anwendercode zu unterscheiden.

Andererseits ist die MFC nicht sehr kompatibel zur STL. std::string
kann man quasi nicht benutzen, std::vector ist auch nicht kompatibel zu
CArray und so weiter.

Wenn du GUIs programmieren willst, würde ich eher zu "Windows Forms"
(ist dann kein reines C++, sondern "managed C++" .NET) raten. Das ist
nicht ganz so schlimm wie MFC. Damit kann man sehr schnell gute GUIs
programmieren.

Noch besser (aber leider auch wieder komplizierter) wäre eine
plattformunabhängige GUI-Lib, wie z.B. das oben genannte wxWidgets.
Alternativ könntest du auch gtkmm oder qt benutzen (wobei letzteres
unter Windows nicht kostenlos ist). gtkmm läuft mit dem gcc sowie dem
MS C++ Compiler 7.1 (nicht 7.0! 7.1 gehört zu "Visual Studio 2003").

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
naja, wenn man die entscheidung, ob man eine library verwenden will oder
nicht davon abhängig macht ob die lib namespaces verwendet oder nicht,
kann man gleich einige sehr nette libraries vergessen (und damit mein
ich jetzt nicht nur gui libraries).

übrigens verwendet unter anderem auch wxWidgets (noch) keine
namespaces, um es auch auf plattformen kompilieren zu können auf denen
nur c++ compiler verfügbar sind, die namespaces gar nicht oder nicht
richtig unterstützen.

Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also warum nicht gleich perl und gtk ?? bzw phyton oder was auch
immmer... sollte doch auch mit div widgetsets laufen weil c/cpp libs
kann man draus aufmachen.. sonnst tcl/tk... wär doch auch was...

und gegen die mfc kann ich nix einwenden..liegt warscheinlich daran das
ich alles was ich an klassen usw brauche schon selbst (nach)
programmiert habe ... damits a) schneller ist und b) das tut was ich
will...

wobei das immer spezialfälle waren... für den otto-normal-user sollte
die mfc eigentlich alle stückerl spieln...

zum thema labview... das kostet viel geld... dann noch nicht offen..
und nebenbei kann ich mir unter cpp meinen code selbst schnitzen...was
zwar arbeit ist und zeit kostet...aber wie sagt doch bob ross so
toll... das ist mein universum ... hier kann ich sogar berge versetzen
g

darf ich mal fragen welche uni das ist?? bei uns in graz wollen die uns
angeblich vstudio.net "beibringen" wogegen ich allergisch bin.. aber
mal schaun... hab noch ein paar wochen bis zum nächsten semester ;)

73 de oe6jwf / hans

Autor: Martinwisi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

@Hans
Ja ich gehe auf die TU Graz. Ja wir arbeiten mit VS.Net... aber ich
habe auch nie mit was anderem gearbeitet, also kann ich net sagen wie
schlimm es wirklich ist ;-)

Also LabView bekomme ich dann von der Uni sicher auch gratis, ich mein
mit der muss ich als Informationstechniker sicher noch viel arbeiten.
Genauso wie PSpice, ElEfAnT3D, VS.net, etc...
Müsste ich mich umfragen vielleicht bekomm ich so eine
Studentenversion... Ist die Frage ob ich mich dann ganz ohne Hilfe da
auskenne. Kann ich da Problemlos auf serielle Schnittstelle und später
USB zugreifen, von dort kommen nämlich die Daten des Oszillsokops?
Damit müsste man dann ja auch prima FFT machen können oder? Reicht für
ein gutes FFT 128k Datenpunkte á ein Byte?

Also ich hab nachdem es mir ja stark angeraten wurde auch wxwidgets
probiert. Muss aber sagen, dass ich es extrem unhandlich. Also
außenstehender sich da einzuarbeiten ist trotz vieler Tuturien im Netz
net wirklich lustig und wirklich durchblicken wie und welche
Bibliotheken eingebunden bzw compiliert werden sollen tu ich noch immer
net, auch wenn ich schon ein einfaches Fenster machen kann... Jippi
gg
Die Verwaltung der Kurve ist kein Problem. Auch auf die serielle
Schnittstelle hab ich schon zugreifen können.
Aber da ein ordentliche grafische Darstellung einer Kurve zu machen...
Fragts mich in 3 Jahren noch mal gg


MfG Martin

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Martin, die von Dir geschilderten Probleme dürften in der einen oder
anderen Form aber bei jeder C++-Klassenbibliothek auftreten.
Das Einbinden von Bibliotheken gehört in die Kategorie "Bedienung des
Compilers/der IDE" und hat mit der Klassenbibliothek selbst nichts zu
tun.
Wenn Du Dir eine aktuelle Version von DialogBlocks besorgtest, hättest
Du eine - vom fehlenden integrierten Debugger abgesehen - nahezu
vollständige IDE mit Quellcode-Editor, Projektverwaltung und
GUI-Builder, die eine ganze Reihe von (auch freien) C-Compilern
unterstützt.
Zu Deinem eigentlichen Thema kann ich nur auf
http://www.wxwidgets.org/technote/plotting.htm verweisen, das klingt
doch ziemlich nach Deiner Anwendung.

Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
tjo.. VS.net... najo mich stört da das .net ...das ist meines wissens zu
sehr schlimmbessert worden... nun gut drüber lässt sich streiten... ich
bleib bei meinem studio 6 ;)

also am besten wenn du VS.Net hast... www.codeproject.com

sonnst... ka .. sind schon viele dinge hier gefallen... ich kenn mich
ganz gut mit der mfc aus... für weitere dinge hatte ich bis jetzt keine
zeit... hab ja erst seit juni die matura und dann in den ferien wieder
arbeiten... da bleibt einfach keine zeit um sich mal eben ein eine neue
tool-sammlung einzuarbeiten...

im prinzip müssten alle widgetsets gleich arbeiten... fenster ist
nunmal fenster... ob man jetzt funktionen die auf ereignisse reagieren
so, oder so einbindet ist ja eigentlich wurscht...

und ob man sich jetzt im VS oder in einem anderen programm seine
oberfläche zurechtklickt ist ja auch ned so die tragik...

du sagst informationstechnik.. hmm auch e-technik oder hast nur IT
gemeint ;)

73 de oe6jwf / hans

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.