Benutzer mit den meisten Antworten
visual basic LED parallelport

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?
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- Als Antwort markiert Robert Breitenhofer Montag, 28. September 2009 20:36
-
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- Als Antwort markiert Robert Breitenhofer Montag, 28. September 2009 20:36
-
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- Als Antwort markiert Robert Breitenhofer Montag, 28. September 2009 20:36
-
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- Als Antwort markiert Robert Breitenhofer Montag, 28. September 2009 20:37
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- Als Antwort markiert Robert Breitenhofer Montag, 28. September 2009 20:36
-
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
-
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. -
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
-
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.
-
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
-
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- Als Antwort markiert Robert Breitenhofer Montag, 28. September 2009 20:36
-
Hallo zusammen,
Wie habt ihr in BIOS die LPT eingerichtet? ECP, EPP oder beide ?
Robert
- Bearbeitet Robert Breitenhofer Sonntag, 27. September 2009 17:12 Link
-
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.
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
-
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
-
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 -
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- Als Antwort markiert Robert Breitenhofer Montag, 28. September 2009 20:36
-
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 -
-
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 -
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 -
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- Als Antwort markiert Robert Breitenhofer Montag, 28. September 2009 20:37
-
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