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!
IOW40 ruft >IowKit2MessageWindow< auf
Moderator: Guido Körber
- Christoph Jung
- Posts: 673
- Joined: Sun Oct 08, 2006 3:43 pm
- Location: Germany / Berlin
- Contact:
Re: IOW40 ruft >IowKit2MessageWindow< auf
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.
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
Re: IOW40 ruft >IowKit2MessageWindow< auf
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.
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.
- Christoph Jung
- Posts: 673
- Joined: Sun Oct 08, 2006 3:43 pm
- Location: Germany / Berlin
- Contact:
Re: IOW40 ruft >IowKit2MessageWindow< auf
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?
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
Re: IOW40 ruft >IowKit2MessageWindow< auf
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.
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.
- Christoph Jung
- Posts: 673
- Joined: Sun Oct 08, 2006 3:43 pm
- Location: Germany / Berlin
- Contact:
Re: IOW40 ruft >IowKit2MessageWindow< auf
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.
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
Re: IOW40 ruft >IowKit2MessageWindow< auf
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!
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!
- Christoph Jung
- Posts: 673
- Joined: Sun Oct 08, 2006 3:43 pm
- Location: Germany / Berlin
- Contact:
Re: IOW40 ruft >IowKit2MessageWindow< auf
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.
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
-
- Site Admin
- Posts: 2879
- Joined: Tue Nov 25, 2003 10:25 pm
- Location: Germany/Berlin
- Contact:
Re: IOW40 ruft >IowKit2MessageWindow< auf
Ist der IOW40 auf einem Starterkit mit Originalbauteilen aufgebaut?