-
-
Erfahrener Benutzer
Roboter Experte
Visual Basic und der LPT
Hallo!
Ich habe in Visual Basic folgenden Code geschrieben:
Private Declare Sub PortOut Lib "IO.DLL" (ByVal Port As Integer, ByVal Data As Byte)
Private Declare Function PortIn Lib "IO.DLL" (ByVal Port As Integer) As Byte
Dim var1 As Integer
Private Sub Command1_Click()
PortOut (88, 128
End Sub
Private Sub Command10_Click()
PortOut (88, 255
End Sub
Private Sub Command11_Click()
var1 = PortIn(88
Text1.Text = var1
End Sub
Private Sub Command2_Click()
PortOut (88, 64
End Sub
Private Sub Command3_Click()
PortOut (88, 32
End Sub
Private Sub Command4_Click()
PortOut (88, 16
End Sub
Private Sub Command5_Click()
PortOut (88, 8
End Sub
Private Sub Command6_Click()
PortOut (88, 4
End Sub
Private Sub Command7_Click()
PortOut (88, 2
End Sub
Private Sub Command8_Click()
PortOut (88, 1
End Sub
Private Sub Command9_Click()
PortOut (88, 0
End Sub
Das heißt auf Button1 ist D0 gleich +5V , auf Button2 ist D1 gleich +5V!
Also ich spreche damit die Datenleitungen des parallelPorts an!
NUR: Wenn ich PortOut(88,255 setze (Alle Datenleitungen auf high(+5V)), leuchten bei mir zwar ALLE Leds, aber nach einer Zeit gehen sie wieder aus, OHNE das ich was mache!
Also ich hab für jede Datenleitung (0-7) eine Led, und die leuchten auf Kommando alle.
Nur nach zufälliger Zeit leuchtet auf einmal nur noch die 3. Led (Port ist statt 255 auf einmal auf 32)
Ich habe mir gedacht, dass vielleicht irgendein anderes Programm auf den port zugreift, aber welches?
Ich habe ihn noch nie benutzt!
Könnt ihr mir helfen?
Mfg,
ShadowPhoenix
-
Erfahrener Benutzer
Roboter-Spezialist
Ich weiss es nicht,
aber ich könnte mir schon vorstellen, dass Windows den LPT selbst überwacht, und Du umgehst ja mit Deiner Port-Ausgabe das System vermutlich völlig. Warum dann ausgerechnet genau der 3. Port ON ist, kann ich mir nicht erklären (32 = HEX 20 = SPACE ?).
Ansonsten:
Die LPT kann man bidirektional oder konventionell (nur OUT) betreiben; versuch mal, auf "nicht bidirektional" einzustellen; dann machts für Windows weniger Sinn, da was zu überwachen.
Vielleicht ist's auch der Spooler: Nimm mal den "Default Drucker" von Deinem LPT weg.
-
Erfahrener Benutzer
Roboter Experte
Danke, ich bin mal in den BIOS-Optionen auf LPT gegangen.
Dort gab es EPP, ECP, Bidirektional und noch was...
Ich hab mal EPP genommen, seit dem lässt Windows meinen port in Ruhe
Danke, jetzt kann ich endlich was damit steuern!
Mfg,
ShadowPhoenix
-
Erfahrener Benutzer
Roboter-Spezialist
@ ShadowPhoenix:
Welches Betriebssystem hast du? Und wo hast du die IO.dll her?
Ich steuer den LPT port mit einer ocx an
mfg God
-
Erfahrener Benutzer
Roboter-Spezialist
@ ShadowPhoenix:
Welches Betriebssystem hast du? Und wo hast du die IO.dll her?
Ich steuer den LPT port mit einer ocx an
mfg God
-
Erfahrener Benutzer
Roboter Experte
Ich habe WindowsXP.
Die IO.DLL habe ich von dieser Seite:
http://www.geekhideout.com/iodll.shtml
Mfg,
ShadowPhoenix
Und hier die FunktionsPrototypen der DLL:
Private Declare Sub PortOut Lib "IO.DLL" (ByVal Port As Integer, ByVal Data As Byte)
Private Declare Sub PortWordOut Lib "IO.DLL" (ByVal Port As Integer, ByVal Data As Integer)
Private Declare Sub PortDWordOut Lib "IO.DLL" (ByVal Port As Integer, ByVal Data As Long)
Private Declare Function PortIn Lib "IO.DLL" (ByVal Port As Integer) As Byte
Private Declare Function PortWordIn Lib "IO.DLL" (ByVal Port As Integer) As Integer
Private Declare Function PortDWordIn Lib "IO.DLL" (ByVal Port As Integer) As Long
Private Declare Sub SetPortBit Lib "IO.DLL" (ByVal Port As Integer, ByVal Bit As Byte)
Private Declare Sub ClrPortBit Lib "IO.DLL" (ByVal Port As Integer, ByVal Bit As Byte)
Private Declare Sub NotPortBit Lib "IO.DLL" (ByVal Port As Integer, ByVal Bit As Byte)
Private Declare Function GetPortBit Lib "IO.DLL" (ByVal Port As Integer, ByVal Bit As Byte) As Boolean
Private Declare Function RightPortShift Lib "IO.DLL" (ByVal Port As Integer, ByVal Val As Boolean) As Boolean
Private Declare Function LeftPortShift Lib "IO.DLL" (ByVal Port As Integer, ByVal Val As Boolean) As Boolean
Private Declare Function IsDriverInstalled Lib "IO.DLL" As Boolean
-
Erfahrener Benutzer
Roboter-Spezialist
Danke,
damit ist das einfacher als mit der ocx
mfg God
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen