mikrocontroller.net

Forum: PC-Programmierung Daten mit C++ an rs232 senden


Autor: Xfight 2009 (xfight)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Community,
ich versuche gerade unter Windows XP einen com-port anzusteuern. Ich 
habe schon viele Themen durchgelesen aber die helfen mir leider wenig 
weiter.
Ich habe sehr gute Kenntnisse in PHP und gut in C++. Jedoch was das 
Thema angeht ist das echt Neuland. Ich verwende den C++ Builder von 
Borland und habe schon einige Beispiele getestet, jedoch läuft keines 
weil der Compiler immer Fehler zurück gibt. In vielen Beispielen, kann 
man einen String übertragen wie "Hallo". Mir reicht es, wenn ich die 8 
Pins mit 0 oder 1 belegen kann (01001011). Das ganze wollte ich als 
Konsolenanwendung machen, damit ich dieses unter cmd aufrufen kann. Das 
ich die Schnittstelle nicht direkt ansprechen kann ist klar. Im Inet 
habe ich gelesen, dass man Treiber einbinden soll. Wie soll das gehen?
Dann ist in vielen Berichten die Rede von Timern...? Brauch ich das? Ich 
möchte ja keine Daten hintereinander versenden...

Am Ende soll wenn ich das Programm öffne einfach nur am com1 ein 
dynamischer Wert anliegen. aufruf könnte etwa so aussehen:
c:\send.exe -p 01001011

Ich möchte kein fertiges Programm, sondern etwas Hilfestellung weil bis 
jetzt bin ich bei 0%.


Viele Grüße,
xFight

Ps: Bin bestimmt nicht der erste hier :-(

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann schreib doch erstmal wie weit du schon gekommen bist.

Ein Treiber liefert ja windows schon mit, du musst bloss die 
schnittstelle öffenen, die Übertragungsparameter einstellung und schon 
kannst du send.

Die MSDN ist sehr ausführlich.

http://msdn.microsoft.com/en-us/library/aa363858(VS.85).aspx
http://msdn.microsoft.com/en-us/library/aa363434(VS.85).aspx
http://msdn.microsoft.com/en-us/library/aa363194(VS.85).aspx
http://msdn.microsoft.com/en-us/library/aa365747(VS.85).aspx

Das ganze ist die WindowsAPI, es gibt auch Bibliotheken die ganze sache 
ein wenig kapseln. Aber damit hatte ich nie gearebeitet.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> ich versuche gerade (...) einen com-port anzusteuern.
> Mir reicht es, wenn ich die 8 Pins mit 0 oder 1
> belegen kann (01001011).

Das kann so nicht gehen. Die serielle Schnittstelle hat nur drei 
Ausgangssignale: TxD, RTS und DTR. Die anderen Signale (RxD, CTS, DSR, 
DCD und RI) sind Eingänge.

Autor: Xfight 2009 (xfight)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter wrote:
> Dann schreib doch erstmal wie weit du schon gekommen bist.
Bin bis jetzt bei 0%, weil alles was ich versucht habe nicht 
funktioniert hat.
> Ein Treiber liefert ja windows schon mit, du musst bloss die
> schnittstelle öffenen, die Übertragungsparameter einstellung und schon
> kannst du send.
Und wie kann ich die Schnittstelle öffnen?
> Die MSDN ist sehr ausführlich.
>
> http://msdn.microsoft.com/en-us/library/aa363858(VS.85).aspx
> http://msdn.microsoft.com/en-us/library/aa363434(VS.85).aspx
> http://msdn.microsoft.com/en-us/library/aa363194(VS.85).aspx
> http://msdn.microsoft.com/en-us/library/aa365747(VS.85).aspx
Da blick ich nicht so genau durch...
Für das Script benötige ich also diese Funktionen: 
CreateFile,SetCommConfig,...
> Das ganze ist die WindowsAPI, es gibt auch Bibliotheken die ganze sache
> ein wenig kapseln. Aber damit hatte ich nie gearebeitet.
Kennt jemand so eine Bibliothek, die auch unter meinem Compiler läuft. 
Hatte schon eine getestet aber hat leider nicht gelaufen.
> Das kann so nicht gehen. Die serielle Schnittstelle hat nur drei Ausgangssignale
Man lernt immer dazu ;-)

Danke für die Hilfe bis jetzt,
xFight

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Da blick ich nicht so genau durch...
> Für das Script benötige ich also diese Funktionen:
> CreateFile,SetCommConfig,...
ja, und die sind bei windows immer mit dabei. Die sollten sich aus jedem 
Compieler verwenden lassen.

Autor: ... ... (docean) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
2. Link bei Google
http://www.tetraedre.com/advanced/serial.php

Hab gesucht nach borland c++ comport

Vlt. hilfts?

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also unter Linux brauch ich dafür kein Programm zu schreiben, das geht 
mit Bordmitteln (stty, echo und Gerätedateien) -- dann geht das unter 
Windoof bestimmt auch. Zumindest früher konnte man da auch auf COM 
schreiben :-)

Autor: Xfight 2009 (xfight)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 2. Link bei Google
> http://www.tetraedre.com/advanced/serial.php
>
> Hab gesucht nach borland c++ comport
>
> Vlt. hilfts?

Vielen Dank für den Link. Damit kann ich meine LED, die ich zum testen 
angeschlossen habe, schön blinken lassen. Jedoch kann man damit Texte 
versenden und mir reicht es, wenn ich die Ausgänge auf 0 oder 1 setzen 
könnte.
Ich habe auch schon weitergesucht und habe diese "Serial Port DLL" 
gefunden: http://kk.elektronik-4u.de/index.php?Sid=14
Mit dem Beispiel Programm, kann man die Ausgänge RTS und DTR auf 0 oder 
1 setzen.
> Ausgangssignale: TxD, RTS und DTR.
Kann man den TxD nicht 0 oder 1 setzen? Und wie verwende ich diese 
Library unter C++?

mfg,
xFight

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Kann man den TxD nicht 0 oder 1 setzen?

Prinzipiell ja, nur widerspricht das komplett dem Sinn einer seriellen 
Schnitstelle. Was Du machen möchtest, heißt MARK und SPACE.

Für Deinen Frickelansatz (sorry, anders kann ich Bit-Banging auf 
PC-Schnittstellen nicht nennen) wäre die Parallelschnittstelle übrigens 
etwas besser geeignet, allerdings bräuchstest Du dafür entweder eine 
echte Parallelschnittstelle oder aber den 
Selbstbau-USB-Paralleladapter von Henrik Haftmann. Andere 
USB-Paralleladapter sind nur Druckerschnittstellen, Bitgefrickel 
erlauben die nicht.

Autor: Xfight 2009 (xfight)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für deine Antwort, jetzt weiß ich ich wieso man dazu extrem wenig 
im Inet findet ;-)
Ich versuche es jetzt anders zu lösen, indem ich den LPT verwende. Dafür 
hab ich auch mehr Tutorials gefunden;-)
Für mich hat sich das Thema erledigt.

xFight

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.