LPT Port - Ansteuerung von Relais

  • VB.NET
  • .NET (FX) 4.0

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von OlafSt.

    LPT Port - Ansteuerung von Relais

    Hallo zusammen,

    ich bräuchte mal wieder Hilfe von den Profis!

    Bin dabei eine Relaiskarte zu bauen bzw. 2 Relais mit dem LPT Port zu schalten, da ich aber seit 2 Jahren nichts mehr mit VB gemacht habe, bin ich eingerostet bzw. mein Wissen reicht für das Projekt nicht aus. Beim Code komme ich nicht mehr weiter, suche schon Stunden im Forum und im Netz nach Infos und Hilfestellungen finde aber keine brauchbaren Infos.

    Bestimmt ist es für euch ganz einfach, und zwar möchte ich wie schon erwähnt zwei Relais ansteuern, dazu verwende ich zwei Datenleitungen, einmal PIN 2 für Relais 1 und PIN 3 für Relais 2 mit PIN 18 auf GND ( LPT Pinbelegung ).

    Um das Ganze mal zu testen habe ich folgenden Code:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    3. End Sub
    4. Public Declare Function Inp Lib "inpout32.dll" Alias _
    5. "Inp32" (ByVal PortAddress As Integer) As Integer
    6. Public Declare Sub Out Lib "inpout32.dll" Alias "Out32" _
    7. (ByVal PortAddress As Integer, ByVal Value As Integer)
    8. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    9. Out(&H378, 1)
    10. End Sub
    11. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    12. Out(&H378, 0)
    13. End Sub
    14. Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
    15. End Sub
    16. Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
    17. End Sub
    18. End Class




    Im Code verwende ich den Befehl "Out(&H378, 1)" für Datenleitung PIN2 EIN und "Out(&H378, 0)" für Datenleitung PIN2 AUS.
    Soweit geht alles, doch jetzt zu meiner Denkblockade, wie kann ich die anderen Leitungen wie PIN 3, PIN 4 .... ein/aus schalten

    Habe zwar einige andere Befehle wie "Out(1, 0) oder dergleichen gefunden, das aber in meinem Code umgesetzt nicht funktioniert!

    Könnt ihr mir sagen, wie die Befehle für die anderen Datenleitungen aussehen?

    Vielen Dank im Voraus!!

    Gruss Chris

    Quellcode

    1. Pin 2 - D0 - Out(&H378, 1) 00000001
    2. Pin 3 - D1 - Out(&H378, 2) 00000010
    3. Pin 4 - D2 - Out(&H378, 4) 00000100
    4. Pin 5 - D3 - Out(&H378, 8) 00001000
    5. Pin 6 - D4 - Out(&H378, 16) 00010000
    6. Pin 7 - D5 - Out(&H378, 32) 00100000
    7. Pin 8 - D6 - Out(&H378, 64) 01000000
    8. Pin 9 - D7 - Out(&H378, 128) 10000000
    9. Alle aus Out(&H378, 0)
    10. Pin 2 + 3 ein Out(&H378, 3)
    11. Alle ein Out(&H378, 255)
    12. Pins unabhängig einschalten:
    13. Out(&H378, Inp(&H378) Or 2) Pin 3 ein
    14. Out(&H378, Inp(&H378) Or 130) Pin 3 und 9 ein
    15. Pins unabhängig ausschalten:
    16. Out(&H378, Inp(&H378) And Not 16) Pin 6 aus
    17. Pins unabhängig toggeln:
    18. Out(&H378, Inp(&H378) Xor 2) Pin 3 toggeln.
    Ok hab drüber gelesen, danke!

    Ich hab irgendwie aber noch eine Problem mit dem Port selbst, er reagiert manchmal nicht, dann wieder schon. Jetzt grad lässt sich nichts mehr steuern und der Port reagiert auf nichts, egal welchen Pin ich ansteuere... Kann das wegen der Inpout32.dll sein, ich bin mir nicht sicher ob ich die richtige hab für mein System ( Win 7 64bit ).

    Gruss Chris
    Ich bin in allerhöchstem Maße erstaunt, das inpoutp32.dll überhaupt irgendwas am PIO zum reagieren bringt. Die Methode, die du da versuchst, war unter XP noch möglich, seit Vista funktioniert das überhaupt nicht mehr. Direkte Portzugriffe sind seither nicht mehr möglich, das geht nur noch über einen Treiber.

    Daher auch der plötzliche Tod der LCD-Displays in der Case-Modder-Szene...
    Ah, ich sehe schon... Da hat jemand das Projekt übernommen und einen (wie ich schon sagte) für Vista+ zwingend notwendigen Treiber gebastelt - selbst für 64Bit. Hatte ich schon vermutet, anders konnte ich mir das "plötzliche funktionieren" nicht erklären.