Visual Studio C++ Kommunikation mit Atmega

Gast #1624273
Hallo,
ich bin gerade dabei C++ zu lernen. Ich nutze Visual Studio 2008 
Professionell.
Jetzt wollte ich für ein Projekt ein Interface für einen Atmega 
schreiben, also der PC soll die vom Uc gelieferten Daten auswerten, und 
welche zurückschicken. Das ganze wollte ich über RS232 machen. Das 
klappt auch schon soweit.
Nur mein Problem ist. Ich brauche ja eine Benutzeroberfläche um die muss 
man sich ja beim uc zum Glück nicht kümmern. Ich habe jetzt die Wahl 
entweder ich mache das ganze in der Konsole. Aber da sehe ich das 
Problem, das ich ja zur Bedienung Eingaberoutinen brauche. Und so ein 
Cin hält ja das komplette Programm an. Das ist aber nicht gut, da das 
Programm ja noch mit dem UC kommunizieren soll im Hintergrund.
Oder ich mache das ganze mit einer Grafischen Oberfläche MFC oder 
ähnlichem. Wäre das einem absolutem Anfänger zu empfehlen? Ist es damit 
leichter im Hintergrund Sachen abzuarbeiten? Da die Grafische Oberfläche 
ja auf Multitasking basiert?

Viele Grüße
Persönliche Seite #1624280
> Und so ein Cin hält ja das komplette Programm an.
>  Das ist aber nicht gut, da das Programm ja noch mit
> dem UC kommunizieren soll im Hintergrund.

Das kann es aber auch ohne graphische Oberfläche - das Stichwort hier 
ist Multithreading. Die Kommunikation kannst Du in einem eigenen 
Thread ablaufen lassen, und die Eingabe/Ausgabe erfolgt getrennt davon 
im Hauptthread.

Du musst nur geeignete Mechanismen zur Synchronisation der Threads 
verwenden, die sind erforderlich, wenn beispielsweise der Hauptthread 
dem Kommunikationsthread mitteilen will, daß Daten vorhanden sind, die 
zu versenden sind.

Aber dafür existieren geeignete Synchronisationsobjekte wie z.B. die 
Critical Section.

Eine graphische Oberfläche nimmt Dir dieses übrigens nicht ab, auch hier 
empfiehlt es sich, die Kommunikation in einen im Hintergrund laufenden 
"Worker-Thread" zu verlagern.
Gast #1624295
Kannst du mir dazu Literatur empfehlen? Im Moment lese ich gerade C++ 
von A bis Z. Da sollte das Multitasking später auch noch kommen. Ich 
suche nur noch ein Buch, wo verstärkt auf Visual Studio eingegangen 
wird. Und auch vlt. da in Verbindung mit Multitasking.
Und gibt es generell Einwände, das ganze gleich Grafisch zu machen? Viel 
Soll das Programm von der Oberfläche nicht können. Außer ein paar Werte 
auf dem Atmega auszulesen, und auf Knopfdruck ein paar Befehle via RS232 
zu senden. Es wäre halt gut, wenn ich es hin bekommen könnte, das z.B. 
auf der Grafischen Oberfläche eine Variable aktuell angezeigt wird, also 
sobald die vom UC kommt, dass dann die Anzeige geändert wird.
Bei der Konsole sehe ich das Problem, dass für den Eigentlichen 
Grundaufbau also Menüs etc. sehr viel Zeit in Anspruch genommen wird, 
während ich in Visual Studio mit einem Klick einen Button habe.
#1625736
Hase schrieb:
> Hallo,
>
> verwende doch c# oder Java für das PC-Programm. Das ist viel einfacher
> als C++.

Die Idee ist gut, das Argument schlecht.

Meine Sachen für Windows mache ich nur noch in C#, eine wunderbare 
Sprache. Von vornherein auf Objektorientierung ausgelegt und nicht 
irgedwie reingebaselt wie bei C++ und vorallem da mächtige .net 
Framework im Hintergrund.

Zitat Larry Wall (Erfinder von Perl): "Eine gute Programmiersprache 
macht einfaches einfach und kompliziertes möglich".

Das trifft IMHO genau aif C# zu, Bei C++ ist zwar alles möglich, aber 
leider eben auch (zu) viel zu kompliziert.
Gast #1626095
Also ich würde schon gerne bei C++ bleiben, da mir die Sprache 
eigentlich zu sagt. Ich habe auch schon 500 Seiten dazu gelesen. Das 
wäre Dann umsonst, und ich müsste nochmal komplett mit C# von vorne 
anfangen.
Gast #1628600
Hallo,

wenn es um die Programmierung von Benutzeroberflächen unter Windows 
geht, dann ist c# oder Java viel einfacher als c++.

Siehe dazu auch:

Jochen Kalmbach: C++/CLI und WinForms macht keinen Sinn

Die Vorteile beider Sprachen:

- Das Framework für die GUI ist integriert.
- Viel weniger Ärger mit Zeigern.
- Der Compiler ist pingeliger. Das ist für Anfänger sehr wichtig.

Viel Spass.
Gast #1629168
Markus W. schrieb:
> So also Qt habe ich mal installiert. Die IDE ist ja ganz schön
> überladen.

Die muß man ja nicht benutzen.

> Nur finde ich dort keine Serielle Schnittstelle.

Qt selbst enthält dafür keinen Support. Da müßtest du noch z.B. 
QExtSerialPort installieren.

Andreas Kanzler schrieb:
> Wenn du eh schon in VS 2008 arbeitest, nimm doch statt nativem C++,
> Managed C++.

Das halte ich für so sinnvoll wie einen Kropf. Das ist im Kern 
eigentlich ein C# mit einer in Richtung C++ verbogenen Syntax. Mit 
echtem C++ hat das nicht mehr viel zu tun, auch wenn's auf den ersten 
Blick wie C++ aussehen mag.

> Dort hast du das ganze .net Framework im Rücken. Sachen wie
> Multithreding, serielle Schnittstelle, GUI sind damit sehr einfach und
> trotzdem mächtig.

Und sehr plattformgebunden.
#1629184
Wenn du gern mit nativem C++ arbeitst dann lies das Buch durch. Umsonst 
ist das auf keinen Fall! Multithreading ist in C++ zwar nicht ganz so 
einfach wie in C#, dafür ist der Lerneffekt größer ;)

Selbst wenn du später die GUI mit C# oder Java schreibst hast du einen 
viel schnelleren Einstieg, denn das meiste ist ähnlich.

managed c++ ist eine Krücke! Wenn du unbedingt mit C++ unter Windows 
eine Gui bauen willst nimmt man entweder C++/CLI oder eben Qt
Gast #1629409
Hi, hat jemand Erfahrungen mit der benutzung von Boost in einem 
Qt-Programm? Ist das ohne weiteres moeglich - also funktioniert z.b. das 
Signal/Slot - Konzept weiterhin, etc?
Gast #1631731
brott schrieb:

> Hi, hat jemand Erfahrungen mit der benutzung von Boost in einem
> Qt-Programm? Ist das ohne weiteres moeglich - also funktioniert z.b. das
> Signal/Slot - Konzept weiterhin, etc?

Ich hab das zwar bisher nicht versucht, aber ich sehe keinen Grund, 
warum es nicht funktionieren sollte. Wo siehst du da ein Problem?

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.