IOWarrior56 Problem mit IowKitRead Funktion

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
Neo336
Posts: 6
Joined: Wed Mar 23, 2011 4:24 pm

IOWarrior56 Problem mit IowKitRead Funktion

Post by Neo336 »

Hallo zusammen

Ich habe ein Problem mit meinem IOWarrior56.

Damit ich die Daten vom IOWarrior lesen kann habe ich einen Thread erzeugt der die ganze die Daten das IOWarrios einliest.

Sobald ich aber die Funktion IowKitRead() ausführe setzt er mir alle Membervariabeln des Threads auf 0.

Compiler: Visual Stuidio 6.0
Sprache: C++ / MFC

Code: Select all

int CCommunicator::Run() {
    m_bRun = true;  // bool Variable  Solange m_bRun true ist wird der Thread ausgeführt  wenn sie 
                          //false gesetzt wird beendet sich der Thread
    while(m_bRun) {
        ULONG res;
        m_ioHanlde = IowKitOpenDevice();
        m_report.ReportID=0xFF;
        IowKitWrite(m_ioHandle, IOW_PIPE_SPECIAL_MODE, (PCHAR)&m_report, IOWKIT56_SPECIAL_REPORT_SIZE);
        res = IowKitRead(m_ioHandle, IOW_PIPE_SPECIAL_MODE, (PCHAR)&m_Newreport, IOWKIT56_SPECIAL_REPORT_SIZE);
        if(res == 0) {
            return 0; // Keine Verbindung
        }
        IowKitCloseDevice(m_ioHandle);
    }
}
Sobald nun die Funktion IowKitRead ausgeführt wird, wird die Membervariable m_bRun auf false gesetzt wodurch der Thread Beendet wird und die Daten nicht mehr neu gelesen.

Hat irgendjemand eine ahnung wo hier der Fehler sein könnte?

Freundliche grüsse
Filipe Duss
User avatar
Christoph Jung
Posts: 670
Joined: Sun Oct 08, 2006 3:43 pm
Location: Germany / Berlin
Contact:

Re: IOWarrior56 Problem mit IowKitRead Funktion

Post by Christoph Jung »

Naja ich würde IowKitOpenDevice() und IowKitCloseDevice() ausßerhalb der while schleife aufrufen. Aber sonst siehts eigentlich gut aus.
Evtl. macht das Return = 0 probleme...
Abteilung: Softwareentwicklung
Folge uns auf Twitter
Follow us on twitter
Neo336
Posts: 6
Joined: Wed Mar 23, 2011 4:24 pm

Re: IOWarrior56 Problem mit IowKitRead Funktion

Post by Neo336 »

oke das habe ich agepasst.

aber warum setzt die IowKitRead funktion eine private Membervariable auf 0??
im StepbyStep modus kann ich sehen dass wenn die Funktion aufgerufen wird m_bRun auf 0 gesetzt wird
User avatar
Christoph Jung
Posts: 670
Joined: Sun Oct 08, 2006 3:43 pm
Location: Germany / Berlin
Contact:

Re: IOWarrior56 Problem mit IowKitRead Funktion

Post by Christoph Jung »

Ich kann leider nicht sagen, warum die Variable auf 0 gesetzt wird. Ich hatte diesen Effekt bisher noch nie gahabt, ob nun in einem Thread oder ohne.
Aber wenn Sie mir das Projekt per Mail ( jung(at)codemercs.com ) zusenden, kann ich mir das Ganze morgen mal genauer anschauen.
Abteilung: Softwareentwicklung
Folge uns auf Twitter
Follow us on twitter
Neo336
Posts: 6
Joined: Wed Mar 23, 2011 4:24 pm

Re: IOWarrior56 Problem mit IowKitRead Funktion

Post by Neo336 »

oke mir ist jetzt noch eine idee gekommen ich versuche mal die read funktion in eine globale funktion zu verpacken also

IOWKIT56_IO_REPORT read(IOWKIT_HANDLE iohandle) {
IOWKIT56_IO_REPORT report;
IowKitRead(ioHandle, IOW_PIPE_SPECIAL_MODE, (PCHAR)&report, IOWKIT56_SPECIAL_REPORT_SIZE);
return report;
}

vieleicht bringt es etwas wenn ich das ganze von der klasse separiere

ich melde mich später nochmal ob es funktioniert hat
Post Reply