none
visual basic LED parallelport RRS feed

  • Frage

  • Hi,
    ich habe ein Programm in visual basic geschrieben. um ein LED an Parallelport steuern zu können.
    bei dem Programmausführung komm folgende Meldung:

    (Eine externe Komponente hat eine Ausnahme ausgelöst:)
    für die folgende Befehl:

     Out(&H378, 1)
    kann mir bitte jemand helfen?
    Sonntag, 27. September 2009 12:31

Antworten

Alle Antworten

  • Hoi,

    schau doch mal hier nach ob Dir dass schon mal weiterhilft:

    http://social.msdn.microsoft.com/Forums/de-DE/vbasicexpresseditionde/thread/1aa198bf-6881-4514-960f-03748fa4c70f/

    Ansonsten einfach nochmal melden - bei mir funktioniert diese Methode einwandfrei.

    Doei
    Franz
    Sonntag, 27. September 2009 13:24
  • danke Franz,

    ich finde den Fehler nicht, aber es funktioniert leider nicht
    Sonntag, 27. September 2009 13:43
  • Hallo sabine82,

    Hier noch ein paar interessante Artikel über wie man die Verbindung mit den LEDs machen muss.

    http://www.arunet.co.uk/tkboyd/ele1pp2.htm

    http://www.codeproject.com/KB/cs/csppleds.aspx

    Wie man auf serielle und parallele Anschlüsse zugreifen kann, mithilfe von Visual Basic .NET à http://support.microsoft.com/default.aspx?scid=kb;en-us;823179&Product=vb6

    Wie lautet diese Ausnahme? Verwendest Du inpout32.dll ?

    Kannst Du mehr Code zeigen? Danke.

    Grüße,

    Robert

    Sonntag, 27. September 2009 14:16
  • Hi,
    der folgende Code habe ich geschrieben, und ich habe inpout32.dll kopiert unter C:\WINDOWS\system32 und C:\WINDOWS\system



    Public Class Form2
        'inpout32.bas
        'Inp und Out Deklarationen

        Public Declare Function Inp Lib "inpout32.dll" Alias _
               "Inp32" (ByVal PortAddress As Integer) As Integer

        Public Declare Sub Out Lib "inpout32.dll" Alias "Out32" _
               (ByVal PortAddress As Integer, ByVal Value As Integer)
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Me.Close()
        End Sub

        Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Texteigabe.TextChanged


        End Sub

        Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            Dim z As Int64 = Texteigabe.Text
            Label1.Text = z * 2
        End Sub

        Private Sub LinkLabel1_LinkClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs)

        End Sub

        Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        End Sub

        Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label1.Click

        End Sub

        Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
            Out(&H378, 3)
        End Sub
    End Class


    Danke.
    Sonntag, 27. September 2009 14:22
  • Hallo sabine82,

    Versuch mal folgende Deklaration zu verwenden. Ich bekomme keine Fehlermeldung.

     

     

    Imports System.Runtime.InteropServices
    Public Class Form1
    
        <DllImport("inpout32.dll", EntryPoint:="Out32")> _
        Public Shared Sub Output(ByVal adress As Integer, ByVal value As Integer)
        End Sub
    
    
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Output(&H378, 3)
        End Sub
    End Class


    Grüße,

    Robert

    Sonntag, 27. September 2009 14:35
  • vielen dank für den Code

    ich habe dein Code wie folgen kopiert,

    Imports System.Runtime.InteropServices


    Public Class Form1
        <DllImport("inpout32.dll", EntryPoint:="Out32")> _
        Public Shared Sub Output(ByVal adress As Integer, ByVal value As Integer)

        End Sub

        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        End Sub



        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Output(&H378, 3)
        End Sub
    End Class



    leider beim Ausführung kommt die selbe Meldung


    Eine externe Komponente hat eine Ausnahme ausgelöst.


    Sonntag, 27. September 2009 15:17
  • Hallo sabine82,

    Kommt auch dieses Wort vor bei der Fehlermeldung ? SEHException ?

    Grüße,

    Robert

    Sonntag, 27. September 2009 15:19
  • ja genau!

    Sonntag, 27. September 2009 15:23
  • Hallo sabine82,

    Versuch mal den Haken herausnehmen von:

    Projekt à Eigenschaften à Application à Windows application framework properties à Enable XP visual styles

    SEHException-Klasse à http://msdn.microsoft.com/de-de/library/system.runtime.interopservices.sehexception(VS.80).aspx

    Grüße,

    Robert

    Sonntag, 27. September 2009 15:31
  • Sorry aber ich habe nicht versanden was du meinst
    Sonntag, 27. September 2009 15:58
  • Hoi,

    er meint Du sollst oben in der Menüleiste erst auf Projekt,
    dann in dem Menü (Name Deiner Application)-Eigenschaften,
    dann unter dem Punkt Anwendung den Haken vor
    Visuelle XP-Stile aktivieren den Haken entfernen ;-)

    Doei
    Franz 
    Sonntag, 27. September 2009 16:05
  • danke, aber das hat nicht geholfen
    Sonntag, 27. September 2009 16:38
  • Bei mir steht in einer Anwendung Folgendes:

        Public Declare Function Inp Lib "inpout32.dll" Alias "Inp32" (ByVal PortAddress As Integer) As Integer
        Public Declare Sub Out Lib "inpout32.dll" Alias "Out32" (ByVal PortAddress As Integer, ByVal Value As Integer)
    

    Dann im entsprechendem Click-Button-Event dies:

    Out(888, 1)
    Funktioniert alles tadellos.


    Doei
    Franz
    Sonntag, 27. September 2009 17:04
  • Hallo zusammen,

    Wie habt ihr in BIOS die LPT eingerichtet? ECP, EPP oder beide ?



    http://www.codeproject.com/KB/vb/Inpout32_read.aspx?fid=329239&df=90&mpp=25&noise=3&sort=Position&view=Quick&select=2332527



    Grüße,

    Robert

    Sonntag, 27. September 2009 17:06
  • ECP eingerichtet
    Sonntag, 27. September 2009 17:11
  • Hoi,

    ich habe ECP+EPP eingestellt

    Hast Du mal OUT anstelle von OUTPUT versucht ?

    Doei
    Franz
    Sonntag, 27. September 2009 17:13
  • ich habe jetzt versucht da kommt die Fehlermeldung Name Out is not declared
    wie kann ich ECP+EPP einstellen?
    Sonntag, 27. September 2009 17:18
  • Das geht im BIOS (wenn es diesen Modus unterstützt)

    Doei
    Franz
    Sonntag, 27. September 2009 17:19
  • Hallo sabine82,

    Schau Dir mal an den folgenden Diskussionsfaden.

    Man kann ein Try-Catch Block schreiben so wie ferdiku am Dienstag, 7. Oktober 2008 16:15 im Beispiel gezeigt hat.

    http://social.msdn.microsoft.com/Forums/de-DE/visualwebdeveloperexpressde/thread/fe1e3e41-f6c9-446d-8273-108d2166cb38

     

    Public Class Form1
    
        Public Declare Function Inp Lib "inpout32.dll" Alias "Inp32" (ByVal PortAddress As Integer) As Integer
        Public Declare Sub Out Lib "inpout32.dll" Alias "Out32" (ByVal PortAddress As Integer, ByVal Value As Integer)
    
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    
    
            Try
                Out(888, 1)
            Catch e As Exception
                If TypeOf e Is StackOverflowException Or _
                   TypeOf e Is OutOfMemoryException Then
                    Throw
                End If
            End Try        
    
     
    
        End Sub
    End Class




    Grüße,

    Robert

    Sonntag, 27. September 2009 17:29
  • es kommt keine Fehlermeldung mehr, ich habe die LED angschlossen, aber es ist immer an . wenn das programm auch nicht gestartet ist.
    Sonntag, 27. September 2009 18:29
  • Hallo sabine82,

    Hast Du die LED’s angeschlossen wie in den folgenden Bildern?

    http://www.codeproject.com/KB/cs/csppleds.aspx

    Bevor Du das Programm verlässt oder wann das Programm startet versuch ein Reset den LED’s zu machen mit der Zeile:

    Out(888, 0)

    Grüße,

    Robert

    Montag, 28. September 2009 15:10
  • Hi, Robert
    vielen Danke für deine Hilfe, ich habe jetzt der Folgende Code, das Problem ist,  dass alle Daten-Pins von 0 bis zum 7 immer High sind, wenn ich der  Data0 resete,dann passiert auch nix!


    Imports System.Runtime.InteropServices


    Public Class Form1
        <DllImport("inpout32.dll", EntryPoint:="Out32")> _
        Public Shared Sub Output(ByVal adress As Integer, ByVal value As Integer)

        End Sub

        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        End Sub



        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

            Try
                Output(&H378, 1)
            Catch m As Exception
                If TypeOf m Is StackOverflowException Or _
                   TypeOf m Is OutOfMemoryException Then
                    Throw
                End If
            End Try


        End Sub

        Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            Try
                Output(&H378, 0)
            Catch m As Exception
                If TypeOf m Is StackOverflowException Or _
                   TypeOf m Is OutOfMemoryException Then
                    Throw
                End If
            End Try
        End Sub
    End Class
    Montag, 28. September 2009 16:04
  • Hoi Sabine,

    schau nochmal hier nach und lese Dir den 1. Beitrag von gilgamo nochmal durch:
    http://social.msdn.microsoft.com/Forums/de-DE/vbasicexpresseditionde/thread/1aa198bf-6881-4514-960f-03748fa4c70f/

    Die Datenbits sind 1,2,4,8 16 usw. fpür die jeweiligen LEDs (AN) und 3,5,7,9,.... usw. für aus.

    Einfach mal ein bisserl mit rumspielen ;-)

    Doei
    Franz
    Montag, 28. September 2009 18:07
  • HI Franz,
    ich habe den Befehl geschrieben  Output(&H378, 2)  das LED an allen Pins nach einander angeschlossen, aber die sind immer High!
    Montag, 28. September 2009 18:28
  • Hoi,

    was passiert wenn Du 3 sendest ?
    oder 7 ?

    P.S.: lade Dir mal dieses Programm runter und entpacke es:
    http://www.i-robots.eu/sw/control/CoNtrol.zip

    Dann startest Du es, klickst oben im Menü auf SCHALTEN und benutzt AUSSCHLIESSLICH die oberen linken Schaltknöpfe für EIN und AUS.

    Die liegen auf dem LPT-Port

    Doei
    Franz
    Montag, 28. September 2009 18:31
  • Fehler im Link ?

    Nochmal hier:
    http://www.i-robots.eu/sw/control/CoNtrol.zip

    Doei
    Montag, 28. September 2009 18:40
  • es passiert nix! alle Pins bleiben High
    Montag, 28. September 2009 18:45
  • Dann ist irgendwas "faul".

    Kannst Du mal skizzieren wie Du die LEDs angeschlossen hast ?

    Normalerweise Plus an den jeweiligen Pin am LPT-Port, das andere Beinchen an Masse.


    Diese CoNtrol-Software schaltet ein Relais und funktioniert einwandfrei.


    Doei
    Franz
    Montag, 28. September 2009 18:47

  • die lange Beinschen an 470 Ohm Wiederstand, die Wiederstand zu Pin 2 der Parallelport, die kurze Beinschen der LED zu Pin 25.
    Leider kann nicht ein Skizziere in Forum legen.
    Montag, 28. September 2009 19:00
  • So ist es richtig - und so funktioniert auch das CoNtrol-Tool

    Doei
    Franz
    Montag, 28. September 2009 19:42
  • Franz der Programm dein Programm funktioniert, das heißt ich habe irgendwo fehler in meinem Code!!!
    ohhh
    Montag, 28. September 2009 19:45
  • Das habe ich mir schon gedacht.

    Aber: das kriegen wir schon hin :-)

    Überprüfen Deinen Code nochmal und verfahre an den Schlatpunkten wie beschrieben, also:

    Out(888, 0)
    Out(888, 1)
    Out(888, 3)

    usw.

    Am besten kannst Du das testen indem Du mind. 3 LEDs an die ersten 3 Pins des LPT-Ports anschliesst.

    Das ist effektiver als jedes Mal die LED an die Pins zu halten.

    Einen Widerstand brauchst Du eigentlich auch nicht.

    Doei
    Franz
    Montag, 28. September 2009 19:50
  • Oh vielen dank Franz, es hat alles gelohnt, das Problem war ein Falsche Inpout32.dll datei gespeichert
    ich habe der Datei von deinen Ordner kopiert und es funktioniert jetzt.


    Danke
    Montag, 28. September 2009 19:54
  • Hallo sabine82, Franz,

    Es freut uns dass Du Dein Problem lösen könntest. Vielen Dank an Franz für seine Hilfe.

    Das war ja eine Lange aber bis zu Letzt erfolgreiche Diskussion.

    Noch eine kleine Sache wollte ich sagen: im folgendem Link verwendet man Wiederstände von 470 ohm. Es steht dort “8 Resistances (470 ohm) (For not to make the leds garbage because of +5V)“ J



    http://www.codeproject.com/KB/cs/csppleds.aspx

    Grüße und Erfolg,

    Robert

    Montag, 28. September 2009 20:37
  • Hoi Sabine,

    freut mich wirklich sehr dass ich auch mal jemandem helfen konnte :-)

    Geben ist doch seeliger denn nehmen ;-)


    Doei
    Franz
    Montag, 28. September 2009 20:48