matthiku Posted November 18, 2013 at 09:12 PM Share Posted November 18, 2013 at 09:12 PM Hallo, bin gerade dabei NetIO mit TF auszuprobieren. Die Shell-Bindings laufen unter Windows 7. Der Computer mit dem BrickD ist nur ueber ein WAN verbunden, daher muss ich z.B. beim 'enumerate'-Befehl den Parameter '--duration 1000' anhaengen, damit die Antworten der Bricks und Bricklets ankommen, also: python tinkerforge --host <ip-addr> enumerate --duration 1000 Wenn ich aber mit den 'listen'-Befehl absetzen will, weiss ich nicht, wohin ich den duration-Parameter stellen soll, er wird ueberall abgewiesen. Wenn ich den listen-Befehl wie folgt absetze: python tinkerforge --host 25.120.190.207 listen --enable-execute ... bekomme nach dem Starten der NetIO-App folgenden Fehler im Fenster mit den Shell-Bindings immer wieder angezeigt: TypeError: Type str doesn't support the buffer API Die gesamte Fehlermeldung sieht wie folgt aus: 192.168.10.192 connected Exception in thread Client-Processor: Traceback (most recent call last): File "C:\Python33\lib\threading.py", line 639, in _bootstrap_inner self.run() File "C:\Python33\lib\threading.py", line 596, in run self._target(*self._args, **self._kwargs) File "tinkerforge", line 8469, in client_loop i = pending_data.find(group_terminator) TypeError: Type str doesn't support the buffer API Any ideas? Quote Link to comment Share on other sites More sharing options...
photron Posted November 19, 2013 at 09:52 AM Share Posted November 19, 2013 at 09:52 AM Wenn ich aber mit den 'listen'-Befehl absetzen will, weiss ich nicht, wohin ich den duration-Parameter stellen soll, er wird ueberall abgewiesen. listen hat kein duration-Parameter. listen lauscht auf eingehende Anfragen bis du das Skript abbrichst. Wenn ich den listen-Befehl wie folgt absetze: python tinkerforge --host 25.120.190.207 listen --enable-execute ... bekomme nach dem Starten der NetIO-App folgenden Fehler im Fenster mit den Shell-Bindings immer wieder angezeigt: TypeError: Type str doesn't support the buffer API Du verwendest Python3. Das String-Handling zwischen Python2 und Python3 unterscheidet sich deutlich. Ich habe wohl vergessen das String-Handling für den listen Befehl unter Python3 zu testen Angehängt eine verbesserte Version zum Testen.tinkerforge Quote Link to comment Share on other sites More sharing options...
matthiku Posted November 19, 2013 at 03:14 PM Author Share Posted November 19, 2013 at 03:14 PM Super, vielen Dank! Werde ich heute abend gleich testen! listen hat kein duration-Parameter. listen lauscht auf eingehende Anfragen bis du das Skript abbrichst. Das stimmt, aber der duration-Parameter wird ja fuer die Kommunikation mit dem Brick-Daemon benoetigt, nicht fuer die Kommunikation mit NetIO. Quote Link to comment Share on other sites More sharing options...
photron Posted November 19, 2013 at 04:06 PM Share Posted November 19, 2013 at 04:06 PM listen hat kein duration-Parameter. listen lauscht auf eingehende Anfragen bis du das Skript abbrichst. Das stimmt, aber der duration-Parameter wird ja fuer die Kommunikation mit dem Brick-Daemon benoetigt, nicht fuer die Kommunikation mit NetIO. Ich bin mir nicht sicher, ob ich richtig verstehe wie du das meinst. Das --duration Parameter gibt an wie lange eine enumerate oder dispatch Befehl eingehende Callbacks von Bricks und Bricklets verarbeitet. Bei enumerate ist der Standardwert 250ms und bei dispatch ist es -1 (unbegrenzt). python tinkerforge --host <ip-addr> enumerate --duration 1000 Dieser Befehl fragt eine Enumerate an und verarbeitet dann 1s lang eingehenden Enumerate Callbacks. python tinkerforge --host <ip-addr> dispatch --duration 5000 temperature-bricklet XYZ temperature Dieser Befehl verarbeitet 5s lang eingehenden temperature Callbacks vom Temperature Bricklet mit UID XYZ. Wenn du die duration für einen enumerate oder dispatch Befehl, den du von NetIO sendest, ändern willst dann musst du das --duration Parameter in diesem Befehl angeben. Das hat nichts mit dem listen Befehl zu tun. Quote Link to comment Share on other sites More sharing options...
matthiku Posted November 20, 2013 at 02:07 PM Author Share Posted November 20, 2013 at 02:07 PM Jetzt ist alles klar! Der schwarze Peter liegt sozusagen dann bei der NetIO-Konfiguration. Der listen Befehl baut ja "nur" einen Proxy auf zwischen BrickD und NetIO ... Ich hatte mir halt vorgestellt, dass der listen Befehl den duration parameter dann immer anhaengt. Nochmals danke fuer die Aufklaerung! Quote Link to comment Share on other sites More sharing options...
matthiku Posted November 21, 2013 at 07:56 PM Author Share Posted November 21, 2013 at 07:56 PM Also der Fehler tritt nicht mehr auf. Aber ich bekomme noch keine Daten in meine NetIO demo app. Muss noch etwas rumprobieren. Mit Wireshark sehe ich, dass der korrekte 'get' Befehl vom Smartphone ankommt. Aber ich sehe keine Rueckantwort oder uebersehe sie. Gibt es eigentlich einen debug modus fuer den listen Befehl? Quote Link to comment Share on other sites More sharing options...
photron Posted November 22, 2013 at 09:40 AM Share Posted November 22, 2013 at 09:40 AM Der listen Befehl gibt standardmäßig Daten auf die Konsole aus, die empfangen und versendet werden. Quote Link to comment Share on other sites More sharing options...
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.