IOW40 ruft >IowKit2MessageWindow< 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
delphi7
Posts: 4
Joined: Tue Mar 10, 2009 9:52 am

IOW40 ruft >IowKit2MessageWindow< auf

Post by delphi7 »

In unregelmäßigen Abständen kann ich mein Delphi-Programm zur Steuerung von Rollläden nicht ordnungsgemäß beenden. Beim Herunterfahren von XP-Pro wird gemeldet, dass das o. g. Fenster noch aktiv ist.

Da ich in der Beschreibung zur IOW DLL (V.1.5) keinen Hinweis auf dieses Fenster finde, bin ich um jeden Hinweis froh, wo ich weitere Informationen darüber sowie über die anderen, in der dll enthaltenen Funktionen finden oder erhalten kann.

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

Re: IOW40 ruft >IowKit2MessageWindow< auf

Post by Christoph Jung »

Die DLL hat keine Fenster.
Ist evtl. etwas mit dem eigenen Programm nicht in ordnung? Wir die DLL ordnungsgemäß entladen? Wenn kein OnCloseDevice() aufgerufen wird bliebt das Programm hängen (der Task wird nicht beedet und behält ein unsichtbares Fenster).
Wenn Windows Runterfährt kann es sein, dass es selbst die DLL vor dem Programm entläd und somit das Programm aus dem Tritt kommt. Bin mir da aber nicht sicher, welche Reihenfolge beim Runterfahren verwendet wird.
Software developer
delphi7
Posts: 4
Joined: Tue Mar 10, 2009 9:52 am

Re: IOW40 ruft >IowKit2MessageWindow< auf

Post by delphi7 »

Danke für die Nachricht.

Nach der Meldung (in der 'IoWKit' enthalten ist) würde ich annehmen, dass von der DLL eine Message angezeigt werden kann / soll. Da mir die Aufrufkonvention dieser Funktion nicht klar ist, kann ich damit nicht umgehen und suche eine Beschreibung dieser und der anderen Funktionen der DLL.

Zum Programmende wird die DLL (ich verwende nur einen IOW40) mit

IowKitCloseDevice(ioHandle) ;

geschlossen. Gibt es zu dieser Anweisung vielleicht eine Übersicht über Rückgabewerte, die mir bei meinem Problem weiterhelfen?

Vielen Dank.

Christoph Jung wrote:Die DLL hat keine Fenster.
Ist evtl. etwas mit dem eigenen Programm nicht in ordnung? Wir die DLL ordnungsgemäß entladen? Wenn kein OnCloseDevice() aufgerufen wird bliebt das Programm hängen (der Task wird nicht beedet und behält ein unsichtbares Fenster).
Wenn Windows Runterfährt kann es sein, dass es selbst die DLL vor dem Programm entläd und somit das Programm aus dem Tritt kommt. Bin mir da aber nicht sicher, welche Reihenfolge beim Runterfahren verwendet wird.
User avatar
Christoph Jung
Posts: 673
Joined: Sun Oct 08, 2006 3:43 pm
Location: Germany / Berlin
Contact:

Re: IOW40 ruft >IowKit2MessageWindow< auf

Post by Christoph Jung »

IowKitCloseDevice() liefert keinen Rückgabewert. Die Funktion schließt alle IO-Warrior und aus ist.
Eine Beschreibung zur DLL ist im SDK enthalten (IOWKIT V15 API.pdf).

Was sagt denn der Ereignissreport von Windows?
Und wie oft trifft denn dieser Fehler auf?
Software developer
delphi7
Posts: 4
Joined: Tue Mar 10, 2009 9:52 am

Re: IOW40 ruft >IowKit2MessageWindow< auf

Post by delphi7 »

In der IO-Warrior SDK Library befindet sich unter windows\library_1_5\source das file openclose.c, in dem in Zeile 249 das störende "IowKit2MessageWindow" auftaucht.

Ich gehe davon aus, dass in iowkit.dll auch auf die Routinen von openclose.c zugegriffen wird, da dieses "Fenster" sonst nicht ins Spiel kommen würde.

Meine C-Kenntnisse reichen leider (bei weitem) nicht aus um zu verstehen, welche Bedeutung das "Fenster" hat und wie ich es von meinem Programm aus schließen kann.

Wer kann mir mit einem Tipp weiterhelfen?

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

Re: IOW40 ruft >IowKit2MessageWindow< auf

Post by Christoph Jung »

Dieses "Fenster" wird für die Nachrichten des Systems benötigt. Dort werden unter anderem Nachrichten wie das "Das System Runterfahren" verarbeitet.
Jede Anwendung auf dem System hat ein Fenster, auch wenn man einige nicht sieht. Das ist Grundlage der Programmierung.

Das kann man per Hand nicht abfragen bzw. beenden und aus der DLL kann man das auch nicht entfernen, weil sonst die DLL nicht mehr funktioniert. Auf meinem System läuft auch ein Programm, was beim Starten des Systems mitgestartet wird und beim Beenden mit beendet wird. Allerdings habe ich in den letzten 10 Monaten, seit dem das Programm läuft nicht einmal diesen Fehler gehabt.

Sie haben immer noch nicht gesagt, was das Ereignisprotokoll von Windows sagt und wie oft der Fehler auftritt. Ohne das können wir nicht ohne weiteres dem Problem auf den Grund gehen.
Software developer
delphi7
Posts: 4
Joined: Tue Mar 10, 2009 9:52 am

Re: IOW40 ruft >IowKit2MessageWindow< auf

Post by delphi7 »

Auch für Ihre letzte Nachricht möchte ich mich bedanken.

Das Ereignisprotokoll liefert leider nur die folgenden Angaben

Fehler, Quelle Application Hang, Kat. (101), Ereignis 1002

die mir eigentlich nur das Hängen eines (Unter-)Programms bestätigen, da ich die Bedeutung der beiden anderen Werte nicht kenne.

Als vermutliche Fehlerursache habe ich gerade eine kurzzeitige Unterbrechung der USB-Verbindung ausgemacht, wie sie beim Umstecken des Kabels auftritt, auch wenn währen dieser Zeit der IOW40 an seinen IO-Pins völlig passiv ist.

Bisher habe ich noch keinen Weg gefunden, eine unterbrochene Verbindung wieder herzustellen und den Fehlerzustand, der durch die Unterbrechung hervorgerufen wird
(mit dem "Fenster" als Folge?), ohne einen Neustart von XP zurückzusetzen.

Wenn es keinen solchen Weg gibt, bleibt mir nur der Ausweg, die USB-Verbindung gegen Unterbrechungen zu sichern (was bei dieser Anwendung möglich ist).

Nochmals danke für Ihre investierte Zeit und Mühe!
User avatar
Christoph Jung
Posts: 673
Joined: Sun Oct 08, 2006 3:43 pm
Location: Germany / Berlin
Contact:

Re: IOW40 ruft >IowKit2MessageWindow< auf

Post by Christoph Jung »

Um USB-Geräte nach einem neu einstecken zu finden einfach mal WM_DEVICECHANGE googlen.
Wenn man bei einem leufenden Programm, das auf den USB zugreift (ob nun aktiv oder passiv) muss man damit rechnen, dass die eigenen Programme das meist nicht mitbekommen. Wenn dann noch funktionen der DLL laufen (Read, ReadImmediate, ReadNonBlocking) oder Timer laufen kommt es schnell dazu, dass Programme abschmieren. Und das macht sich dann beim Runterfahren bemerkbar, da das DLL-Fenster nich korrekt beendet wurde.
Software developer
Guido Körber
Site Admin
Posts: 2879
Joined: Tue Nov 25, 2003 10:25 pm
Location: Germany/Berlin
Contact:

Re: IOW40 ruft >IowKit2MessageWindow< auf

Post by Guido Körber »

Ist der IOW40 auf einem Starterkit mit Originalbauteilen aufgebaut?
Post Reply