PC-Programm fuer RS232

Gast #523643
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
Gast #523819
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

Persönliche Seite #523838
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.
Gast #523857
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

Gast #524141
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 )

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