Hallo,
ich habe folgendes Problem: Und Zwar habe ich ein IO-Warrior 24-Interface mit 10 angeschlossenen Tastern (8 an Port0 und 2 an Port1).
Leider sind in der SDK keine Code-Beispiele, wie man die Ports in einem Timer unter VB6 abfragt. Alle anderen Funktionen kann ich nutzen, nur das Einlesen einer gedrückten Taste funktioniert nicht. Die Hardware funktioniert auch einwandfrei (mit dem HIDComplete-Programm getestet)
testen.
Vielleicht könnte mir einer ein paar Beispiel-Codezeilen oder Programmbeispiel mailen, in denen die Funktionen IowKitRead und IowKitReadImmediate genutzt werden. Das Forum habe ich sschon vergeblich durchsucht.
Vielen Dank!
IowKitRead mit VB6
Moderator: Guido Körber
-
- Posts: 1
- Joined: Wed Nov 17, 2004 5:33 pm
Hallo,
z.B. ein Auszug aus meinem Code:
Private Sub Timer_IOw40_1_read_Timer()
Dim i
Dim sResult As Long
sResult = IowKitReadImmediate4Byte(IOWarrior_Handles(1), IOW40_1_Data(0))
label_iow40_1.Caption = IOW40_1_Data(0) & " " & IOW40_1_Data(1) & " " & IOW40_1_Data(2) & " " & IOW40_1_Data(3)
............
Public IOW40_1_Data(5) As Byte
Public Declare Function IowKitReadImmediate4Byte _
Lib "iowkit" Alias "IowKitReadImmediate" _
(ByVal iowHandle As Long, _
ByRef Buffer As Byte) _
As Long
Damit du was abfragen kannst mußt du davor die Ports auf 1 setzten. Im Timer kannst du IowKitRead nicht verwenden, weil da immer auf die nächste Änderung gewartet wird. Wenn du mit IowKitRead arbeiten willst/mußt dann brauchst du threads, ist aber im VB6 nicht einfach.
lg
Tom
z.B. ein Auszug aus meinem Code:
Private Sub Timer_IOw40_1_read_Timer()
Dim i
Dim sResult As Long
sResult = IowKitReadImmediate4Byte(IOWarrior_Handles(1), IOW40_1_Data(0))
label_iow40_1.Caption = IOW40_1_Data(0) & " " & IOW40_1_Data(1) & " " & IOW40_1_Data(2) & " " & IOW40_1_Data(3)
............
Public IOW40_1_Data(5) As Byte
Public Declare Function IowKitReadImmediate4Byte _
Lib "iowkit" Alias "IowKitReadImmediate" _
(ByVal iowHandle As Long, _
ByRef Buffer As Byte) _
As Long
Damit du was abfragen kannst mußt du davor die Ports auf 1 setzten. Im Timer kannst du IowKitRead nicht verwenden, weil da immer auf die nächste Änderung gewartet wird. Wenn du mit IowKitRead arbeiten willst/mußt dann brauchst du threads, ist aber im VB6 nicht einfach.
lg
Tom
Hallo,
Vielen dank für die schnelle Antwort. Es klappt auch Super, bis auf die letzten beiden Tasten. Entweder hab ich es immer noch nicht kapiert, oder irgendwo hat sich ein Fehler eingeschlichen.
Ich habe ja insgesamt 10 Tasten angeschlossen (1-8 an Port0 und 9-10 an Port1), die auch alle einwandfrei angeschlossen sind und mit einen anderen Testprogramm funktionieren.Wie kann ich denn die beiden Tasten, die an Port1 angeschlossen sind auch noch abfragen?
Vielen Dank!
Hier ist jetzt mein Quell-Text:
Dim iow_handle As Long
Dim data(5) As Byte
Private Sub timer_write_read_Timer()
Dim nWritten As Long
Dim sResult As Long
data(0) = &O0
data(1) = &HFF
data(2) = &HFF
data(3) = &HFF
data(4) = &HFF
nWritten = IowKitWrite(iow_handle, 0, data(0), 3)
If nWritten <> 3 Then
MsgBox "Fehler beim Schreiben!", 0, "Fehler"
Exit Sub
Else
'sResult = IowKitReadImmediate4Byte(iow_handle, data(0))
Me.txtbox(0).text = sResult
Me.txtbox(1).text = data(0)
End If
End Sub
Vielen dank für die schnelle Antwort. Es klappt auch Super, bis auf die letzten beiden Tasten. Entweder hab ich es immer noch nicht kapiert, oder irgendwo hat sich ein Fehler eingeschlichen.
Ich habe ja insgesamt 10 Tasten angeschlossen (1-8 an Port0 und 9-10 an Port1), die auch alle einwandfrei angeschlossen sind und mit einen anderen Testprogramm funktionieren.Wie kann ich denn die beiden Tasten, die an Port1 angeschlossen sind auch noch abfragen?
Vielen Dank!
Hier ist jetzt mein Quell-Text:
Dim iow_handle As Long
Dim data(5) As Byte
Private Sub timer_write_read_Timer()
Dim nWritten As Long
Dim sResult As Long
data(0) = &O0
data(1) = &HFF
data(2) = &HFF
data(3) = &HFF
data(4) = &HFF
nWritten = IowKitWrite(iow_handle, 0, data(0), 3)
If nWritten <> 3 Then
MsgBox "Fehler beim Schreiben!", 0, "Fehler"
Exit Sub
Else
'sResult = IowKitReadImmediate4Byte(iow_handle, data(0))
Me.txtbox(0).text = sResult
Me.txtbox(1).text = data(0)
End If
End Sub