2016-04-27 8 views
0

Ich versuche, einen QR-Code mit meinem Epson TM-T88IV seriellen Drucker mit PHP zu drucken. Allerdings ist meine PHP-Datei auf einem Server installiert und ich kann sie erfolgreich aus einer HTML-Datei aufrufen. Ich benutze eine Bibliothek namens ESCPOS-PHP (https://github.com/mike42/escpos-php) und der Computer läuft Windows XP Professional. Hier ist mein PHP-Schnipsel (es gibt mehr in der Mitte, aber nicht für den Druckvorgang erforderlich):Escps-php mit seriellem Drucker

<?php 
require __DIR__. '/escpos-php-master/Escpos.php'; 
use Mike42\Escpos\Printer; 
use Mike42\Escpos\PrintConnectors\FilePrintConnector; 

[...] 

try { 
    $connector = new WindowsPrintConnector("EPSON TM-T88IV Receipt"); 
    $printer = new Escpos($connector); 
    $printer -> text("Hello World!\n"); 
    $printer -> cut(); 

    // Close printer 
    $printer -> close(); 
} catch(Exception $e) { 
    echo "Couldn't print to this printer: " . $e -> getMessage() . "\n"; 
} 
?> 

Scheint, wie ich gerade nicht an den Drucker anschließen. Ich habe auch versucht mit

$connector = new FilePrintConnector("/dev/ttyS0"); 
$printer = new Printer($connector); 

Welche sollte die Art und Weise mit seriellen Druckern sein (ich bin nicht sicher, was soll ich anstelle von „/ dev/ttsyS0“ setzen). Vielleicht sollte ich nicht versuchen, es über den Server auszulösen? Ich mache es, weil ich sein POS-System (Maitre D) nicht ändern kann und ich brauche eine einfache Möglichkeit, QR-Code auf Rechnungen zu drucken. Wenn Sie irgendwelche Arbeit kennen, würde jeder Rat geschätzt werden! Danke

+0

seit wann hat windows xp ein '/ dev/ttyS0'? Das ist ein Unix-Ism. –

+0

Ich nahm das nur aus den Informationen in der Github-Readme, ich weiß, ich muss etwas anderes setzen, aber ich weiß nicht, was genau .. –

Antwort

1

Autor von escpos-php hier.

Die escpos-php README schlägt vor, dass Sie zuerst versuchen sollten, Daten an den Drucker in der Befehlszeile zu senden, da Sie bestimmen können, wie Sie drucken möchten, bevor Sie versuchen, den Treiber zu verwenden.

Zum Beispiel, wenn Sie auf COM1 Ihren Drucker einrichten soll, können Sie eingeben versuchen:

echo "Hello world" > COM1 

Welche entspricht:

<?php 
$connector = new FilePrintConnector("COM1"); 
$printer = new Escpos($connector); 
$printer -> text("Hello World\n"); 

Die WindowsPrintConnector ist für Windows verbindet geteilt Drucker. This example enthält einige hilfreiche Befehle, um sicherzustellen, dass Sie drucken können, bevor Sie PHP öffnen. ZB

echo "Hello world" > foo.txt 
net use "\\computername\Receipt Printer" /user:Bob secret 
copy testfile "\\computername\Receipt Printer" 
del testfile 

Dies entspricht:

<?php 
$connector = new WindowsPrintConnector("smb://bob:[email protected]/Receipt Printer"); 
$printer = new Escpos($connector); 
$printer -> text("Hello World\n"); 

In jedem Fall zwei gotchas:

  • Nur diese verwenden, um mit Generic/Text nur Treiber. escpos-php gibt rohen ESC/POS aus, was jeden Treiber verwirren wird, der ein Dokument erwartet.
  • Dies ist Server-Seite. Stellen Sie sicher, dass PHP auf dem Computer ausgeführt wird, auf dem gedruckt wird, oder dass Sie mindestens im internen Netzwerk arbeiten, wenn Sie das Drucken im Netzwerk verwenden.
+0

Computer ist mein lokaler Hostname oder Live-Server-Host-Name? –

+0

@MuhammadUsman - der Computer, der den Drucker im LAN freigibt – mike42

+0

kann es ein USB-Drucker sein oder nicht? –

Verwandte Themen