Jump to content
akafpv

Verbindung zu GPS Bricklet stürzt immer ab

Recommended Posts

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!!

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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 };

 

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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...

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...