WaitCommEvent -> falsche Werte
-
Hallo,
ich habe (mal wieder) ein Problem mit dem ComPort.
Dieses mal kann ich es glücklicherweise recht genau beschreiben ;).Also, ich habe eine Methode um die WaitCommEvent Funktion geschrieben:
int ComPort::waitEvent() { unsigned long value; WaitCommEvent(comHandle, &value, NULL); if(value != 0) { lastError = "CommEvent: " + valueToString(value); return value; } else { lastError = "waitEvent fehlgeschlagen - "; lastError += GetLastError(); return -1; } }Das Problem: ich bekomme total illusiorische Werte
in Bereichen jenseits der 100000!
Ich habe auch schon durch debuggt und schon der Wert den ich
von WaitCommEvent bekomme ist so "komisch".
Der Handle stimmt zu 100% denn wenn ich einfach lese in der Vermutung
dass etwas im Input Buffer liegt funktioniert es, schreiben geht auch.Gruß,
Max
-
[...] Sorry, war Blödsinn.
-
versuch das mal so
int ComPort::waitEvent() { unsigned long value; if (WaitCommEvent(comHandle, &value, NULL) && value) { lastError = "CommEvent: " + valueToString(value); return value; } else { lastError = "waitEvent fehlgeschlagen - "; lastError += GetLastError(); return -1; } }könnte leicht sein dass die funktion in der MSDN falsch dokumentiert ist, d.h. dass "value" im fehlerfall garnicht auf 0 gesetzt wird (entgegen der doku). bzw. u.u. auch nur bei bestimmten fehlern.
wäre nicht das erste mal dass die MSDN "lügt"
-
echt? wo lügt sie?
-
Nunja, ich kriege ja Werte, das ist nicht die Sache.
Die Werte sind nur viel zu hoch!
Laut MSDN ist der höchste Wert ja < 1000 wenn ich mich
recht entsinne.
Ich kriege Werte jenseits der 100.000 (!!!).
Die Werte ergeben auch keinen Sinn wenn ich sie den
"normalen" Windows error Codes zuordne.
-
hustbaer schrieb:
könnte leicht sein dass die funktion in der MSDN falsch dokumentiert ist, d.h. dass "value" im fehlerfall garnicht auf 0 gesetzt wird (entgegen der doku).
So ist es auch. Wenn WaitCommEvent fehlschlägt (also false zurückgibt), dann wird/wurde "value" nicht aktualisiert.
Würde es nicht reichen, "value" vor Aufruf auf 0 zu setzen ?
-
würde es nicht reichen den rückgabewert der funktion zu überprüfen

-
rofl. Irgendwie haste nicht begriffen, daß ein Aufruf zwei Fehlerwerte zurückgeben kann.
-
rofl der thread wird ja immer rofliger
-
lol

-
Also erstmal danke für die bisherigen Antworten.
Einen extra Gruß auch an loler und rofler!
Das war tatsächlich mein Fehler das ich value überprüft hab
und nicht den Rückgabewert von WaitCommEvent!Gruß,
Max
#edit3: GetLastError() gibt mir ein "W" zurück...
Mal sehen wie ich das interpretieren kann ;P
-
keine ursache

und solche dumpfbacken wie merker einfach ignorieren, die tragen selten was gehaltvolles bei und wollen nur ihren postcount erhöhen.
-
keine ursache

und solche dumpfbacken wie merker einfach ignorieren, die tragen selten was gehaltvolles bei und wollen nur ihren postcount erhöhen.
-
GetLastError() gibt mir ein "W" zurück...
ROFL