-         
+ Antworten
Ergebnis 1 bis 7 von 7

Thema: Visual Basic und der LPT

  1. #1
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    31.01.2004
    Beiträge
    585

    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

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    07.01.2004
    Ort
    München
    Alter
    66
    Beiträge
    214
    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.

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    31.01.2004
    Beiträge
    585
    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

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    24.01.2004
    Beiträge
    222
    @ ShadowPhoenix:
    Welches Betriebssystem hast du? Und wo hast du die IO.dll her?
    Ich steuer den LPT port mit einer ocx an

    mfg God

  5. #5
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    24.01.2004
    Beiträge
    222
    @ ShadowPhoenix:
    Welches Betriebssystem hast du? Und wo hast du die IO.dll her?
    Ich steuer den LPT port mit einer ocx an

    mfg God

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    31.01.2004
    Beiträge
    585
    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

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    24.01.2004
    Beiträge
    222
    Danke,
    damit ist das einfacher als mit der ocx

    mfg God

+ Antworten

Berechtigungen

  • Neue Themen erstellen: Ja
  • Themen beantworten: Ja
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •