Hauptmenü

BlockingCall Bug

Begonnen von dominik, 08 Februar 2016, 20:11:54

Vorheriges Thema - Nächstes Thema

dominik

Hallo,

ich möchte gerade aus einem BlockingCall ca. 10.000 Zeichen (quasi ein Objekt) zurück geben. Leider dürfte der BlockingCall auf 4096 Zeichen limitiert sein. Kann man die Blocking.pm Funktion nicht dahingehend erweitern, dass er weitere Zeichen einliest bis das Ende erreicht ist? Einen Hinweis zu einem Limit konnte ich nämlich auch nicht finden.

Gruß
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

betateilchen

wenn ich mich recht erinnere, verarbeitet mein GDS Modul durchaus größere Datenmengen als 4096 Zeichen nonblocking.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Dietmar63

Wenn es nicht klappt, kannst du die Daten per Datei zurück geben, und als Parameter den Dateinamen, zufällig generiert.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

dominik

Ich hab den Fehler identifiziert. Scheinbar dürfte BlockingCall mit \n Probleme haben. Eventuell auch mehrere \n hintereinander?

Hab es nicht im Detail weiter getestet, aber ein
$return =~ s{\n}{}g;
behebt das Problem vollkommen. Damit kann ich nun mehrere 1000 Zeichen übergeben.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

justme1968

für die rückgabe wird telnet verwendet und deshalb muss die komplette rückgabe in einer zeile ohne newline erfolgen.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

dominik

Ich sehe gerade, dass sogar im Wiki steht:
"Wenn man mehrere separate Werte zurückgeben möchte, kann man diese entweder mit einem Trennzeichen (z.B. Pipe) versehen, oder bei einem Text mit Zeilenumbrüchen alles mit Base64 oder Hex encoden."

Hatte ich leider trotz mehrfachen Lesens immer übersehen..sorry.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik