Hallo, ich habe ein kleines Problem mit der Inpuout32.dll
Ich möchte mit meinem PC die Parallele Schnittstelle ansprechen.
Dies tue ich mit besagter DLL.
Ich habe ein von einem Freund gebautes Kästschen (er ist Elektriker) mit 8 LED´s (für Ausgänge) und 5 Kippschaltern (Eingänge).
Schreiben funktioniert wunderbar, dort spreche ich die Adresse 888 an.
Damit kann ich dann entsprechend die LED´s ein und ausschalten.
Das Lesen funktioniert nicht ganz.
Dort spreche ich Adresse 889 an (Siehe Punkt 8.2).
Sind alle Kippschalter deaktiviert, so erhalte ich den Wert 87 (Bits 0, 1, 2, 4, 6 sind somit logisch aktiviert).
Schalte ich per Schalter die 4 oder 6, tut sich nichts, schalte ich 3, 5, oder 7 so verändert sich der ausgelesene Wert wie erwartet.
Somit scheinen mir neben den nicht verfügbaren ersten 3 Bits die Bits 4 und 6 immer aktiv zu sein und Strom zu führen.
Wir haben die Hardware kontrolliert, dort sieht alles in Ordnung aus, auf einem anderen Testrechner mit einer QBasic-Anwendung funktioniert alles wie es soll, ich bin lediglich dabei, das ganze auch unter VB zum laufen zu bringen.
Ich habe hier ein paar entsprechende Code-Ausschnitte:
Spoiler anzeigen
Zwei Verschiedene Projekte, die Enums werden unter anderem zur Darstellung und Nutzung für Checkboxen in einer Form genutzt.
Debugging hat gezeigt, das der Wert bereits beim einlesen nicht stimmt, also vermute ich keinen Fehler in meinem Quellcode.
Ist ein entsprechender Fehler mit der Inpout.dll bekannt?
Oder - wenn es vielleicht an meinem Port liegt, wie kann ich diesen ohne Drucker testen? Der angesprochene zweite Rechner steht nicht bei mir zuhause, mein Laptop hat keinen LPT und mein zweiter Rechner hat keinen prozessor, kann es also nicht effektiv testen daheim.
Mein Drucker hat nur USB
Ich möchte mit meinem PC die Parallele Schnittstelle ansprechen.
Dies tue ich mit besagter DLL.
Ich habe ein von einem Freund gebautes Kästschen (er ist Elektriker) mit 8 LED´s (für Ausgänge) und 5 Kippschaltern (Eingänge).
Schreiben funktioniert wunderbar, dort spreche ich die Adresse 888 an.
Damit kann ich dann entsprechend die LED´s ein und ausschalten.
Das Lesen funktioniert nicht ganz.
Dort spreche ich Adresse 889 an (Siehe Punkt 8.2).
Sind alle Kippschalter deaktiviert, so erhalte ich den Wert 87 (Bits 0, 1, 2, 4, 6 sind somit logisch aktiviert).
Schalte ich per Schalter die 4 oder 6, tut sich nichts, schalte ich 3, 5, oder 7 so verändert sich der ausgelesene Wert wie erwartet.
Somit scheinen mir neben den nicht verfügbaren ersten 3 Bits die Bits 4 und 6 immer aktiv zu sein und Strom zu führen.
Wir haben die Hardware kontrolliert, dort sieht alles in Ordnung aus, auf einem anderen Testrechner mit einer QBasic-Anwendung funktioniert alles wie es soll, ich bin lediglich dabei, das ganze auch unter VB zum laufen zu bringen.
Ich habe hier ein paar entsprechende Code-Ausschnitte:
VB.NET-Quellcode
- Private Shared Function Connect(ByVal args() As String) As Integer
- If args.Length = 0 OrElse args.Length > 2 Then Return 0
- args(0) = args(0).ToLower
- Dim value As Integer
- If args.Length = 1 AndAlso args(0).Equals("get") Then : Return ReadHardware(HardWareAdress + 1)
- ElseIf args.Length = 2 AndAlso args(0).Equals("set") AndAlso
- (New Regex("[0-9]")).IsMatch(args(1)) Then
- value = CInt(args(1))
- If value >= 0 Then
- If value < 256 Then
- WriteHardware(HardWareAdress, value)
- Return -1
- Else : Return 0
- End If
- Else : Return 0
- End If
- Else : Return 0
- End If
- End Function
- <DllImport("inpout32.dll", EntryPoint:="Out32")>
- Private Shared Sub WriteHardware(ByVal add As Integer, ByVal value As Integer)
- End Sub
- <DllImport("inpout32.dll", EntryPoint:="Inp32")>
- Private Shared Function ReadHardware(ByVal add As Integer) As Integer
- End Function
- <Flags()>
- Public Enum Input As Integer
- Null = 0
- In00 = 8
- In01 = 16
- In02 = 32
- In03 = 64
- In04 = 128
- End Enum
- <Flags()>
- Public Enum Output As Integer
- Null = 0
- Out00 = 1
- Out01 = 2
- Out02 = 4
- Out03 = 8
- Out04 = 16
- Out05 = 32
- Out06 = 64
- Out07 = 128
- End Enum
- Private Sub UpdateHardware()
- EIn = CType(LPTConnector.LPTConnector.Read, Input)
- LPTConnector.LPTConnector.Write(CInt(EOut))
- End Sub
Zwei Verschiedene Projekte, die Enums werden unter anderem zur Darstellung und Nutzung für Checkboxen in einer Form genutzt.
Debugging hat gezeigt, das der Wert bereits beim einlesen nicht stimmt, also vermute ich keinen Fehler in meinem Quellcode.
Ist ein entsprechender Fehler mit der Inpout.dll bekannt?
Oder - wenn es vielleicht an meinem Port liegt, wie kann ich diesen ohne Drucker testen? Der angesprochene zweite Rechner steht nicht bei mir zuhause, mein Laptop hat keinen LPT und mein zweiter Rechner hat keinen prozessor, kann es also nicht effektiv testen daheim.
Mein Drucker hat nur USB