Jump to content

NetIO - TypeError: Type str doesn't support the buffer API


Recommended Posts

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?

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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!

Link to comment
Share on other sites

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?

Link to comment
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.

 Share

×
×
  • Create New...