einfaches PC-C-Programm zum Datenempfang über rs232

Gast #470981
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
Gast #470990
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.
Gast #471001
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
#471199
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
Gast #471212
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"
Gast #471246
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!
Gast #471250
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
Gast #471336
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...
Gast #471340
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren