FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: dominik am 08 Februar 2016, 20:11:54

Titel: BlockingCall Bug
Beitrag von: dominik am 08 Februar 2016, 20:11:54
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ß
Titel: Antw:BlockingCall Bug
Beitrag von: betateilchen am 08 Februar 2016, 20:25:39
wenn ich mich recht erinnere, verarbeitet mein GDS Modul durchaus größere Datenmengen als 4096 Zeichen nonblocking.
Titel: Antw:BlockingCall Bug
Beitrag von: Dietmar63 am 08 Februar 2016, 22:42:48
Wenn es nicht klappt, kannst du die Daten per Datei zurück geben, und als Parameter den Dateinamen, zufällig generiert.
Titel: Antw:BlockingCall Bug
Beitrag von: dominik am 10 Februar 2016, 19:31:23
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.
Titel: Antw:BlockingCall Bug
Beitrag von: justme1968 am 10 Februar 2016, 19:42:10
für die rückgabe wird telnet verwendet und deshalb muss die komplette rückgabe in einer zeile ohne newline erfolgen.

gruss
  andre
Titel: Antw:BlockingCall Bug
Beitrag von: dominik am 10 Februar 2016, 19:49:09
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.