mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PC-Programm fuer RS232


Autor: senmeis (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich muß mit dem RS232 arbeiten. Die Arbeitsweise sieht so aus:

wenn ein Gerät angeschlossen ist, werden die beiden Leitungen DCD und 
CTS hochgesetzt. Wenn diese H-Pegel vom PC erkannt werden, sendet ein 
PC-Programm sofort ein Byte und fängt die Kommunikation an.

Frage: wie schreibt man solches Programm für PC?
In <Terminal V1.9b> von Bray++ gibt es Pascal Script, aber wie kann man 
die Pegel der Leitungen (DCD und CTS) mit dem Programm ablesen?

Gruss
senmeis

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn´s nicht unbedingt Pascal schauder sein muss: Zum Beispiel in C++, 
mit der Klasse von 
http://www.codeguru.com/Cpp/I-N/network/serialcomm...

Da kann man einen Event auslösen lassen, wenn die Pins gesetzt werden.

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Christian R.

>Wenn´s nicht unbedingt Pascal schauder sein muss: Zum Beispiel in C++,

Was ist an Pascal so schauerlich? Das hat wenigstens eine klare Syntax 
und man kann sich bei weitem nicht so schnell in den Fuss schiessen wie 
mit C.

MFG
Falk


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

Bewertung
0 lesenswert
nicht lesenswert
Klare Syntax? Mag sein. Und das unnötigste aller Schlüsselwörter: 
"then".

Und eine sehr verquere Logik, wann und wann nicht Semikola an 
Zeilenenden angegeben werden müssen.

Und Funktionen im Sprachumfang, die nicht mit Pascal-Mitteln 
nachgebildet werden können - es gibt Funktionen mit variabler 
Argumentenliste (writeln), aber man kann selbst keine erstellen.

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Rufus t. Firefly

>Klare Syntax? Mag sein. Und das unnötigste aller Schlüsselwörter:
>"then".

Geschmacksache.

>Und eine sehr verquere Logik, wann und wann nicht Semikola an
>Zeilenenden angegeben werden müssen.

>Und Funktionen im Sprachumfang, die nicht mit Pascal-Mitteln
>nachgebildet werden können - es gibt Funktionen mit variabler
>Argumentenliste (writeln), aber man kann selbst keine erstellen.

Niemand behauptet das Pascal der Stein der Weisen ist. Aber was man in C 
verbrechen kann, bzw. "aus versehen" sich antun kann, das geht in Pascal 
glücklicherweise nicht. Man denke nur an Funktionsaufrufe in If 
Anweisungen, wo es dann oft compilerabhängig ist welche Funktionen noch 
ausgeführt werden und welche nicht etc.
IMHO hat C zehnmal mehr Leichen im Keller als Pascal. Dass dennoch zum 
Quasistandard wurde ist paradox.

MfG
Falk


Autor: tomcat (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zu diesem Zweck gibt es meines Wissens die Funktion WaitCommEvent().

Folgende Vorgehensweise ( die Programmiersprache mal außen vor gelassen 
)

Öffnen der Schnittstelle mit CreateFile
Einstellen der Schnittstelle ( Timeouts, Baudrate usw. )
Und natürlich der Bitmaske für die Events mit SetCommMask
Dann je nach notwendigkeit einen zweiten Thread creieren der
mittels WaitForSingleObject oder mittels WaitForMultipleObject auf ein
Ereignis auf der Schnittstelle wartet.
Das Ereignis auswerten und die Kommunikation starten.
So funktionert das.
Ganz simpel kann man aber auch mit EscapeCommFunction geziehlt nach dem
DCD und CTS Staus "pollen" ist aber unprofessioneller.

Wenn Du allerdings USB zu RS232-Adapter verwendest musst Du bei solchen 
Sachen mit Problemen rechnen, evtl. muss man ein paar von den Dingern 
ausprobieren nicht alle sind zu gebrauchen.

Gruß
Tom

P.S.
Achja, ich mach das alles in Delphi ( PASCAL )

Autor: senmeis (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für eure Hilfe. Ist RLSD (receive-line-signal-detect) auf 
http://www.codeguru.com/Cpp/I-N/network/serialcomm... 
doch DCD (Data Carrier Detect)? Ich konnte diese Bezeichnung in meinem 
Doku nicht finden. Ach noch was, kann man in C++ den Pegel von DTR 
verändern?

Gruss

Autor: Tobi H. (tobi-) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
RLSD = DCD

RLSD wird von MS überall verwendet, DCD vom Rest der Welt

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.