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


von Xfight 2. (xfight)


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 :-(

von Peter (Gast)


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.

von Rufus Τ. F. (rufus) Benutzerseite


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.

von Xfight 2. (xfight)


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

von Peter (Gast)


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.

von ... .. (docean) Benutzerseite


Lesenswert?

2. Link bei Google
http://www.tetraedre.com/advanced/serial.php

Hab gesucht nach borland c++ comport

Vlt. hilfts?

von Sven P. (Gast)


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 :-)

von Xfight 2. (xfight)


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

von Rufus Τ. F. (rufus) Benutzerseite


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.

von Xfight 2. (xfight)


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

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.