gelese Bytes beim asynchronen Lesen vom COM



  • Hallo,

    habe etwas Probleme die Anzahl der gelesenen Bytes einer asynchronen Leseopertion vom COM Port zu erhalten. Im Moment lese ich mit ReadFile und prüfe mit GetOverlappedResult, ob die Opertion abgeschlossen ist. Diese Funktion hat ja auch einen Parameter der mir eigentlich die Anzahl der gelesenen Bytes zurückliefern sollte. Ich bekomme jedoch immer nur 0 zurück. Achso, strlen nutzt nichts, da der Inhalt auch char(0) enthalten kann.

    Nun steht in der MSDN auch (habe Win98):

    Windows 95/98/Me: This function works only on communications devices or on files opened by using the DeviceIoControl function.

    Scheint im Prinzip trotzdem zu funktionieren, nur eben das oben genannte Problem. Aber wie benutze ich nun DeviceIoControl um vom COM 1 Port zu lesen? Was muss ich als DWORD dwIoControlCode angeben? Finde da nichts sinnvolles in der Liste...

    Oder hat jemand eine andere Idee, woran es liegen könnte? Danke schonmal!



  • GetOverlappedResult würde ich gar nicht benutzen. Du solltest zunächst nachschauen, wieviele Bytes im Buffer sind (ClearCommError) und danach nicht mehr Bytes als vorhanden lesen. Du kannst dann mit WaitForSingleObject warten, bis die Operation abgeschlossen ist.



  • Wieso? Was ist der Vorteil?



  • Original erstellt von Loggy:
    Wieso? Was ist der Vorteil?

    Du weißt dann, wieviele Bytes gelesen werden/gelesen wurden. Das wars, was Du wolltest, oder?



  • Ja, sicher, aber das wird doch sorum auch gehen müssen oder nicht?

    Ich meine, ich müsste die komplette Struktur der Lib ändern, wäre schon etwas blöd. Es muss doch möglich sein, bei dieser Leseoperation an die Anzahl der tatsächlich gelesenen Bytes zu kommen...

    [ Dieser Beitrag wurde am 05.02.2003 um 20:14 Uhr von Loggy editiert. ]


Anmelden zum Antworten