Ich möchte eine 16 x 8 Tastermatrix porgamieren.
Ich habe die Version1.0.3 des IOW40.
Irgendwie bekomme ich es aber nicht hin.
Code: Select all
Public Class Form1
Public Sub Form1_Load(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles MyBase.Load
' ---------------------------------iow initialisieren-----------------------------
' Alle IOW öffnen
iowHandles(0) = IowKitOpenDevice()
' wenn fehler
If iowHandles(0) = 0 Then
' Beenden und Fehler anzeigen
MsgBox("Can not open IOW device!", 0, "Error")
End
End If
' Wieviele IOW gibt es im System?
numIows = IowKitGetNumDevs()
' verpasse jedem IOW ein Handle
For I = 2 To numIows
iowHandles(I - 1) = IowKitGetDeviceHandle(I)
Next I
'Serialnummern der IOW auslesen und anzeigen
I = IowKitGetSerialNumber(iowHandles(0), S(0))
TextBox1.Text = System.Text.UnicodeEncoding.Unicode.GetString(S)
TextBox1.Text = "FMC " & TextBox1.Text
TextBox1.Refresh()
Dim initdata(7) As Byte
'Tastenmatrix einschalten 8 x 16
initdata(0) = &H18
initdata(1) = &H2
res = IowKitWrite(iowHandles(0), IOW_PIPE_SPECIAL_MODE, initdata(0), 8)
Timer1.Enabled = True
End Sub
'###################### HAUPTSCHLEIFE #############################################################
Public Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
TextBox2.Text = "Timer läuft!"
TextBox2.BackColor = Color.ForestGreen
schalter_einlesen() 'von IOW
End Sub
'##############################################tasten un schalter einlesen#########################
Private Sub schalter_einlesen()
Dim data0(8) As Byte
Dim data1(8) As Byte
Dim data2(8) As Byte
Dim data3(8) As Byte
Dim res As Long
Dim ii, ak As Integer
ii = 0
ak = 0
res = IowKitReadNonBlocking(iowHandles(0), IOW_PIPE_SPECIAL_MODE, data0(0), 8)
If data0(0) = &H1A Then ' Taste oder Schalter wurde verändert, dann ins Array einlesen, sonst überspringen
For ak = 1 To 8 '1-8
Taste(ii) = Ist_Bit_Gesetzt(data0(1), ak)
ii = ii + 1
Next ak
For ak = 1 To 8 '9-16
Taste(ii) = Ist_Bit_Gesetzt(data0(2), ak)
ii = ii + 1
Next ak
For ak = 1 To 8 '17-24
Taste(ii) = Ist_Bit_Gesetzt(data0(3), ak)
ii = ii + 1
Next ak
For ak = 1 To 8 '25-32
Taste(ii) = Ist_Bit_Gesetzt(data0(4), ak)
ii = ii + 1
Next ak
res = IowKitReadNonBlocking(iowHandles(0), IOW_PIPE_SPECIAL_MODE, data1(0), 8)
For ak = 1 To 8 '33-40
Taste(ii) = Ist_Bit_Gesetzt(data1(1), ak)
ii = ii + 1
Next ak
For ak = 1 To 8 '41-48
Taste(ii) = Ist_Bit_Gesetzt(data1(2), ak)
ii = ii + 1
Next ak
For ak = 1 To 8 '49-56
Taste(ii) = Ist_Bit_Gesetzt(data1(3), ak)
ii = ii + 1
Next ak
For ak = 1 To 8 '57-64
Taste(ii) = Ist_Bit_Gesetzt(data1(4), ak)
ii = ii + 1
Next ak
End If
'-----------------------------------------------------------------------------------------------------------------
ii = 65
res = IowKitReadNonBlocking(iowHandles(0), IOW_PIPE_SPECIAL_MODE, data2(0), 8)
If data2(0) = &H1C Then
For ak = 1 To 8 '65-72
Taste(ii) = Ist_Bit_Gesetzt(data2(1), ak)
ii = ii + 1
Next ak
For ak = 1 To 8 '73-80
Taste(ii) = Ist_Bit_Gesetzt(data2(2), ak)
ii = ii + 1
Next ak
For ak = 1 To 8 '81-88
Taste(ii) = Ist_Bit_Gesetzt(data2(3), ak)
ii = ii + 1
Next ak
For ak = 1 To 8 '89-96
Taste(ii) = Ist_Bit_Gesetzt(data2(4), ak)
ii = ii + 1
Next ak
res = IowKitReadNonBlocking(iowHandles(0), IOW_PIPE_SPECIAL_MODE, data3(0), 8)
For ak = 1 To 8 '97-104
Taste(ii) = Ist_Bit_Gesetzt(data3(1), ak)
ii = ii + 1
Next ak
For ak = 1 To 8 '105-112
Taste(ii) = Ist_Bit_Gesetzt(data3(2), ak)
ii = ii + 1
Next ak
For ak = 1 To 8 '113-120
Taste(ii) = Ist_Bit_Gesetzt(data3(3), ak)
ii = ii + 1
Next ak
For ak = 1 To 8 '121-128
Taste(ii) = Ist_Bit_Gesetzt(data3(4), ak)
ii = ii + 1
Next ak
End If
Dim nummer As Long
For nummer = 0 To 255
If Taste(nummer) = True Then
LabArray(nummer).BackColor = Color.Red
Else
LabArray(nummer).BackColor = Color.Green
End If
Next
End Sub
Public Function Ist_Bit_Gesetzt(ByVal value As Integer, ByVal bitNumber As Integer) As Boolean
Dim mask As Integer = 1 << bitNumber
Return (value And mask)
End Function
Public Sub Setze_Bit(ByRef value As Integer, ByVal bitNumber As Integer)
Dim mask As Integer = 1 << bitNumber
value = value Or mask
End Sub
Public Sub Lösche_Bit(ByRef value As Integer, ByVal bitNumber As Integer)
Dim mask As Integer = 1 << bitNumber
value = value And Not mask
End Sub
Function bcd2dec(bcd As Byte) As String
bcd2dec = (bcd And &HF0) / &H10 * 10 + (bcd And &HF)
End Function
End Class
Kann jemand bitte helfen?