Probleme beim mehrmaligen Aufruf von IowKitOpenDevice()

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
Camaris
Posts: 2
Joined: Thu Dec 07, 2006 2:02 pm

Probleme beim mehrmaligen Aufruf von IowKitOpenDevice()

Post by Camaris »

Hallo..
Ich habe einen IO-Warrior 40 V1.0.2.1R
Ich benutze die IO-Warrior Dynamic Library V1.5 for Windows
Programmiersprache: C++ mit Borland Builder 5
Ich habe die iowkit.dll mit dem Borland-eigenen Tool „implib.exe“ angepasst.

Das soll passieren:

Ein Timer soll alle 10 Sekunden die Funktion IOW_Aktualisierung() aufrufen.
In dieser Funktion wird IowKitOpenDevice() aufgerufen.
Wenn der Rückgabewert ungleich NULL ist, werden mehrmals die Funktionen
IowKitWrite(..) und
IowKitRead ausgeführt

Danach wird mit IowKitCloseDevice(ioHandle) das Device wieder geschlossen und die Funktion beendet.

Folgendes passiert:

Beim ersten Aufruf der Funktion IOW_Aktualisierung() funktioniert alles einwandfrei.
Beim zweiten Aufruf der Funktion gibt IowKitOpenDevice() allerdings ein NULL zurück und die Funktion wird mit der Fehlermeldung beendet.

Was mache ich falsch?...

Über Tipps würde ich mich sehr freuen.

mfg

Camaris


void __fastcall TParkraum::TimerIOWTimer(TObject *Sender)
{

IOW_Aktualisierung(); //Aufruf der Funktion durch Timer alle 10 Sekunden

}
----------------------------------------------------------------------


void IOW_Aktualisierung() //Kurzfassung
{
IOWKIT_HANDLE ioHandle;
IOWKIT40_IO_REPORT Report;
ULONG Status;

ioHandle = IowKitOpenDevice();

if (ioHandle != NULL)
{

Report.ReportID = 0;
Report.Bytes[3] = 0xFF;
Report.Bytes[2] = 0x00;
Report.Bytes[1] = 0xFF;
Report.Bytes[0] = 0x00;

Status = IowKitWrite(ioHandle, IOW_PIPE_IO_PINS,
(PCHAR)&Report, IOWKIT40_IO_REPORT_SIZE);

Status = IowKitRead(ioHandle, IOW_PIPE_IO_PINS,
(PCHAR)&Report, IOWKIT40_IO_REPORT_SIZE);

IowKitCloseDevice(ioHandle);
}
else “Fehlermeldung”

}
Admin
Site Admin
Posts: 50
Joined: Tue Nov 25, 2003 10:05 pm

Post by Admin »

Die 1.5 DLL hat einen Fehler, der das mehrmalige Aufrufen von IowKitOpen verhindert.
Camaris
Posts: 2
Joined: Thu Dec 07, 2006 2:02 pm

Post by Camaris »

Danke für die schnelle Antwort.
Mit 1.4 läuft es.
NiGGo
Posts: 12
Joined: Sat Dec 17, 2005 12:25 pm

Post by NiGGo »

Weiß jemand wo ich 1.4 herbekommen kann?
Leider finde ich nur noch 1.5 auf der Homepage.
Robert Marquardt
Posts: 543
Joined: Mon Dec 01, 2003 6:09 pm

Post by Robert Marquardt »

Die aktuelle Version der 1.5 auf der Homepage sollte eigentlich funktionieren. Bitte pruefen und wenn es nicht funktioniert bescheid sagen. Ich debugge das dann und behebe das Problem.

Abgesehen davon ist es denn wirklich notwendig IowKitOpenDevice()/IowKitCloseDevice() jedesmal aufzurufen? Das waere nur noetig falls man erwartet das der IOWarrior oefters abgesteckt wird. Fuer diesen Fall sollte man aber auch eine genauere Pruefung implementieren. Es koennte ja ein ganz anderer IOWarrior angesteckt werden. Also testen ob es ein IOWarrior 40 ist und moeglichst auch noch die Seriennummer pruefen.
Post Reply