Ich habe ein IO-Modul, welches per USB-Serial Daten im json-Format an Symcon unter Windows sendet. Dabei hatte ich schon länger das rätselhafte Phänomen, dass manchmal einzelne Zeichen der Datenübertragung fehlen.
Jetzt ist es mir neulich wie Schuppen von den Augen gefallen, mal zu gucken, wie viele Threads das Handlerskript der RegVar aufmacht… Antwort: sehr viele, mitunter wohl zu viele.
Das Skript macht erstmal nicht viel, es hängt die empfangenen Daten an den Puffer an und guckt mit strpos(), ob in dem String ein „}“ vorkommt, bevor es sonstige „rechenintensivere“ Stringoperationen durchführt und json_decode anwendet. Trotzdem „explodiert“ im Moment des Datenempfangs (wir reden hier von einem simplen Json-Objekt mit vielleicht 7 Int-/String-Properties) die Threadanzahl für das Skript für einen Sekundenbruchteil.
Das passiert wohl bei mehreren solchen IO-Boxen (Hardware bspw. Controllino), egal ob sie per Ehternet oder per USB angebunden sind.