Forum: PC-Programmierung DTR- und RTS- Leitung mit Visual Basic setzen


von Gast (Gast)


Lesenswert?

Hallo zusammen,

momentan beschäftige ich mich mit der seriellen Schnittstelle. Um Daten
zu senden und zu empfangen (Tx/Rx) verwende ich das XMComm- Modul von
Richard Grier. Mein Problem besteht nun darin, dass ich für meine
Anwendung die RTS- und DTR- Leitung ansteuern muss. Microsoft zeigt
zwar wie man die Leitungen enablen und disablen kann, aber nicht wie
ich die Leitung High/Low setzen kann.

Ich hoffe, dass mir hier irgend jeman weiterhelfen kann. Weiss jemand
wie das funktioniert? Oder geht das gar nicht?

Vielen Dank schon im Voraus für eure Bemühungen!

Der Gast

von Gast (Gast)


Lesenswert?

Ich habe gerade in einem anderen Forum ein C- Code gefunden, mit welchem
die RTS- Leitung gesetzt werden kann. Dies scheint relativ einfach zu
funktionieren. Weiss jemand wie man diesen Code in VB übersetzt? Oder
kennt jemand einen ähnlichen Code in VB? Das müsste doch auch mit VB
realisierbar sein.

Hier noch der C- Code:

#include <windows.h>

int main (void)
{
   HANDLE hPort;

   hPort =  CreateFile ("COM1",
      GENERIC_WRITE,
      0,
      0,
      OPEN_EXISTING,
      0,
      0);

   EscapeCommFunction (hPort, SETRTS); // RTS setzten
   Sleep (2000);
   EscapeCommFunction (hPort, CLRRTS); // RTS rücksetzten
   Sleep (2000);
   EscapeCommFunction (hPort, SETRTS); // RTS setzten
   Sleep (2000);

   CloseHandle (hPort);

   return (0);
}

von Wolfram (Gast)


Lesenswert?

Du solltest dir darüber klar werden ob du ein Handshakeprotokoll
benutzt
(dann wird die DTR/RTS automatisch bei richtiger Protokollwahl
gemacht)
oder ob du die Leitungen selber setzen willst.
>Weiss jemand wie man diesen Code in VB übersetzt? Oder
>kennt jemand einen ähnlichen Code in VB? Das müsste doch auch mit VB
>realisierbar sein

Ist alles in der MSDN hervorragend erklärt. Sogar mit Beispielen. Must
du nur noch rauskopieren.

von Gast (Gast)


Lesenswert?

Ich möchte die Leitungen selber setzen. In der MSDN ist einfach erklärt,
wie man die Leitungen enabled, aber nicht wie man sie High/Low setzt.
Programmbeispiele gibt es für den "normalen" Gebrauch, mit Rx und Tx.

von Thomas L. (tom)


Lesenswert?

Du hast das Beispiel eh oben.
Das steht prinzipiell alles drin was du brauchst.
CreateFile ist eine normale Funktion aus der WinAPI. Beispiele dafür
gibts en masse.
Selbiges gilt für die EscapeComm. Müsste eigentlich in der kernel32.dll
zu finden sein.

von Wolfram (Gast)


Lesenswert?

>In der MSDN ist einfach erklärt,
>wie man die Leitungen enabled, aber nicht wie man sie High/Low setzt
bei RS232 gibt es kein High/low sondern nur Mark/Space
in der MSDN gibt es einen Artikel wie man in VB die ganzen C Funktionen
der seriellen benutzt.

von Gast (Gast)


Lesenswert?

Könntest du mir noch schreiben, wie dieser Artikel heisst. Das würde mir
die Suche etwas erleichtern. Vielen Dank für eure Antworten!
Der Gast

von Wolfram (Gast)


Lesenswert?

>Könntest du mir noch schreiben, wie dieser Artikel heisst. Das würde
>mir die Suche etwas erleichtern
das ist keine Suche das ist kopieren...
Der effektive Umgang mit der Hilfe deiner Programmiersprache ist eine
der wichtigsten Sachen die du lernen solltest. Dies ist das erste was
man selbst macht, bevor man ein Forum benutzt. Auch die Suchfunktion
des Forum ist eine sehr wichtige Hilfe und glaube mir da wirst du mehr
als fündig. Das Thema Serialport kommt nämlich immer wieder auf, sobald
es von der ersten Seite verschwunden ist.
Also effektive Suchworte wären SerialPort ,VB ,Visual Basic
Auf den Artikel wurde schon mehrfach in diesem Forum hingewiesen.
und auch unter Codeguru wirst du fündig.
Die Benutzng von C Funktionen in Visual Basic findest du in VB-Büchern
gewöhnlich unter Systemprogrammierung. Wenn du diese benutzen willst
schau dir DCB, und CreateFile an.
Ansonsten gibt es in VB2005 auch eine sehr leistungsfähige Serialport
klasse.

von Peter (Gast)


Lesenswert?

Warum nimmst du nicht die MSCOMM.OCX? Da kannst du mit den
Steuerleitungen machen was du willst.

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.