2016-03-29 6 views
0

Ich versuche, von einem PHP-Skript auf den Thaermal-Drucker in Betreff mit ESC/P-Sprache zu drucken. Alles ist in Ordnung, wenn ich versuche, Text normal zu drucken, das Problem ist, dass ich nicht in der Lage bin, Schriftgröße oder allgemein Formatierungsoptionen einzustellen. Für die manuelle Beispiel Lesen fand ich, dass, wenn ich Schriftgröße festlegen möchten, muss ich diese Codes verwenden:Esc P Brother QL720NW

  • [ASCII] ESC X m nL nH
  • [Dezimal] 27 88 m nL nH
  • [Hexadezimal] 1B 58 m nL nH

Also habe ich geschickt Comands auf diese Weise:

fwrite ($fp, "\x1B \x40"); 
     fwrite ($fp, "\x1B \x58 \x00 \x30 \x80"); 
     fwrite ($fp, $stringToPrint);//"\x72 \x20 \x73 \x69 \x64 \x65"); 
     fwrite ($fp, "\x0C"); 

Aber es druckt einfach den Text und die Zahl, anstatt die Formatoptionen zu verstehen. Wo ich falsch liege ???

Antwort

2

Da ich nicht den gleichen Drucker habe, kann ich nicht kommentieren, ob dieser Befehl das tut, was Sie erwarten, aber es scheint, dass Sie Leerzeichen zwischen jedem Byte des Befehls enthalten, was nicht korrekt ist/P2.

Die Konvention in der reference scheint zu einem Hex-und Dezimal-Code für Bytes, die gesendet werden sollen, enthalten, während Abstand nur für die Lesbarkeit ist.

Ein Schnipsel, die den Standard für diese Befehle folgt würden BE-

<?php 

// Initialize printer 
$fp = fopen("/dev/usb/lp0", "wb+"); 
fwrite ($fp, "\x1B\x40"); // ESC @ 

// Select font by pitch and point 
$m = 0; // No change in pitch 
$nL = 48; // Assuming these point options are what you intend? 
$nH = 128; 
fwrite ($fp, "\x1B\x58" . chr($m) . chr($nL) . chr($nH)); // ESC X m nL nH 

// Print text 
$stringToPrint = "Hello\n"; 
fwrite ($fp, $stringToPrint); 

// Form feed 
fwrite ($fp, "\x0C"); // FF 
Verwandte Themen