akafpv Geschrieben January 7, 2016 at 19:41 Geschrieben January 7, 2016 at 19:41 Ich habe eine einfache Java Applikation geschrieben, mit der ich die Höhe aus meinem GPS Bricklet auslesen möchte. Dies funktioniert soweit auch sehr gut, jedoch immer nach der gleichen Anzahl Messungen (231 Messungen), unterbricht die Verbindung und ich erhalte folgende Exception: com.tinkerforge.TimeoutException: Did not receive response in time for function ID 3 Die Bricks sind per USB Kabel an meinem Computer angeschlossen, alle anderen Bricklets funktionieren einwandfrei mit der Software. Habe auch schon den Reset versucht auf dem GPS Bricklet sowie dem Masterbrick. Woran könnte das liegen? Brauche sehr dringend Hilfe!! Zitieren
reinweb Geschrieben January 26, 2016 at 10:44 Geschrieben January 26, 2016 at 10:44 ich habe dasselbe Phänomen in unterschiedlichsten Kombinationen (Anbindung USB, PoE, WLAN, unterschiedliche Bricklets, Bricklet am Master oder an anderen Bricks...) Verwendet werden die PHP Bindings. Die Erhöhung des IPConnection::setTimeout(float $seconds) hat offenbar keinen Effekt. Es ist echt ärgerlich, weil es relativ häufig auftritt. Oft bringt echt nur ein PowerOff des Stacks etwas. Zitieren
reinweb Geschrieben January 29, 2016 at 09:05 Geschrieben January 29, 2016 at 09:05 Vielleicht habe ich ein mögliche Ursache gefunden. In den PHP Bindings von IpConnection Device->sendrequest steht: if ($this->receivedResponse == NULL) { throw new TimeoutException("Did not receive response in time for function ID $functionID"); } ich habe den Vergleichsoperator auf === ausgebessert - weil sonst auch ein Ergebnis von "0" als "NULL" interpretiert wird (und vor allem das Ende des Timeouts nicht abgewartet wird bis zur obige Fehlermeldung!) Vielleicht kann man einer der Experten meine Änderung auf Sinnhaftigkeit prüfen. Danke :-) Seither läuft es weeesentlich stabiler Zitieren
photron Geschrieben February 4, 2016 at 17:16 Geschrieben February 4, 2016 at 17:16 reinweb, receivedResponse ist entweder NULL oder ein Array, es ist niemals 0, die Änderung zu === ist unnötig schadet aber auch nicht. Das ist aber PHP spezifisch und hat mit dem eigentlichen Problem dieses Threads nichts zu tun. Zitieren
reinweb Geschrieben February 6, 2016 at 22:03 Geschrieben February 6, 2016 at 22:03 ja, ist PHP spezifisch - das stimmt. Tatsache ist, dass der Fehler "did not response in time" geworfen wird, bevor der Timeout abgelaufen ist. Darum glaube ich nach wie vor, dass ein Resultat zurückkommt, dieses aber falsch interpretiert wird (eventuell weil leeres Array) $o = []; if ($o == null) { // Ergebnis ist TRUE }; if (empty($o)) { // Ergebnis ist TRUE }; Zitieren
photron Geschrieben February 8, 2016 at 09:41 Geschrieben February 8, 2016 at 09:41 Kann ich nicht nachvollziehen. Ich nehme z.B. das Accelerometer Simple Example und führe es aus mit einer unbekannten UID, um einen Timeout beim Aufruf des Getters zu provozieren. Der Timeout passiert nach 2,5 Sekunden, genau wie erwartet. Wie sieht dein PHP Script aus, bei dem der Timeout zu früh ausgelöst wird? Im Code wird receivedResponse entweder auf NULL oder auf ein Array mit 2 Elementen gesetzt, niemals ein leeres Array. Zitieren
reinweb Geschrieben February 8, 2016 at 12:46 Geschrieben February 8, 2016 at 12:46 hallo, leider kann man es eben nicht nachvollziehen. Beispiel:: Wenn ich die Funktion BrickletSegmentDisplay4x7::getSegments() jede Sekunde aufrufe (z.b. um den Doppelpunkt im Sekundentakt zu togglen), dann geht das oft viele Stunden ohne Probleme, aber irgendwann kommt dieser lästige Fehler "did not respond in time" (aber nicht erst nach dem Timeout). Ich werde mal einen Versuchsaufbau machen und maximales Debugging einbauen, dann kann ich genaue Telemetriedaten liefern... Zitieren
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.