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


von Sascha (Gast)


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

von Sascha (Gast)


Lesenswert?

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

von Stefan (Gast)


Lesenswert?

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

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnfiles/html/msdn_serial.asp
(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.

von Schoasch (Gast)


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

von Sascha (Gast)


Lesenswert?

Vielen Dank.
Ich denke mit den Infos kann ich schon mal loslegen. ;)

von Win32API (Gast)


Lesenswert?

@Schoach

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

von Dmitri (Gast)


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

von Rooney B. (rooney)


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_climate_logger_main_panel_windows_software.gif

von Wolfram (Gast)


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"

von Sascha (Gast)


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!

von Dirk (Gast)


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

von fieser Rahul (auch Oskar genannt) (Gast)


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...

von fieser Rahul (auch Oskar genannt) (Gast)


Lesenswert?

Bin ich schnell...

von Blackbird (Gast)


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

von Sascha (Gast)


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

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.