Daten mit C++ an rs232 senden

#1184923
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 :-(
Gast #1184932
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.
#1185054
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
Gast #1185143
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.
Gast #1185153
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 :-)
#1185441
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
Persönliche Seite #1185530
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.

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