Loetkolben Geschrieben May 8, 2012 at 19:21 Geschrieben May 8, 2012 at 19:21 Hallo zusammen, ich lese mit dem "temperatur/example_simple.py" Script alle 3 Sekunden* das Bricklet via Netzwerk aus. Ab und zu, vielleicht alle 5 Minuten, aber auch mal 2 mal pro Minute, kommt diese Fehlermeldung: "Message with unknown Stack ID, discarded: (2, 8 )" - Zwischen 8 und ) kein Leerzeichen Wieso und warum? Was bedeutet das und vor allen wie kann man das vermeiden? Der Loetkolben * while true ; do ./example_simple.py ; sleep 3 ; done 20.5 20.5 20.56 20.5 20.56 Message with unknown Stack ID, discarded: (2, 20.56 20.56 20.5 20.5 20.5 Zitieren
M4ST3R Geschrieben May 8, 2012 at 19:31 Geschrieben May 8, 2012 at 19:31 Hab ich bei Java auch. Allerdings andere Nummer! Zitieren
AuronX Geschrieben May 8, 2012 at 19:39 Geschrieben May 8, 2012 at 19:39 Das passiert dann wenn eine Nachricht von einem Gerät kommt, dass in euren Bindings nicht bekannt ist. Gibt es Bricks/Bricklets die zwar angeschlossen, aber nicht geadded wurden? (Master-Brick villt?) Zitieren
Loetkolben Geschrieben May 8, 2012 at 19:42 Autor Geschrieben May 8, 2012 at 19:42 Ja, ist ein Masterbrick mit 3 verschiedenen Bricklets. Verstehe aber (noch) nicht. Habe nur das Samplescript angepasst (Meine UID und Textanpassungen) und dann laufen lassen? Wo sollte man was "adden" muessen? Der Loetkolben Zitieren
photron Geschrieben May 8, 2012 at 19:48 Geschrieben May 8, 2012 at 19:48 Die Meldung bedeutet, dass die IPConnection eine Nachricht mit Function ID 8 (das ist der Temperature.CALLBACK_TEMPERATURE) vom Stackteilnehmer 2 (das wird wohl das Temperature Bricklet sein) erhalten hat. Aber es kennt keinen Stackteilnehmer 2, daher "unknown Stack ID". Hast du den Brick Viewer auf und den Tab für das Temperature Bricklet aktiv? Dann hat der Brick Viewer den Temperature.CALLBACK_TEMPERATURE Callback für das Bricklet aktiviert und es sendet Callbacks. Wenn du nun dein Script startest dann gibt es ein kleines Zeitfenster zwischen der Erzeugung der IPConnection und dem add_device Aufruf. In dieser Zeit empfängt die IPConnection schon eingehende Nachrichten kennt aber das Temperature Bricklet noch nicht. Du kannst diese Meldung vermeiden indem du brickv oder wer auch immer den Temperature.CALLBACK_TEMPERATURE Callback aktiviert hat schliesst. Oder du kannst die Schleife in das Python Script einbauen, so dass du nicht immer die IPConnection neu erstellst. Aber eigentlich könnte ich diese Meldung auch aus allen Bindings entfernen. Callbacks/Antworten von unbekannten Devices werden eh ignoriert. Zitieren
photron Geschrieben May 8, 2012 at 19:52 Geschrieben May 8, 2012 at 19:52 Ja, ist ein Masterbrick mit 3 verschiedenen Bricklets. Verstehe aber (noch) nicht. Habe nur das Samplescript angepasst (Meine UID und Textanpassungen) und dann laufen lassen? Wo sollte man was "adden" muessen? Du musst da nichts "adden", UID ändern und Beispiel muss funktionieren, tut es ja auch Die Meldung deutet nicht auf ein Problem oder Fehler hin, sondern nur das die IPConnection etwas unerwartetes empfangen hat und es ignoriert hat. Zitieren
M4ST3R Geschrieben May 8, 2012 at 19:53 Geschrieben May 8, 2012 at 19:53 Naja, wenn es eh ignoriert wird braucht man die Fehlermeldung glaub ich nicht oder? Andererseits kann sie auch drin bleiben und man ignoriert sie. Könnte man in die Dokumentation mit rein schreiben Zitieren
photron Geschrieben May 8, 2012 at 20:01 Geschrieben May 8, 2012 at 20:01 Ich werde die Meldung entfernen, den sie hat keinen Mehrwert und stiftet nur Verwirrung wie dieser Thread beweist Außerdem werden Callbacks/Antworten mit unbekannter Function ID eh schon stillschweigend ignoriert. Zitieren
Loetkolben Geschrieben May 8, 2012 at 20:07 Autor Geschrieben May 8, 2012 at 20:07 Ja, so sehe ich das auch, denn wenn ich die Messwerte empfange/ablege und dann weiterverarbeite, erwarte ich an dieser Stelle einen Zahl mit 2 Vorkomma und max. 2 Nachkommastellen. Fehlerhandling finde ich natuerlich gut, aber dass sollte ueber eine eigene Variable/Funktion abgeprueft werden koennen, also nicht "InlineDataErrorHandling" BTW: Was kommt eigentlich bei genau 20 Grad fuer ein Anzeigewert? "20", "20." oder "20.0"? Warum kann es eigentlich nicht immer 4 stellig sein, also auch "20,50"? Danke Der Loetkolben Zitieren
photron Geschrieben May 8, 2012 at 20:28 Geschrieben May 8, 2012 at 20:28 Loetkolben, wie gesagt ist das kein Fehler und die Meldung daher keine Fehlermeldung Zu der 20 Frage: $ python -c 'print str(20.00)' 20.0 Wenn du da ein spezielles Ausgabeformat brauchst dann kannst du einfach das Python Script anpassen. Da du eh schon aus print('Temperature: ' + str(temperature) + ' °C') den Text entfernt hast kannst du das Beispiel ja auch noch weiter anpassen. Immer 2 Nachkommastellen bekommst du so: print('%.2f' % temperature) Zitieren
Loetkolben Geschrieben May 8, 2012 at 21:01 Autor Geschrieben May 8, 2012 at 21:01 das kein Fehler und die Meldung daher keine Fehlermeldung Hmmm, aber die Meldung kommt schon arg unerwartet an dieser Stelle, insbesondere wenn man die Zahlen weiterverarbeiten will. Danke auch fuer die schnelle Python Outputformatierung. BTW, fuer die Scriptverarbeitung ist folgendes noch wichtig: Output mit "CR" am Ende. print(str(temperature)) Output ohne "CR" am Ende. import sys sys.stdout.write(str(temperature)) Der Loetkolben 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.