Fonzo
5. Februar 2018 um 13:42
1
Bei Zeile
$this->SendDataToParent(json_encode(Array("DataID" => "{C8792760-65CF-4C53-B5C7-A30FCC84FEFE}", "Buffer" => $packet))); // TX GUI
kommt die Meldung
Warning: Cannot find required field ClientIP
Was soll mir diese Meldung sagen bzw. wie behebe ich das Problem?
Dein Objekt für den Datenaustausch erwartet noch mehr als nur Buffer.
Er möchte auch eine ClientIP und bestimmt auch einen ClientPort als Ziel für seine Daten.
Schau Mal in der Doku von dieser GUID was unter Beschreibung steht
https://www.symcon.de/service/dokumentation/entwicklerbereich/sdk-tools/sdk-php/datenfluss/
Liefert, bezieht sich auf beide Richtungen.
Michael
Fonzo
5. Februar 2018 um 16:24
3
Ich wäre ja froh wenn ich etwas auf der von Dir verlinkten Seite finden würde, aber entweder steht da nix oder ich sehe den Wald vor lauter Bäumen nicht.
Wie muss denn dann die Zeile korrekt lauten? Der Parent ist ein UDP Socket ist hatte es auch mit {79827379-F36E-4ADA-8A95-5F8D1DC92FA9} versucht aber irgendwie sehe ich im Debug Fenster nichts, das sich das irgendwas am UDP Socket tut. Keine Ahnung wo da der Fehler liegt.
Bin unterwegs, habe dir Mal ein Bild gemacht
Michael
Fonzo
5. Februar 2018 um 16:35
5
Ja das hab ich gelesen, aber so ist das nichts sagend, da fehlt die Dokumention wenn man nicht raten will.
Soll das dann so aussehen?
$this->SendDataToParent(json_encode(Array("DataID" => "{C8792760-65CF-4C53-B5C7-A30FCC84FEFE}", "ClientIP" => "192.168.55.108", "ClientPort" => "54321", "Buffer" => $packet))); // TX GUI
Port ist eine Zahl keine String.
Schau dir doch einfach an was für ein Paket du empfängst.
Michael
Fonzo
5. Februar 2018 um 17:29
8
Ok habe ich geändert funktioniert aber trotzdem noch nicht.
Wie ist denn vorzugehen damit man was verschickt?
Wenn ich das mit USCK_SendText funktioniert es
$hello = '21310020ffffffffffffffffffffffffffffffffffffffffffffffffffffffff';
$helloPacket = hex2bin($hello);
USCK_SendText(38861 /*[UDP Socket]*/, $helloPacket);
Wird ordnungsgemäß über den UDP Socket verschickt und kommt auch ein Response.
Wenn ich dies nutzte
$HELLO_Message = '21310020ffffffffffffffffffffffffffffffffffffffffffffffffffffffff';
$helloPacket = hex2bin($HELLO_Message);
$this->SendDataToParent(json_encode(Array("DataID" => "{C8792760-65CF-4C53-B5C7-A30FCC84FEFE}", "ClientIP" => "192.168.55.108", "ClientPort" => 54321, "Buffer" => $helloPacket))); // TX GUI
Kommt als Fehler
Warning: JSON parse error in module.php on line X
Wie muss das jetzt richtig lauten damit das auch funktioniert? Wenn ich hexbin weg lasse, wird zwar was verschickt aber nicht die richtigen Daten.
Wenn ich einen normalen PHP Socket nutzte sende ich ja auch mit
$helloPacket = hex2bin($HELLO_Message);
socket_sendto($socket, $helloPacket, strlen($helloPacket), 0, $ip, 54321);
Warning: JSON parse error in module.php on line X
Sagt doch alles.
Dein String ist nicht UTF8 !
PHP: json_encode - Manual
Einfach den Buffer mit utf8encode vorher bearbeiten.
Diese Frage hatten wir gerade vor zwei Tagen
Wenn du OHNE ZielIP (ClientIP)) und OHNE ZielPort (ClientPort) senden willst, musst du eine andere GUID benutzen.
Michael
Edit: Okay war vor drei Tagen
https://www.symcon.de/forum/showthread.php?p=350080