COM-Schnittstelle ansprechen

Hallo zusammen,
ich habe vor, einen kurzen Impuls auf eine Magnetspule zu geben. Am besten wäre es da über eine COM-Schnittstelle ein Signal auf die Spule zu geben. Bis jetzt habe ich rausbekonmmen, wenn ich die Pins der Pluspole 7 (RTS), 4 (DTR) und 3 (TXD) zusammentüdel, bekomme ich bis zu 60mA raus. Nur wie kann ich da jetzt einen Impuls von einer Sekunde ausgeben? Kann mir da irgendjemand sagen, wie ich das in VB ansteuern bzw. programmieren kann?

Danke, Axel

Hallo,

kennst Du das schon?

http://www.vb-fun.de/cgi-bin/loadframe.pl?ID=vb/komp…

Ich hab’s nicht geladen, das könnte aber sein, was Du suchst.

Gruß, Rainer

Hallo Rainer,

haben ja schon lange nichts mehr voneinander gehört. Da sind ganz schön viele Dateien drin, aber das hilft mir leider nicht. Ich müsste wissen, wie ich den Code in VB zusammenbastel, um diese COM-Schnittstelle anzusprechen. Ich verzweifel da noch…

Gruß, Axel

Hallo Axel,

Ja, schön mal wieder von Dir zu hören. Leider kann ich aber nicht so helfen, wie ich gern würde, ich habe so etwas noch nicht gemacht. Frag doch einfach mal bei http://www.ActiveVB.de im VB-Forum. In den Tipps und Tricks dort habe ich nichts gefunden, aber die Experten da wissen das bestimmt.

Gruß, Rainer

Hallo Axel,

ich habe vor, einen kurzen Impuls auf eine Magnetspule zu
geben. Am besten wäre es da über eine COM-Schnittstelle ein
Signal auf die Spule zu geben. Bis jetzt habe ich
rausbekonmmen, wenn ich die Pins der Pluspole 7 (RTS), 4 (DTR)
und 3 (TXD) zusammentüdel, bekomme ich bis zu 60mA raus.

Bei denem PC, bei einer anderen Schnittstelle kann es auch anders sein.

Grundsätzlich macht man soetwas aber nicht, wenn dir deine Hardware lieb ist, besonders sollte man keine Spulen da dran hängen.
Die serielle SChnittstelle ist nicht als Stromversorgung ausgelegt !!

Die Serielle Schnittstelle ist heute meist mit in die Southbridge integriert. Wenn die Serielle SChnitstelle kaput geht, kannst du das ganze Mainboard wegschmeissen, reparieren lässt sich da nichts mehr.

Nur wie kann ich da jetzt einen Impuls von einer Sekunde ausgeben?
Kann mir da irgendjemand sagen, wie ich das in VB ansteuern
bzw. programmieren kann?

Hab dir das mal aus einem alten Projekt herauskopiert:
Die beiden fetten Zeilen sind die eigentlichen Aufrufe um die Pins zu setzen. Die Verwaltung des FileHandles musst du natürlichen deinen begebenheiten noch anpassen.

Public hdCOMM As Long

Public Const SETRTS = 3 ' Set RTS high
Public Const CLRRTS = 4 ' Set RTS low
Public Const SETDTR = 5 ' Set DTR high
Public Const CLRDTR = 6 ' Set DTR low

Declare Function EscapeCommFunction Lib "kernel32" (ByVal nCid As Long, ByVal nFunc As Long) As Long


Public Sub OpenCom(ComPort As Integer)
 Dim ret As Long

 hdCOMM = CreateFile("COM" & ComPort, (GENERIC\_READ Or GENERIC\_WRITE), 0, vbNullString, OPEN\_EXISTING, FILE\_ATTRIBUTE\_NORMAL, 0)

 If (hdCOMM \> 0) Then
 **ret = EscapeCommFunction(hdCOMM, SETRTS)  
 ret = EscapeCommFunction(hdCOMM, SETDTR)**  
 End If
End Sub

MfG Peter(TOO)

Danke Peter, ich werde es morgen mal ausprobieren. Melde mich dann morgen mal.

Gruß, Axel

Hallo Rainer,

finde ich auch schön, mal wieder was von dir zu hören. Naja, ich hatte auch nach meinem Diplom lange keinen Bock mehr zu programmieren und jetzt mache ich es sogar PRIVAT. Aber du hast mir damals (mit sehr viel Geduld) so toll geholfen, dafür bin ich dir immernoch sehr dankbar!!!

Gruß, Axel

Hallo Axel.

versuch es doch mal mit dem lpt-port und einer relaiskarte.
die bekommste beim großen C *g recht günstig.
so hab ich es zu mindestens gemacht.

1 Like

Hi,

die bekommste beim großen C *g recht günstig.

*gg* http://www.Conrad.de hättest Du ruhig schreiben können.

so hab ich es zu mindestens gemacht.

??? Liegt der Relaiskarte Software bei? Das wär’s dann doch.

Gruß, Rainer

Hallo,

ich habe mal im Conrad- Katalog nachgesehen. Habe dort eine 8-Kanal Relaikarte gesehen, die 'ne Software hat. Die werde ich bestellen und dann müsste das locker funktionieren.

Danke, Axel

Hallo,

ich habe mal im Conrad- Katalog nachgesehen. Habe dort eine
8-Kanal Relaikarte gesehen, die 'ne Software hat. Die werde
ich bestellen und dann müsste das locker funktionieren.

klar, dann bist Du auch das Problem mit dem Entkoppeln los und zerlegst den Computer nicht damit. Ich verteil mal nach oben einen Stern. :smile: Der Tipp war ja nicht von mir.

Gruß, Rainer

vielen vielen dank.
ich fühle mich geehrt.
also ich kam auf die ganze idee weil,
wie vielleicht einige wissen habe ich nen laptop
fest im auto installiert
und wollte mehrere led´s ansteuern die allerdings
die strom abgabe von 20mA des lpt´s aufjedenfall gesprengt hätten.
nun hab ich mich auf die suche nach einem relais gemacht
das sich mit 20mA steuern läßt!
und siehe da
alle led´s durchgebrannt weil ich idiot die parallel
anstatt in reihe gelötet habe.
naja muß ich das auto halt nochmal auseinander nehmen *g

Hallo Fragewurm,

und siehe da
alle led´s durchgebrannt weil ich idiot die parallel
anstatt in reihe gelötet habe.

Aber der Serien-Widerstand zur Strombegrenzung hattest du drin ??

MfG Peter(TOO)

ja sicher hatte ich nen vorwiderstand drin nur halt für 4 led´s in reihe und nicht für eine parallel.

So, ich habe jetzt den parallelen Port und eine Relaikarte genommen. Das funktioniert sogar, welch ein Wunder. Das ist wirklich wesentlich besser, danke für die Tips. Mit „Out &H378, 2“ spreche ich einen bestimmten Augang an und das Relai schaltet auch. Nur wie bekomme ich das jetzt hin, dass es nur eine Sekunde schaltet? Geht das mit einem Timer?

'-------------Kasse öffnen

Private Sub CmdKasse_Click()

Berechnung.Show
Berechnung.Label5.Caption = LblEndbetrag.Caption

Out &H378, 2

End Sub

Gruß, Axel

Hallo Axel,

da hast Du mindestens drei Möglichkeiten.

1.) Timer. Du schaltest das Relais ein, startest einen Timer mit Interval = 3000 (3 Sekunden) und schreibst in den Timer den Code, der den Port wieder abschaltet.

2.) Du läßt das Programm an der Stelle eine Pause machen, die Du selbst programmierst. Wenn Du da DoEvents verwendest, kann das Programm noch etwas anderes tun.

3.) Du hältst das Programm mit Sleep (API-Aufruf) für drei Sekunden an.

Welchen Code hättest Du gern?

Gruß, Rainer

bei mir ist es mit zwei buttons gemacht um die leds an und aus zu schalten.
das gleiche geht ja auch mit nem timer, wie rainer schon sagte.
also ich weiß ja jetzt nicht wie es bei dir aussieht aber ich hab es so gemacht.
Button an:

'a = 1
'B = 2
'C = 4
'D = 8
'E = 16
'f = 32
'G = 64
'H = 128
c = 4
j = a + B + c + D + E + f + G + H
Out &H378, j

Button aus:

'a = 1
'B = 2
'C = 4
'D = 8
'E = 16
'f = 32
'G = 64
'H = 128
c = 0
j = a + B + c + D + E + f + G + H
Out &H378, j

ist eigentlich recht einfach. du kannst natürlich auch
alle pine aktivieren oder deaktivieren.

Hallo ihr zwei!
Die Varriante mit dem Timer wäre natürlich die schönste. Wenn ich Fressbrett richtig verstehe, dann schalte ich den Ausgang, den ich mit „Out &H378, 2“ aktiviere, mit „Out &H378, 0“ wieder aus!? Dann müsste mein Code ja so aussehen:

'-------------Kasse öffnen

Private Sub CmdKasse_Click()

Berechnung.Show
Berechnung.Label5.Caption = LblEndbetrag.Caption

Timer1.Enable = True
Timer1.Interval = 300
Out &H378, 2
Timer1_Timer

End Sub

'-------------Timer zum ausschalten

Private Sub Timer1_Timer()

Out &H378, 0

End Sub

Wäre das so richtig?

Gruß, Axel

Hallo Alex

Private Sub CmdKasse\_Click()

 Berechnung.Show
 Berechnung.Label5.Caption = LblEndbetrag.Caption

 Timer1.Enable **d** = True
 Timer1.Interval = 300
 Out &H378, 2
**Rem** Timer1\_Timer

End Sub

Was hätte ‚Timer1_Timer‘ werden sollen?

'-------------Timer zum ausschalten

Private Sub Timer1\_Timer()

 Timer1.Enabled = False
 Out &H378, 0

End Sub

Wäre das so richtig?

fast, ich habe mal fett etwas eingefügt.
Wenn Du verschiedene Pins voneinander unbabhängig schalten willst, sieht der Code viel lustiger aus. :smile:

Gruß, Rainer

Rainer, ich heiß doch Axel. Das Programm läuft, total geil! Danke, danke danke!!! Ich dachte Timer1_Timer ist dazu da, die Timer-Prozedur aufzurufen. Aber wozu ist denn der Befehl „Rem“?

Gruß, Axel