mikrocontroller.net

Forum: PC-Programmierung RS232 Kommunikation unter Windows


Autor: Thomas_v2.1 (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
hier nun das Programm, das unter Windows über die serielle
Schnittstelle mit einem angeschlossenen Mikrocontroller kommuninziert.
Die Kommunikation geschieht über eine "Port.dll" die von Burkart
Kainka erstellt wurde. Da findet man auch weitere Funktionen und
Beschreibungen zu dieser .dll
http://www.b-kainka.de/download.htm

Mit dem Programm selber lassen sich über Checkboxen auf einem
Controllerboard angeschlossene LEDs an- und ausschalten, und außerdem
der Zustand angeschlossener Taster abfragen. Um dauernd abzufragen
müsste man einen separaten Thread starten - soweit bin ich aber noch
nicht :-(

Zu den im Archiv enthaltenen Programmen:
rs232.c - C-Programm das in das Controllerboard kommt (Philips
89C51RD2)
com.h - beinhaltet die Funktion ladeDLL() zum Laden der Port.dll
Unit1.cpp - eigentliches Hauptprogramm
ControllerRS232.exe - Kompiliertes und ausführbares Programm

Das Projekt habe ich mit dem Borland C++ Builder 5 erstellt.

Über Kommentare würde ich mich freuen, da dieses auch mein erstes
Windowsprogramm in C++ ist.

MfG
Thomas

Autor: Gerhard Gunzelmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Thomas

das ist glaub ich nicht der Kommentar den Du Dir erhoffst:

Unser Firewall meldet VIRUS in Deiner .rar !!!!

Gerhard

Autor: Thomas_v2.1 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

also ich habe mir die selber nochmal runtergeladen und konnte keinen
Virus finden. Welcher sollte es denn sein, wenn du eine Warnung
bekommst wird ja auch gesagt welcher Virus das sein soll. Ich habe das
mit eine frisch aktualisierten Norton AV 2002 gemacht, und es wurde
nichts gefunden. (Obwohl das natürlich auch kein absoluter Garant für
Virenfreiheit ist)
Vielleicht liegt es daran dass die kompilierte .exe Datei auch
drinsteckt, ansonsten werde ich die herausnehmen und nochmal posten.

Mehrere einzelne Textdateien lassen sich ja leider nicht zusammen
anhängen.

Thomas

Autor: Gerhard Gunzelmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Thomas

ich habs nochmal versucht, aber unser Firewall bleibt bei seiner
Meinung und läßt den Download nicht zu.  Was er gefunden hat, sagt er
aber nicht. Nur: "Virus detected or file corrupted".


Gerhard

Autor: Thorsten (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Beim Start (unter WinXP) passiert das : <siehe Anhang>

Autor: Gerhard Gunzelmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Thomas

(relative) Entwarnung:
ich hab in unserer DV-Abteilung nachgefragt:" Äh.. ich glaub, der kann
kein RAR entpacken..."

Sorry
Gerhard

Autor: Thomas_v2.1 (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ok, dann halt nochmal als zip-File und nur der Quellcode ohne
ausführbare Datei und dll. Sollte normalerweise nix schiefgehen.

Thomas

Autor: Thorsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Leider hab ich den Borland Compiler nicht. Kannst du das nicht einfach
so kompilieren, daß die DLL nicht benötigt wird ?

Autor: Thomas_v2.1 (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Habs mal probiert, konnte es jedoch mangels Rechner ohne Borland
Compiler gerade nicht testen.
Die exe-Datei hat sich dadurch natürlich auf 400Kb vergrößert. Die
Port.dll muss aber immer noch im gleichen Verzeichnis wie die
ausführbare Datei stehen, da ich, um diese statisch zu linken, das
Programm hätte abändern müssen.

Autor: Thorsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein kleiner Tip: UPX benutzen (http://upx.sourceforge.net/). Das ist ein
Packer speziell für exe-Files, deine 400kB verkleinern sich dann auf
161kB und das File muß später nicht mehr entpackt werden.


Thorsten

Autor: Gerhard Gunzelmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Thomas

ich habs aus Zeitgründen noch nicht ausprobiert, nur mal in die dateien
gekuckt. Eins ist mir dabei aufgefallen: In .h-dateien sollten nur
Definitionen stehen, kein Code. Aus com.h solltest Du den Code
rausholen und in ein - was weiß ich - com.c oder com.cpp packen.


Gerhard

Autor: Gerhard Gunzelmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nochwas

speziell für Delphi und Borland C++ Builder gibts für RS232 da noch
was:

http://www.winsoft.sk/comport.htm

Gruß
Gerhard

Autor: Thorsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich war gerade auch mal auf der Seite. Welche Einschränkungen gibts denn
bei der Demoversion ? Ich konnte dort nichts finden.

Thorsten

Autor: Gerhard Gunzelmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Thorsten

ich hab die Sowa schon getestet, funktioniert einwandfrei, es gibt beim
Starten des Programms nur ein fenster zum wegklicken. Wenn man damit
leben kann...


Gerhard

Autor: Wolf4124 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Thomas_v2.1
Wenn du denn ´Link zu der Internetseite mit dem Port-Treiber angibst
nehme ich an, das du ein Buch vom Autor gelesen hast.
Kannst du eins empfehlen?
Ich möchte mit einem Programm Daten aus der RS232 empfangen.

Gruß

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die serielle Schnittstelle ist unter Windows eigentlich nicht so schwer
zu programmieren, daß man zu irgendwelchen Fremd-DLLs greifen müsste.
Gut, möglicherweise bereitet einem da Borlands Compiler (unnötige)
Probleme - keine Ahnung, ich verwende Borland-Compiler nicht mehr, seit
der Verarsche mit Borland C++ 4.0.

Beispiele & Sourcen für Compiler, die MFC-Sourcen übersetzen können,
finden sich unter www.codeproject.com; hier beispielsweise
http://www.codeproject.com/system/serial.asp

Autor: Gerhard Gunzelmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Thomas

ich hab jetzt Dein programm ausprobiert. Bei mir läuft das aber nicht.
ich hab winxp, da gibts ne böse Fehlermeldung, wenn ich auf "COM
öffnen" drücke:

Windose meldet dann " ControllerRS232 raised exception class
EAccessViolation...." und "DLL kann nicht geladen werden". Das kommt
dann wohl von deinem Programm, hab nicht geschaut.

Läuft das nur unter einem bestimmten BS, oder muß man da noch ne DLL
irgendwohin schaufeln ?

Gerhard

Autor: Thorsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Port.dll muß im gleichen Verzeichnis sein. Ich habs auch unter XP
probiert, funktioniert einwandfrei. Ist bei dir COM1 verfügbar ?

Autor: Gerhard Gunzelmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

klaro, hab den Borland auf meinem 2.rechner, hab vergessen das PORT.Dll
rüberzukoperen. jetzt läuft soweit. gut - hab nix dranhängen. bringt
zumindest keine Fehlermeldung


Gerhard

Autor: Nando Specht (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Zur Kommunikation nehme ich immer ASYNC32 von tmssoftware
(http://www.tmssoftware.com/).

Geht aber nur für Delphi und Borland Builder.
Das schöne dabei ist, dass es Freewarekomponenten sind und sie somit
keinen Einschränkungen unterliegen. Leider ist die Installation etwas
kompliziert und man benötigt dringend Englischkenntnisse.

Autor: Thomas_v2.1 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Wolf4124:
also zu dem Buch selber kann ich dir auch nicht viel sagen. Ich habe
mir das mal in der Buchhandlung angesehen, fand es vom Thema eigentlich
sehr interessant wie viele seiner Bücher. Leider benutzt er als
Programmiersprache größtenteils irgendein Basic, oder mal
Delphi/Pascal.
Da ich irgendwie auf Basic keine Lust mehr habe (irgendwie musste man
auf den Homecomputern von Atari800XL, Schneider CPC oder Atari ST immer
umlernen, und das hat sich soweit ich das sehe heute noch nicht
geändert, da es da einfach keinen Standard gibt).
Deswegen wollte ich mich mehr auf C/C++ konzentrieren, da ich das
Gelernte dann fast überall einsetzen kann, sei es auf Controller-
Windows- oder Linuxsystemen.

Autor: Nando Specht (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Auf der tmssoftware gibts noch ein paar Demo-Beispiele, ich hab sie mal
angehangen.

Man kann natürlich mit diesen Komponenten noch viel mehr tun, z.B.
Terminal- und Modememulation, etc. Zum Ansprechen der Seriellen
Schnittstelle des PC oder mit USB-Serial-Adaptern hab ich sehr gute
Erfahrungen gemacht. Zumindest erspart es das Einbinden von dll's.

Autor: eugen d (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wieso benuzt ihr nicht die win32 api funktionen zum kommunizieren über
rs232 ich hab es mir auch wesentlich schwieriger vorgestellt einfach
mit CreateFile port öffnen und mit writefile oder readfile lesen oder
schreiben auf die ports
greez eugen d

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Eugen

Kannst du nicht einfach mal ein kleines Beispiel posten, in dem die
Verwendung der von der erwähnten Funktionen demonstriert wird?
Ich habe auch schon in diversen Foren versucht, "die Lösung" für mich
zu finden, allerdings kommen häufig nur sehr schwammige Aussagen als
Antwort. So weiss man nie, ob der Antwortende es überhaupt schon einmal
selbst gemacht hat, oder einfach nur von ihm erworbenes Halbwissen
weitergibt.

Gruß Alex

Autor: eugen d (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
jo mach ich kann aber etwas dauern, ich bin grad im stress wegen bund
und so :-\ aber ich habe hart um dieses wissen gekämpft und möchte es
gerne verbreiten ;-)*gg
greez eugen  etwa in 2-3 tagen poste ich es hier

Autor: eugen d (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
hier iss nun die beschreibung wie man comports mit winapi öffnen kann,
ich habe es so geschrieben, wie ich es brauchte um es zu kapieren also
es iss  das erste "tut" von mir

zur ergänzung sollte man ( generell für windowsprogrammierung nötig)
die winapi referenz saugen da sind dann auch deteils drinn die ich nur
angedeutet hab
ftp://ftp.cs.virginia.edu/pub/lcc-win32/win32hlp.exe

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.