Hallo zusammen Ich bin daran, mir ein php Skript zu schreiben, das von einer externen Hardware im Netzwerk Daten abfragen sollte. Dazu muss ich ein Anforderungstelegramm schicken, doch das besteht aus Hexadezimalen Werten. z.B. 62:01:03:01:00:45:54:00 Was gäbe es für Möglichkeiten, diesen Befehl einigermassen sauber an fwrite() zu übergeben? Grüsse Alex
Hm, mit fsockopen() http://www.php.net/manual/de/function.fsockopen.php eine "Datei" (also Netzwerkverbindung) öffnen und mit fwrite() http://php.net/manual/de/function.fwrite.php die gewünsche Zeichenkette schreiben? Die Links enthalten bereits passable Codebeispiele, oder was fehlt Dir? Nebenbei bemerkt, es wäre schön wenn man hier im Forum vernünftiger verlinken könnte - wozu immer die komplette Adresse anzeigen, das braucht doch kein Mensch ;-)
Mir scheint, dem Threadstarter geht es eher darum, wie in PHP ein derartiger String erzeugt werden kann, um dann an fwrite übergeben zu werden. PHP kennt viele von C her bekannte Funktionen, so auch das ehrwürdige printf. http://www.selfphp.de/funktionsreferenz/string_funktionen/printf.php $a = 254; $b = 64; $c = 128; $text = printf("%02x:%02x:%02x", $a, $b, $c); ergibt fe:40:80
Danke für die bisherigen Antworten! Doch ich muss nicht einfach die Hexwerte als String aneinandergereit übergeben ("6201030100455400"), sondert der Wert dieser Hexzeichen, was als String etwas wie: "b....ET." ergeben würde... Doch diese 00, 01 und 03 kann man ja nicht einfach als String darstellen.
So, ich habe es jetzt mal mit: >$befehl = sprintf('%c%c%c%c%c%c%c%c', 98,1,3,1,0,69,84,0); >fwrite($fs, $befehl); >$ans = fread($fs, 11); >echo $ans; (Am Anfang natürlich noch der Verbindungsaufbau, welcher ohne Fehler geht) Nach langem warten bekomme ich eine leere Seite zurück... Liegt das noch an meinem Befehl oder sollte das jetzt eigentlich richtig funktionieren?
So, nochmal ich. Es hat jetzt funktioniert mit:
>sprintf('%c%c%c%c%c%c%c%c', 98,1,3,1,0,69,84,0);
. Ich hatte noch den falschen Port.
Danke nochmal für die Antworten und den Ansatz mit sprintf!
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.