Ich mal wieder:-)
Also ich habe 3 IOW40 und 4 Spinwarriors in meinem Sytem. Alles klappte super bis ich die IOW wechseln musste. Mein Problem ist nun, das sich die Chips in einer andren Reihenfolge anmelden und somit die Durchnummerierung LED und Schalter geändert hat. Was IOW 1 war, ist jetzt 3.
Die IOW arbeiten im 8Martix-switch und LED -Matrix mode.
Wie kann ich die Handles neu verteilen?
Ich weiss , das es über die Get_serialnumber funktion geht, aber die kann ich erst aufrufen, wenn die Handles für die Chips schon vergben sind.
Versuche ich jetzt die Handles anhand der Serials neu zu sortieren stürzt das Programm ab.
Hat jemand ne Ide?
VB6.=
Public Sub init_IOW()
Dim i As Long
Dim ser1(18) As Byte
Dim ser2(18) As Byte
Dim ser3(18) As Byte
Dim res
'----- test auf iow
iowHandles(0) = IowKitOpenDevice()
If iowHandles(0) = 0 Then
MsgBox "Can not open device!", 0, "Error"
End
End If
'----- IOW zählen
numIows = IowKitGetNumDevs()
cockpit.Label7.Caption = numIows
'-------Handles vergeben
For i = 2 To numIows
iowHandles(i - 1) = IowKitGetDeviceHandle(i)
Next i
'-----Serials abfragen
i = IowKitGetSerialNumber(IowKitGetDeviceHandle(1), ser1(0)) '34E5
i = IowKitGetSerialNumber(IowKitGetDeviceHandle(2), ser2(0)) '4D11
i = IowKitGetSerialNumber(IowKitGetDeviceHandle(3), ser3(0)) '4d10
cockpit.Label9.Caption = ser1
cockpit.Label17.Caption = ser2
cockpit.Label15.Caption = ser3
Und jetzt soll der Chip mit der Serial 4D10 das iow_handle 0
der Chip mit der Serial 34E5 das iow_handle 1
der Chip mit der Serial 4D11 das iow_handle 2
Wie mache ich das?
Reihenfolge bei mehreren IOW
Moderator: Guido Körber
-
- Posts: 389
- Joined: Sun Feb 13, 2005 1:22 pm
- Location: Gerblingerode / Duderstadt
- Contact:
Re: Reihenfolge bei mehreren IOW
Hallo rolf55,
ich habe das wie folgt gelöst:später bei den anderen Funktionen brauche ich mich um den Handle und die anderen IOW speziellen Parameter nicht mehr kümmern z.B.
oder
bei dem Aufruf meiner IOW-Funktionen übergebe ich nur noch die IOW-ID des verwendeten IOWarriors.
Nach dem öffner IOW_OPEN überprüfst Du die IOW-SN die Du verwenden möchtest und
ordnest die entstrechenden IDs deiner Anwendungen(My_Tastatur , My_LCD) zuin den Anwendungen verwendest du die IOW-Funktionen wie folgt:
nicht verteilen ... richtig zuordnen !Wie kann ich die Handles neu verteilen?
ich habe das wie folgt gelöst:
Code: Select all
Function IOW_OPEN() as integer
'--- IOW-DLL wird geöffnet und alle IOW werden eigelesen
dim n as integer
dim sn(7) as word
for n= 1 to 64
IOW_DH(n)=0
IOW_SN(n)=""
IOW_Type(n)=""
iow_revs(n)=""
next n
IOW_DEV_handel = IOW_open_dev
IF IOW_DEV_handel <> 0 then
IOW_DN = iow_get_nd
if IOW_DN > 0 then
for n=1 to IOW_DN
IOW_DH(n) = iow_get_dh(n)
iow_get_sn(IOW_DH(n),sn(0))
IOW_SN(n)=chr$(sn(0))+chr$(sn(1))+chr$(sn(2))+chr$(sn(3))+chr$(sn(4))+chr$(sn(5))+chr$(sn(6))+chr$(sn(7))
IOW_Type(n)= right$(hex$(IOW_Get_PID(IOW_DH(n))),4)
IOW_REVS(N) = right$(hex$(IOW_Get_Revision(IOW_DH(n))),4)
if IOW_Type(n)= "1500" then
IOW_TypeBez(n)="IOW40"
IOW_NX_0(n)=5
IOW_NX_1(n)=8
IOW_PX(n)=4
elseif IOW_Type(n)= "1501" then
IOW_TypeBez(n)="IOW24"
IOW_NX_0(n)=3
IOW_NX_1(n)=8
IOW_PX(n)=2
elseif IOW_Type(n)= "1503" then
IOW_TypeBez(n)="IOW56"
IOW_NX_0(n)=8
IOW_NX_1(n)=64
IOW_PX(n)=7
else
IOW_TypeBez(n)=""
IOW_NX_0(n)=0
IOW_NX_1(n)=0
IOW_PX(n)=0
end if
next n
result = IOW_DN
else
result=0
end if
else
IOW_DN=0
result=-1
end if
end function
Code: Select all
function iow_write_P0(ID as integer) as long
if ID > 0 then
if IOW_Write(IOW_DH(ID),0,IOW_OUT_DATA(0),IOW_NX_0(ID)) = IOW_NX_0(ID) then
result=1
else
result=0
end if
end if
end function
Code: Select all
function iow_write_P1(ID as integer) as long
if ID > 0 then
if IOW_Write(IOW_DH(ID),1,IOW_OUT_DATA(0),IOW_NX_1(ID)) = IOW_NX_1(ID) then
result=1
else
result=0
end if
end if
end function
Nach dem öffner IOW_OPEN überprüfst Du die IOW-SN die Du verwenden möchtest und
ordnest die entstrechenden IDs deiner Anwendungen(My_Tastatur , My_LCD) zu
Code: Select all
My_Tastatur =0
My_LCD=0
for n=1 to IOW_DN
if IOW_SN(n)="000034E5" then
My_Tastatur = n
elseif IOW_SN(n)="00000123" then
My_LCD=n
end if
next n
Code: Select all
if My_LCD <>0 then iow_write_P1(My_LCD)
Last edited by friend-of-rq on Sat Nov 22, 2008 3:01 pm, edited 1 time in total.
Re: Reihenfolge bei mehreren IOW
Vielen dank für die schnelle und ausführliche Anrwort. Werde mich gleich daran machen . Muss mich erst mal in deinen Code reinlesen.
Nochmals Danke und ein schönes Wochenende
Rolf
Nochmals Danke und ein schönes Wochenende
Rolf