mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik einfaches PC-C-Programm zum Datenempfang über rs232


Autor: Sascha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
Ich versuche Daten mit einem Mega32 über einen Max232 an einen PC zu 
senden.
Mit Hyperterminal klappt das wunderbar.Nur ist mir das zu umständlich, 
da ich die empfangenen Daten anschließend noch in C bearbeiten möchte.
Leider leider haben wir in der Schule die serielle Schnittstelle nicht 
programmiert, weswegen ich sozusagen "auf dem Schlauch" stehe.
Bei einer Suche im Web stoße ich lediglich auf Programme in c++, von 
denen ich nicht viel verstehe. Hat vielleicht jemand schon einmal ein 
derartiges, kleines Programm geschrieben? Oder Hinweise, wie man das 
Problem lösen könnte?

Vielen Dank im Voraus.

Tschaui
Sascha

Autor: Sascha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dass C nicht die beste Wahl ist, glaube ich gern - aber leider die 
einzige Sprache, die in den Grundzügen verstehe... ;)

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In C unter Windows musst du seitens des Windows-API ein paar Klimmzüge 
machen:

http://msdn.microsoft.com/library/default.asp?url=...
(Gefunden über http://www.lvr.com/serport.htm )

Daher wurden für den gemeinen Programmierer Libaries entwickelt.

Vielleicht C++ kann man solche Libraries besonders schön entwickeln? 
Jedenfalls gibt es eine grosse Anzahl von C++-Libraries für die serielle 
Kommunikation.

Autor: Schoasch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was soll denn bitte so schwer daran sein, die serielle Schnittstelle und 
C zu verwenden?!

Zuerst musst du den Com-Port Konfigurieren und öffnen mit 
:OpenComConifg.
Danach brauchst du noch die Befehle:

ComWrt(); //Eine Anzahl von Bytes hinausschreiben
ComWrtByte(); // Byte hinausschreiben
FlushInQ(); //Buffer löschen
ComRdTerm(); //Daten einlesen

Und zum schluss musst du den Port wieder schliessen: CloseDev();

So und wo soll nun da Problem sein?

Ich muss sagen, ich habe einen Trafoprüfstand über die 
RS232-Schnittstelle gebaut... und hatte nicht wirklich Problem damit.... 
und das ganze ist in C geschrieben ;-)

mfg Schoasch

Autor: Sascha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank.
Ich denke mit den Infos kann ich schon mal loslegen. ;)

Autor: Win32API (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Schoach

Die von Dir aufgeführten Funktionen gehören aber nicht zum Win-API!

Autor: Dmitri (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Sascha

Es geht auch einfacher. Schau Dir mal dieses Programm an:

http://realterm.sourceforge.net/

"capture to file, settable capture size or capture duration"

Gruss
Dmitri

Autor: Rooney Bob (rooney)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du kannst das ganze mit LabWindows CVI 8.0 realisieren, dann kannst auch 
eine g'scheite Oberfläche ausprogrammieren.

Die Handhabung der Software ist relativ einfach mit sehr geringer 
Einarbeitungszeit. Außerdem wird in C programmiert und du hast eine 
große Auswahl an fertigen Funktionen, unter anderem auch diese, die 
Schoasch erwähnt.

Und so könnte es beispielsweise aussehen...
http://www.poms-engineering.at/images/projects_cli...

Autor: Wolfram (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Bei einer Suche im Web stoße ich lediglich auf Programme in c++, von
>denen ich nicht viel verstehe.
>...Oder Hinweise, wie man das Problem lösen könnte?

Deine Fähigkeiten zur Recherche im Internet verbessern.
In diesem Forum ist dies jede Woche Thema in "PC-Programmierung"
Ansonsten schau in der MSDN nach Thema "CreateFile" oder "Serial Port"
Da gibt es einen Artikel "Serial Communications in Win32"

Autor: Sascha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
Da ich keinen Ansatz hatte, viel mir die Suche tatsächlich schwer.
Mein Hauptanliegen ist es, die mit dem Mega32 ermittelten Werte in eine 
Excel Tabelle zu implementieren. In C hätte ich die Zeichenfolge 
notfalls sortiert, mit entsprechenden Erklärungstexten versehen und dann 
zweispaltig ausgedruckt. Das wäre wie gesagt die Notlösung für mein 
Problem, das ich in der Excel-programmierung auch nicht firm bin.

Das Programm, welches Dmitri empfiehlt scheint für mich geeignet. Aus 
den angegebenen Funktionen lässt sich bestimmt das Notwendige für meine 
Zwecke ermitteln.

Meld mich, sobald ich etwas hinbekommen habe. ;)
Vielen Dank erstmal!

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, in der Codesammlung findest ein Beispiel (Voltmeter Excel9 zum 
ansprechen der RS232 Schnittstelle. Du brauchst nur ein bischen das 
Makro anpassen und kannst deine Werte in Tabelle speichern.

Gruß,
Dirk

Autor: fieser Rahul (auch Oskar genannt) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Mein Hauptanliegen ist es, die mit dem Mega32 ermittelten Werte in eine
>Excel Tabelle zu implementieren.

Die serielle Schnittstelle kann man unter Excel per VBA direkt 
ansprechen. Dazu braucht man "nur" das MSCOMM-Dingsbums (OCX?).
Mehr dazu findet man unter www.activevb.de oder anderen 
vb-Hilfeseiten/-Foren.

"+excel +rs232" könnte bei google auch ein paar Treffer hervorbringen...

Autor: fieser Rahul (auch Oskar genannt) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bin ich schnell...

Autor: Blackbird (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn die Daten in Excel gespeichert werden sollen, dann bietet sich 
schon das MSComm-Controll und VBA (die "Makro-Sprache" von MSOffice) an.

In C/C++ (nicht objektorientiert!) geht es recht einfach mit der WinAPI. 
Nur muß man den Programmaufbau eben auf asynchrone Events (nichts 
anderes ist der Empfang eines oder mehrerer Zeichen über die serielle 
Schnittstelle) ausrichten. RxD (vom COM-Port) kann man "pollen" oder per 
Event (vom OS) anzeigen lassen. Und spätestens hier sollte man wissen, 
wie Windows mit Events, Messages usw. umgeht.
Aber diese Dinge werden vom MSComm-Control in Verbindung mit der 
event-orientierten VBA-"Sprache" schon mit erledigt.


Blackbird

Autor: Sascha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alles klar.
Dann werde ich das mit Excel direkt probieren. Habt vielen Dank für die 
vielen und vor allem schnellen Infos! - Dieses Forum hat mich dann 
wieder einmal gerettet!!! ;)
Sascha

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.