IO Warrior steigt aus

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
HolgerM
Posts: 2
Joined: Sun May 31, 2009 5:45 pm

IO Warrior steigt aus

Post by HolgerM »

Hallo Leute,

habe ein VB Programm geschrieben, dass mittels Timer die Eingänge liest und die Ausgänge setzt. Verwendet wird dafür IowKitRead. Nach dem Beenden wir natürlich das Interface wieder geschlossen.

Nun kann es ab und zu vorkommen, dass das Interface beim nächsten Start des Programms oder sogar PCs nicht mehr erreichbar ist. Dann muss ich erst die Karte aus dem PC ziehen und wieder reinstecken. Danach funktioniert es in den meisten Fällen wieder.

Hat jemand eine Idee woran das liegen könnte?
friend-of-rq
Posts: 389
Joined: Sun Feb 13, 2005 1:22 pm
Location: Gerblingerode / Duderstadt
Contact:

Re: IO Warrior steigt aus

Post by friend-of-rq »

Hallo HolgerM,

die DLL hält die Daten, die von den IOWs kommen in einem Stapel,

ist der Stapel leer und Du versuchst mit IowKitRead Daten zu lesen, wartet die DLL und somit
auch dein Programm auf Daten die vom IOW kommen, "Programm scheint zu hängen".

Besser ist es mit IowKitReadNoBlocking den Stapel ab zu fragen.
Ist der Stapel leer steht in dat(0)=0 , ansonsten steht in dat(0)=ID die ReportID.

Dieser Sachverhalt ist hier im Forum aber bereits mehrfach erläutert worden ...
Nach dem Beenden wir natürlich das Interface wieder geschlossen.
wie geht denn das ... Du solltest lieber vor dem beenden die Dll schliessen IowKitCloseDevice

mfg
R.Greinert
HolgerM
Posts: 2
Joined: Sun May 31, 2009 5:45 pm

Re: IO Warrior steigt aus

Post by HolgerM »

Selbstverständlich vor dem Beenden. Das Programm hängt nicht damit. Aber das ist ja auch nicht das Problem.
User avatar
Christoph Jung
Posts: 673
Joined: Sun Oct 08, 2006 3:43 pm
Location: Germany / Berlin
Contact:

Re: IO Warrior steigt aus

Post by Christoph Jung »

Wenn man IowKitRead verwendet sollte man IMMER den Timeout setzen (IowKitSetTimeout), damit das Programm nach X Sekunden den Read abbricht und danach weiter macht. Oder man verwendet wie friend-of-rq schon sagte IowKitReadNonBlocking und wertet da dann die Events aus.

Beim beenden des Programms soltle IMMER IowKitCloseDevice() verwendet werden, da sonst das Programm die DLL nicht entläd und der Prozess im Hintergrund weiterläuft. Das kann dann dazu führen, dass das Programm, wenn es ein zweites Mal gestartet wird keine IO-Warrior findet, weil das Programm ja i Hintergrund noch läuft.
Software developer
friend-of-rq
Posts: 389
Joined: Sun Feb 13, 2005 1:22 pm
Location: Gerblingerode / Duderstadt
Contact:

Re: IO Warrior steigt aus

Post by friend-of-rq »

Hallo HolgerM,

ich kenne eigentlich nur eine Situation wo der IOW nicht mehr reagiert:
Wenn man die LCD Funktion nutzt ohne das ein angeschlossenes oder falsch angeschlossenes LCD vorhanden ist.
Denn dann wartet der IOW auf das nicht vorhandene Display.
Da gibt es nur eine Lösung, ein Hardware-Reset, USB-Stecker raus und wieder rein.
Nun kann es ab und zu vorkommen, dass das Interface beim nächsten Start des Programms oder sogar PCs nicht mehr erreichbar ist. Dann muss ich erst die Karte aus dem PC ziehen und wieder reinstecken. Danach funktioniert es in den meisten Fällen wieder.
Du schreibst was von, Interface und das Du die Karte ziehen musst ... was für eine Karte ?
Die IOWs haben einen USB-Anschluss ... hängt zwischen PC und IOW noch was anderes als ein möglichst kurzes USB-Kabel.

Die Schaltung in dem Du den IOW verwendest, ist das eine eigene Schaltung oder ein TEST-Board ?

Funktioniert denn deine Schaltung mit meinem Testprogramm All-In-One fehlerfrei ?
Post Reply