Forum: PC-Programmierung Mikrocontroller mit RS 232 ansteuern(C++)


von Florian S. (flocean)


Lesenswert?

Hallo zusammen,

ich arbeite mich gerade durch das von Euch angebotene AVR Tutorial. Ich 
steh jetzt beim UART. Dazu möcht ich gerne eine Konsolenanwendung 
schreiben, die per RS 232 meine externe Schaltung( Mikrocontroller, der 
eine LCD Anzeige steuert )ansteuert. Ich gebe eine Zeichenkette, oder am 
Anfang auch ein Zeichen ein, dieses wird per RS 232 an meinen 
Mikrocontroller geschickt und der sendet es dann ans LCD Display. Der 
zweite Teil steht bereits in der Form dass ich eine feste Zeichenfolge 
in nem Assemblerprogramm vorgebe, den Mikrocontroller dann damit 
bespiele(per STK 500), auf mein Steckbrett setze und die gewünschten 
Zeichen dann auf meinem Display erscheinen(nicht elegant seh ich ein -> 
Anfänger).

Die Konsolenanwendung möchte ich mit C++ schreiben. Nun zu meinen 
Fragen:

Was für Möglichkeiten hab ich auf meine Hardware von meinem PC 
zuzugreifen per Konsolenanwendung? C++ nutzt in ein paar Fällen streams( 
iostreams, filestreams). Gibt es son ein Konzept auch für 
Schnittstellen?
Mein zweites Problem sehe ich darin dass die RS 232 Schnittstelle nicht 
real existiert, ich also über ne USB Schnittstelle gehen muss und dann 
auf einen RS 232 Adapter. Wie sieht die Programmierung dann aus?

Freue mich über jede Antwort und bedanke mich schonmal im Voraus. Falls 
das ganze zu kompliziert wird, wäre ich auch schon über 
Literaturhinweise oder entsprechende Internetquellen dankbar.

Beste Grüße,

Flocean

: Verschoben durch User
von Helmut (Gast)


Lesenswert?

Hallo Florian,
wenn ich das richtig verstehe geht es dir erstmal um einen Test per 
Hand.
Das Einfachste wäre in diesem Fall wohl, die Zeichen mit einem einfachen 
Terminalprogramm (z.B. Hyperterminal, das ist bei Windows-XP glaube ich 
noch dabei, ob auch danach noch weiß ich leider nicht).
Falls du unter Linux arbeitest gibt es so etwas (nur viel besser) sicher 
dort auch.

Dort einfach die COM Schnittstelle direkt öffnen, also nicht über Modem 
eine Verbindung aufbauen was normalerweise der Zweck eines solchen Tools 
ist. Dann die Baudrate, Parity, kein Handshake, kein Echo, usw. 
einstellen. Die Zeichen die du dann an der Tastatur eintippst müssten an 
der Sendeleitung der ausgewählen seriellen Schnittstelle zu sehen sein 
(Oszilloskop). Falls kein Oszi zur Hand ist kannst du auch (ohne deine 
Hardware angeschlossen zu haben) TxD und RxD die vom PC kommen brücken 
(müssten die Pins 2 und 3 des 9 poligen sub D sein). Dann müssten die 
Zeichen die du eingibst auch wieder am Bildchirm zu sehen sein.

Ich hoffe das hilft dir etwas weiter.

Viel Glück

Helmut

von Cyblord -. (cyblord)


Lesenswert?

Um unter Windows in C++ auf die Com Schnittstelle zuzugreifen, schaue 
dir dir Funktion "OpenFile" und die Funktionen drumrum (Write, Read 
usw.) in der windows.h an.

gruß cyblord

von Florian S. (flocean)


Lesenswert?

Hallo und danke für die Antworten;-).

Die Idee mit dem Hyperterminal hatte ich auch, da ich aber Windows 7 
nutze hab ich keins zur Verfügung(Im Internet stehen aber anscheinend 
Anleitungen wie man doch noch eins bekommen kann). Für den Hardwaretest 
wäre das sicher eine gute Lösung. Prinzipiell möchte ich die 
Konsolenanwendung aufjedenfall schreiben. Seh das ganze als Übung zum 
ersten um meine C++ Kenntnisse mal um etwas Sinnvolles zu erweitern( ein 
Semester Taschenrechner und irgendwelche anderen Programme die niemand 
braucht) und zum anderen, möchte ich dieses Konzept in späteren 
Schaltungen weiterverwenden. Ne Verbindung zum Daten auslesen Befehle 
senden usw. kann sicher nicht schaden. Mir gehts in vorderster Linie um 
Üben und vorallem Erlernen von Grundlagen.

Beste Grüße,

Florian

von Stefan (Gast)


Lesenswert?

Hallo,

wenn du dir etwas solides aufbauen willst um deinen µC mit dem Computer 
zu steuern kann ich dir die Boost Library sehr empfelen. Die ist erstmal 
dafür da, dass du auf die Serielle Schnittstelle zu greifen kannst (auch 
mit USB-RS232 Adaptern.
Genau genommen brauchst du den Boost Asio Teil. hier ist ein sehr gutes 
Tutorial:

http://www.webalice.it/fede.tft/serial_port/serial_port.html#download

Dann kannst du wenn du möchtest noch eine Grafische Oberfläche mit 
QT-Creator aufbauen. Falls du schon mit C++ vertraut bist, hast du dich 
schnell in QT eingearbeitet.

Als einfaches Terminal Programm, ist Hterm für Windows sehr gut.

Viel Erfolg

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

Dann lad dir hterm runter als Konsolenprogramm.

In C++ greifste auf den UART zu wie auf ne normale Datei.

von mutti (Gast)


Lesenswert?

für win 7 etc.. gibts kostenlos den putty...

der kann auch rs232

Deine Mutti

von Cyblord -. (cyblord)


Lesenswert?

Naja gut also wenn man noch nichtmal in der Lage ist hterm oder Putty 
runterzuladen, dann frage ich mich schon ob man bereit ist (oder jemals 
sein wird), ne COntrolleranwendung mit RS232 und C++ Programm zu 
entwickeln. Der Weg ist auf alle Fälle noch lang.


gruß cyblord

von Mutti (Gast)


Lesenswert?

Quatsch cyberlord, das ist trivial. Offenbar nicht für Dich ;-(

von Florian S. (flocean)


Lesenswert?

So guten morgen und nochmals vielen Dank für die Antworten ich werd mich 
jetzt mal dran setzen und das ganze angehen. Vielen Dank für die 
mitgebrachte Geduld.

Beste Grüße,

Florian

von 232 (Gast)


Lesenswert?

die einfachste Möglichkeit die ich kenne:
RS-232 for Linux and Windows
http://www.teuniz.net/RS-232/index.html

von jack (Gast)


Lesenswert?

232 schrieb:
> die einfachste Möglichkeit die ich kenne:
> RS-232 for Linux and Windows

hab den Text nur überflogen, aber klingt interessant.

Ist das so ne Art Wrapper für die Systemcalls (zB termios unter linux) 
um den Code zwischen Linux und WIndows portabel zu halten?
An sowas bin ich nämlich momentan auch dran :-)

@ TE:
für dein Vorhaben würde ich erstmal HTerm empfehlen. Ein sehr gutes 
Terminalprogramm (das leider nicht mehr gepflegt wird, closed source ist 
und bei mir nicht mehr läuft :/ ).
Damit kannst du schonmal testen ob dein LCD die Zeichen darstellt die du 
am PC raussendet. Diesen Schritt solltest du nicht überspringen, damit 
kannst du schonmal dein uC Programm Testen/Debuggen.

Ein eigenes Programm zu schreiben ist dann der nächste Schritt.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Hterm ist kein Terminalprogramm, da es kein Terminal emuliert. Der Name 
ist insofern recht unglücklich gewählt.

Neben dem (mehr oder weniger unsäglichen) Hyperterminal ist TeraTerm ein 
echtes Terminalprogramm, das sogar im Sourcecode vorliegt.
http://ttssh2.sourceforge.jp/

von jack (Gast)


Lesenswert?

HTerm ist natürlich kein Terminal im strengeren Sinne. Aber genau das, 
was der Te braucht. Der Te will bestimmt nicht mit hyperTerminal 
arbeiten, am ehesten noch mit putty.

von Xenu (Gast)


Lesenswert?

Schöne Anleitung für die COM-Schnittstelle unter Windows:

http://www.robbayer.com/files/serial-win.pdf

Hier alle Funktionen für COM-Programmierung:

http://msdn.microsoft.com/en-us/library/windows/desktop/aa363194%28v=vs.85%29.aspx

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.