Alexander (HH): Netzwerkdrucker über socket - KLAPPT :-)

Beitrag lesen

Moin Moin!

leider erwischte mich dabei, das ich mir programmieren sehr unkoordiniert beigebracht habe.
Mir fehlen einfach die Basics
Als Beispiel hab ich mir cut ausgesucht (läuft auch mit einem win-treiber problemlos, ist also aktiviert)
$zeile = "\x08566548"; //hex code
$zeile = "\x08\x56\x65\x48";
und andere varianten mit anderen codes funktionieren nicht.

Die beiden Zeilen sind deutlich unterschiedlich und liefern unterschiedliche Ergebnisse.

Tipp: Schreib mal einen Dreizeiler, der die beiden Varianten mit \r\n getrennt in eine Datei schreibt, und sieh Dir das Ergebnis an.

Verstehst Du, was \x in PHP-Strings bedeutet? Hast Du im PHP-Handbuch nachgelesen?

So, wie ich das Command Manual verstehe, wird Dein Kommando nicht schneiden. Auf Seite 138 steht explizit, dass nur geschnitten wird, wenn n=0. Du sendest nicht 0, sondern 72 (\x48) als letztes Byte. 48 wäre der dezimale(!) ASCII-Code des Zeichens "0", hexadezimal wäre das \x30. Das ist aber immer noch nicht 0.

irgendwie mach ich grundsätzlich was falsch.

Ja. Du liest zu wenig.

reines ASCII und \n\r\t etc. druckt er problemlos.
Kannst du mir bitte ein paar string-zeilen als Beispiel (php)vorgeben?

Nein. Das kannst Du selbst.

Schreib Dein Programm so um, dass es erst einmal den Druckjob in eine Datei schreibt statt direkt zum Drucker. Schau Dir den Dateiinhalt an und vergleiche das mit dem, was Du dem Drucker wirklich schicken wolltest.

Eine ASCII-Tabelle ist dafür extrem hilfreich, die Tabelle  aus dem Wikipedia-Artikel ASCII reicht für's erste. Ein Viewer oder Editor, der Dateien hexadezimal anzeigen kann, macht die Sache einfacher.

Seite 17 im User's Manual (nicht im Command Manual) kennst Du? Wenn nicht, lies sie, und versuch zu begreifen, was der Hersteller Dir da anbietet.

Alexander

--
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".