Serielle Schnittstelle - DTR mit Visual Basic 2005 ansteuern

OP #937663
Lesenswert?

Hallo,

ich möchte den Pin DTR der seriellen Schnittstelle direkt per Visual 
Basic 2005 ansprechen. Hat jemand Ideen wie es - möglichst ohne 
irgendwelcher DLL-Dateien - gehen könnte? Habe es per SerialPort 
probiert, hier gibt es aber nur ein Enable im Rahmen der Übertragung 
(com1.DtrEnable), keine direkte Ansteuerung. Vielen Dank für Tipps.
Gast #937681
Lesenswert?

Hallo Olaf,

unter VB6 gab es das MSComm.OCX, das müsste es eigentlich auch
unter VB2005 geben. Dort kann man alle Parameter der seriellen
Schnittstelle einstellen (Port, Baudreate, DTR, RTS, DSR ...)
OP #938052
Lesenswert?

Hallo juppi,
schönen Dank für deine Nachricht. Hatte es mit dem DtrEnable schon 
einmal probiert, aber ohne Erfolg. Das DtrEnable sorgt offensichtlich 
nur dafür, dass bei einer Datenübertragung dieser Kanal entsprechend 
automatisch geschaltet wird oder nicht. Allerdings kann man DTR damit 
wohl nicht direkt schalten, bei mir zumindest hat sich beim Voltmeter 
nichts getan.
Grüße
Olaf
OP #938273
Lesenswert?

Ich habe vor per RS485 von einem PC aus mehrere Module (mit 
PIC-Prozessoren) anzusteuern, im Halb-Duplex, sprich mit 2 
Datenleitungen (A, B). Um hier von Empfangen auf Senden umzuschalten, 
brauche ich einen schaltbaren Ausgang (DTR oder RTS). Ich hatte 
eigentlich erwartet, dass das die SerialPort-Komponente leisten könnte, 
aber mit com1.DtrEnable = True klappt es leider nicht. Bei meiner Lösung 
möchte ich ganz gerne auf Sachen Dritter wie z.B. die Port.dll 
verzichten, es muss doch etwas passendes geben aus dem Hause Microsoft 
;(
OP #938530
Lesenswert?

Du meinst das Gleisprogramm? Aber hier wird auch nur die Enable-Funktion 
des SerialPorts verwendet (z.B. SerialPort0.DtrEnable = False). Damit 
schalte ich den Port meines Erachtens nicht um - zumindest zeigt mein 
Voltmeter nix an. Habe auch noch einmal einen simplen Schaltknopf 
programmiert und folgende Prozedur damit verknüpft:

Public Sub CommandDTR(ByVal State As boolean)

  'DTR Leitung schalten
  ComPort.DtrEnable = State

End Sub

Wenn der Wert "State" eine 1 hat, müsste mein Voltmeter -12V anzeigen, 
bei einer 0 müsste es +12V anzeigen. Klappt aber nicht. Mir ist 
allerdings noch nicht wirklich klar welche Funktion dieses Enable hat. 
Vielleicht kannst du mir ja ein wenig auf die Sprünge helfen ;o)

Besten Dank, Olaf
Gast #938553
Lesenswert?

@Olaf Rechtner (gruser)

Deine com ist aber o.k.?
es müßte funktionieren!
hast du sie geöffnet?

Werde mal nächste Woche ein Miniprog machen,ist eine kleine Übung.

Bin jetzt nicht zu Hause und der Pc hat hier keine Com.
OP #939494
Lesenswert?

Juppi das wäre eine prima Sache mit dem kleinen Programm. Einen bzw. 2 
Software-Buttons mit dem man DTR ein- und ausschalten kann. Bei mir 
klappt es nicht, obwohl ich vorher die Schnittstelle sauber geöffnet 
habe und diese auch ansonsten ansprechen kann.

Vielen Dank schon vorab für deine Hilfe!
#939554
Lesenswert?

1
        private void button1_Click(object sender, EventArgs e)
2
            {
3
            serialPort1.Open();
4
            serialPort1.DtrEnable = true;
5
            }
6

7
        private void button2_Click(object sender, EventArgs e)
8
            {
9
            serialPort1.DtrEnable = false;
10
            serialPort1.Close();
11
            }

die applikation bestand nur aus dem "standardformular" mit zwei buttons 
und einem serialport-objekt.
mein oszi sagt mir, dass die zeilen funktionieren (open/close weglassen 
habe ich nicht probiert).

VS08 express, C#
vb habe ich nicht installiert, aber da bei .net verwenden dürfte das 
kein problem sein.
OP #939660
Lesenswert?

Hallo Daniel!

Schönen Dank für deine Hilfe - mir ist aufgefallen dass ich die 
Schnittstelle viel zu schnell wieder geschlossen habe, deswegen konnte 
ich nichts messen mit dem Voltmeter. Dann geht es also doch mit dem 
DtrEnable ;o)

Auch an Juppi noch einmal vielen Dank für deine Geduld.

Grüße
Olaf

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