IO Warrior hängt sich auf

Dies ist das deutsche Forum für alle Themen um den IO-Warrior. Beiträge bitte nur in Deutsch.

Moderator: Guido Körber

Post Reply
geisi
Posts: 3
Joined: Thu Nov 27, 2008 9:42 am

IO Warrior hängt sich auf

Post by geisi »

Hallo zusammen,
bin leider Anfänger und habe demendsprechend keine Ahnung, wo ich anfangen sollte den Fehler zu suchen.

Ich will auslesen, wie lange seit dem letzten auslösen eines Kontaktes vergangen ist, und mache das über VB.net mit einem Timer.
Private Sub Timer1_Tick...
den habe ich auf 10 Millisekunden laufen und lasse eine laufzeitvariable frame +=1 weiterlaufen

Im Timer1_Tick lese ich den Warrior aus
Res = IowKitReadNonBlocking(iowHandles(0), 0, data(0), N)
und überprüfe ob data(1)=255 == nicht ausgelöst ist oder nicht
dann speichere ich den Wert von frame halt als an oder aus ab und kann über die letzten Werte die Differenz in 10tel Millisekunden zählen.

Eigentlich wollte ich jetzt damit einen Flashfilm steuern, aber schon jetzt beim testen hängt sich der Warrior immer wieder auf.
Also es geht drei vier auch mal sechs Schaltungen ich bekomme die frame Variable auch soweit als an oder aus richtig angezeigt, aber dann hängt sich der Warrior auf.
Ich muss den dann komplett vom USB abziehen und wieder dranstöplseln, bis der wieder geht.
Die Diode, die ich auf dem Warrior habe, zeigt zwar an, das der Warrior die Schaltung noch liest, aber die Verbindung zum Rechner USB - VB.net ist tot.

Je langsamer ich den Warrior stelle Timer = 50 oder 100 Millisekunden läuft er gefühlt etwas stabiler.
Aber eigentlich wollte ich so genau wie möglich messen....

Wie schnell kann man den so mit dem Warror messen?
Ist das mit dem Timer die einzigen Möglichkeit ?
Ist mein Warror vielleicht kaputt ?

Hilfe Danke Geisi
User avatar
Christoph Jung
Posts: 673
Joined: Sun Oct 08, 2006 3:43 pm
Location: Germany / Berlin
Contact:

Re: IO Warrior hängt sich auf

Post by Christoph Jung »

Hallo,

Ein Auslesen alle 10 ms wird mit einem normalem Timer wird nicht funktionieren, da Windows nicht so schnell ist. Windows hat in der Regel ohne dass andere Programme laufen ca. 16ms. Sobald aber ein Programm etwas intensiver Rechenleistung verlang steigt diese zwit bis auf 50ms. Um das zu umgehen muss man mit einem Multimedia-Timer arbeiten. Der schafft 1-2 ms.

Die Frage ist aber eher: Hängt sich der IO-Warrior auf oder das Programm. Meist liegt es am Programm, weil man dort was vergessen hat oder unnötige Umwege geht (variablen schaufeln, wo es nichts zu schaufeln gibt).

Ein wenig Quellcode wäre ganz gut. Am besten die Timerfunktion.
Software developer
geisi
Posts: 3
Joined: Thu Nov 27, 2008 9:42 am

Re: IO Warrior hängt sich auf

Post by geisi »

Huhu, hier der Timer.
da ist echt nicht mehr variablen geschaufel drinne.
Den Flashcall lass ich eigentlich raus und dennoch hakt es.
Was ist denn ein Multimedia Timer ?


Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Dim Res As Integer
Dim N As Integer
Dim Pid As Integer

' Perform a read
Pid = IowKitGetProductId(iowHandles(0))
If Pid = IOWKIT_PID_IOW24 Then
N = 3
Else
If Pid = IOWKIT_PID_IOW40 Then
N = 5
Else
If Pid = IOWKIT_PID_IOW56 Then
N = 8
End If
End If
End If


' Read from IO-Warrior
Res = IowKitReadNonBlocking(iowHandles(0), 0, data(0), N)

If (data(1) = 127) Then
If (frame - an_frame) > 1 Then
Label1.Text = "differenz:" & (frame - an_frame)
'Call AxShockwaveFlash1.SetVariable("vb_watt_li", (frame - an_frame))
End If
an_frame = frame
End If

frame = frame + 1

End Sub
User avatar
Christoph Jung
Posts: 673
Joined: Sun Oct 08, 2006 3:43 pm
Location: Germany / Berlin
Contact:

Re: IO Warrior hängt sich auf

Post by Christoph Jung »

Ich seh jetzt auch keine Ungereimtheiten auf den ersten Blick. Leider ist Basic nicht ganz meine stärke und auch schon etwas altbacken.
Wie lang ist denn jetzt der Timerintervall eingestellt?
Was heißt "trotzdem hackt es"?

Ein Multimediatimer ist wie der Name schon sagt für Multimedia gedacht. Ohne diesen würde man keine MUsik hören können, weil das System ja nur ca.20ms als Maximum Timer zu lässt. Das würde bescheiden klingen...

Einfach mal nach Googlen.
Software developer
friend-of-rq
Posts: 389
Joined: Sun Feb 13, 2005 1:22 pm
Location: Gerblingerode / Duderstadt
Contact:

Re: IO Warrior hängt sich auf

Post by friend-of-rq »

Hallo Herr Jung,
Leider ist Basic nicht ganz meine stärke und auch schon etwas altbacken.
... albacken ... HotBasic ist z.B. derzeit das schnellste was es gibt und RQ ist auch immer noch schneller als C !
Leider gibt es immer noch das Vorurteil das Basic langsam ist aber neue Programmiersprachen müssen nicht immer besser sein !
Ein Auslesen alle 10 ms wird mit einem normalem Timer wird nicht funktionieren, da Windows nicht so schnell ist. Windows hat in der Regel ohne dass andere Programme laufen ca. 16ms. Sobald aber ein Programm etwas intensiver Rechenleistung verlang steigt diese zwit bis auf 50ms. Um das zu umgehen muss man mit einem Multimedia-Timer arbeiten. Der schafft 1-2 ms.
in RQ komme ich z.B. bis ca 2-3 ms runter.

@geisi
Läuft denn deinen Schaltung mit All-In-One, dort frage ich die Ports alle 50 mS ab,
-verwendest Du ein Kit oder was selbst gelötetes
-wie lang ist dein USB-Kabel
-schon mal an einem andere PC versucht

Gruss Ralf
Post Reply