Forum: PC-Programmierung RTS bzw. DTR Ausgang eines COM-Ports toggeln


von Andreas Wulf (Gast)


Lesenswert?

Hallo,

ich stehe vor einem Problem, daß ich einen der COM-Ausgänge(RTS oder DTR
ist egal) ein und ausschalten möchte.


Das soll so Funktionieren:

In einer Batch Datei mit ein paar Anweisungen soll dazwischen paar mal
ein Programmaufruf auftauchen, zum Programm , daß für so 2 sekunden
einen der COM Ausgänge auf High schaltet und dann wieder auf LOW. Dann
wieder ein paar Zeilen schon vorhandener Stapelverarbeitung und wieder
ein kurzer Impuls auf rts oder dtr.
Der COM Port selbst wird mit RX TX für die serielle Übertragung zu einem
Gerät in dieser bereits vorhandener Batch bereits verwendet. Deshalb
wäre ich "glaube" nicht so gut wenn dieses (Toggle RTS DTR -
Programmchen) auf der TX Leitung in diesen 2 Sekunden etwas sendet. Der
COM-Port ist während der Abarbeitung der Batch mit eine Gerät nur über
RX TX verbunden.
Impuls an der RTS oder DTR brauche ich um dazwischen etwas anderes zu
schalten.

OS : Win 2000 ohne Admin Rechte (Könnte ein Problem sein um einfach zu
realisieren? Zugriff auf die Register gespert?)

Programmiersprache: C++ oder Visualbasic oder wenn es etwas einfacheres
(vielleicht schon fertiges) gibt, das.



Wer sich etwas mit der Materie auskennt, bitte um Hilfe :)


mfg

von *.* (Gast)


Lesenswert?

1
if(rts) dcb.fRtsControl = RTS_CONTROL_ENABLE;
2
else dcb.fRtsControl = RTS_CONTROL_DISABLE;
3
if(dtr) dcb.fDtrControl = DTR_CONTROL_ENABLE;
4
else dcb.fDtrControl = DTR_CONTROL_DISABLE;
5
SetCommState (hCom, &dcb);

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Vor obigem Aufruf sollte aber unbedingt der aktuelle Zustand des DCB 
mit GetCommState() bestimmt werden.

Alternative:

   EscapeCommFunction(hCom, CLRDTR);
   EscapeCommFunction(hCom, SETDTR);

   EscapeCommFunction(hCom, CLRRTS);
   EscapeCommFunction(hCom, SETRTS);

von *.* (Gast)


Lesenswert?

Ja und das Handle brauchen wir auch noch irgendwoher ;)

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.