IOW56: Programm-Absturz beim Aufruf von 'IowKitCloseDevice()'

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

Moderator: Guido Körber

H.S.
Beiträge: 3
Registriert: Do Aug 30, 2018 9:13 am
Kontaktdaten:

IOW56: Programm-Absturz beim Aufruf von 'IowKitCloseDevice()'

Beitragvon H.S. » Do Aug 30, 2018 9:41 am

Hallo,

das Probleme ist aufgetreten, nachdem ich beide TO-Funktionen 'IowKitSetWriteTimeout()' und 'IowKitSetTimeout()' benutze.

Ich habe versucht, die Ursachen einzugrenzen und weiter unten einen Testcase angefügt, mit dem genau dieses Problem nachgestellt werden kann (?).
Er beschränkt sich auf wenige IowKit* Funktionsaufrufe. Die Sinnfälligkeit sei dahingestellt, es sollte trotzdem ohne den o.g. Absturz funktionieren. In der Original-Anwendung sind noch diverse I2C-Routinen enthalten, die bis jetzt problemlos funktionieren.
Beim Beenden der Anwendung stürzt sie beim IowKitCloseDevice()-Aufruf ab ("XY.exe funktioniert nicht mehr ... -> Programm schließen").

IOW: IOW56, FW version 2.0.0.1
OS: Windows 10 Enterprise, Vers. 1803
Prozessor: Intel i7-2640 @ 2.80GHz

Anbei der Testcase (ANSI C). Wenn man einen der mit *) markierten Aufrufe auskommentiert, gibt es keine Probleme.
Vielleicht kann mir jemand weiterhelfen?
--
#include <stdio.h>
#include "iowkit.h"

IOWKIT_HANDLE ioHandle;
USHORT buffer[9];

int main (int argc, char* argv[]) {

ioHandle = IowKitOpenDevice();
if (ioHandle != NULL) {
printf("firmware revision: 0x%04X\n", IowKitGetRevision(ioHandle)); // *)
IowKitGetSerialNumber(ioHandle, buffer); // *)

// set write + read TO values to 1000ms
//-------------------------------------
IowKitSetWriteTimeout(ioHandle, 1000); // *)
IowKitSetTimeout(ioHandle, 1000); // *)

IowKitCloseDevice(ioHandle);
}
return 0;
}
Benutzeravatar
Christoph Jung
Beiträge: 586
Registriert: So Okt 08, 2006 3:43 pm
Wohnort: Germany / Berlin
Kontaktdaten:

Re: IOW56: Programm-Absturz beim Aufruf von 'IowKitCloseDevice()'

Beitragvon Christoph Jung » Do Aug 30, 2018 10:23 am

Hallo,

Ich habe den Code (mit einer kleinen Änderung beim 'buffer' WCHAR anstelle von USHORT) 1:1 kopiert und ausgeführt und er läuft ohne Probleme bei mir. Keine Fehler, keine Abstürze.
Mein System läuft ebenfalls auf Win10 Enterprise mit allen Updates.
Abteilung: Softwareentwicklung
Folge uns auf Twitter
Follow us on twitter
H.S.
Beiträge: 3
Registriert: Do Aug 30, 2018 9:13 am
Kontaktdaten:

Re: IOW56: Programm-Absturz beim Aufruf von 'IowKitCloseDevice()'

Beitragvon H.S. » Do Aug 30, 2018 11:02 am

Danke für die schnelle Antwort.
Welcher Compiler wurde benutzt?
Vielleicht liegt es ja daran...
Benutzeravatar
Christoph Jung
Beiträge: 586
Registriert: So Okt 08, 2006 3:43 pm
Wohnort: Germany / Berlin
Kontaktdaten:

Re: IOW56: Programm-Absturz beim Aufruf von 'IowKitCloseDevice()'

Beitragvon Christoph Jung » Do Aug 30, 2018 12:27 pm

Wir nutzen Visual Studio 2017. Aber ich wüsste nicht, warum es am Compiler liegen sollte.
Abteilung: Softwareentwicklung
Folge uns auf Twitter
Follow us on twitter
H.S.
Beiträge: 3
Registriert: Do Aug 30, 2018 9:13 am
Kontaktdaten:

Re: IOW56: Programm-Absturz beim Aufruf von 'IowKitCloseDevice()'

Beitragvon H.S. » Fr Aug 31, 2018 3:07 pm

Hallo,

"Kaum macht man es richtig - funktioniert's" :)
soll heißen: Ursache gefunden

Für den Fall, dass es andere auch interessiert:
Am Compiler lag es nicht. Ich habe kein Visual Studio, ich bin mehr oder weniger auf gcc/g++ (MinGW32) angewiesen.
Und da lag es an
  • fehlendem "include <windows.h>"
    • da hatte ich mir mit -U_WIN32 und der Verwendung von USHORT (s. Korrektur von C.Jung) beholfen
  • meinen bescheidenen Kenntnissen bzgl. Compiler-Aufruf und Einbinden der Import-Lib
Beides wird bei Visual Studio wahrscheinlich unter der Haube gehandelt, weshalb es da problemlos funktioniert (im o.g. Beispiel fehlt leider eine Behandlung für nicht vorhandenen IOW - wodurch es bei fehlendem IOW auch zu funktionieren scheint).

Folgender Compiler-Aufruf brachte nun den "Erfolg":
> gcc testcase.c -L. -liowkit -include windows.h -o testcase
Benutzeravatar
Christoph Jung
Beiträge: 586
Registriert: So Okt 08, 2006 3:43 pm
Wohnort: Germany / Berlin
Kontaktdaten:

Re: IOW56: Programm-Absturz beim Aufruf von 'IowKitCloseDevice()'

Beitragvon Christoph Jung » Fr Aug 31, 2018 3:20 pm

Ah ok, klar VS bindet gleich die Windows.h ein und über die Projekteinstellungen die lib-Datei.
Ich hatte den gcc bisher nur unter Linux eingesetzt und da haben wir ja eine passendes SDK.
Abteilung: Softwareentwicklung
Folge uns auf Twitter
Follow us on twitter

preparat alveo http://www.alveo-akuna.pl

Zurück zu „IO-Warrior Deutsch“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste