Forum: PC-Programmierung Serielle Schnittstelle - DTR mit Visual Basic 2005 ansteuern


von Olaf R. (gruser)


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.

von T.Danielzik (Gast)


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 ...)

von crazy horse (Gast)


Lesenswert?

nur das man das von Kleinweich extra kaufen sollte :-(, war zumindest 
bei der Einsteiger/Studentenversion nicht dabei.
Gibt zum Glück Alternativen, XMComm.ocx.

von Olaf R. (gruser)


Lesenswert?

Hm wäre eine unschöne Lösung, auch fremder Kram den man nicht wirklich 
verstehen muss. Habe hier etwas gefunden (-> 
http://www.c-plusplus.de/forum/viewtopic-var-t-is-39047.html) , kann man 
vielleicht auch C-Code in VB 2005 einfügen?

von juppi (Gast)


Lesenswert?

SerialPort0.DtrEnable = False       'bit  auf minus
SerialPort0.RtsEnable = False       'bit  auf minus
SerialPort0.DtrEnable = True      'bit  auf plus
SerialPort0.RtsEnable = true       'bit  auf plus

von juppi (Gast)


Lesenswert?

@Olaf Rechtner (gruser)

weitere inf :nachfragen.

von Olaf R. (gruser)


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

von juppi (Gast)


Lesenswert?

@Olaf Rechtner (gruser)


Beitrag "Re: VB-Programm zur seriellen Ansteuerung von 4094 gesucht"

das hilft bestimmt weiter.

Bei mir geht es doch auch.

Was möchtest du denn erreichen?

von Olaf R. (gruser)


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 
;(

von juppi (Gast)


Lesenswert?

@Olaf Rechtner (gruser)
Probiere das prog , ist Quellcod.

von Olaf R. (gruser)


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

von juppi (Gast)


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.

von komm-Com (Gast)


Lesenswert?

Eine Frage an die Com-Experten: Mit wieviel mA lassen sich diese 
Steuerleitungen belasten?
Kann man die für die Versorgung externer Elektronik missbrauchen?

von juppi (Gast)


Lesenswert?

@komm-Com (Gast)

früher 10mA
ich rechne mit max 3- 5 mA
hat bis jetzt funktioniert.

von komm-Com (Gast)


Lesenswert?

Danke, juppi!

von Olaf R. (gruser)


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!

von Daniel F. (df311)


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.

von Olaf R. (gruser)


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

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.