2012-04-22 22 views
5

Ho creato un'applicazione POS (Point of Sale) in PHP che può stampare direttamente su una stampante termica. Nella maggior parte dei casi eseguo l'applicazione su un server web locale utilizzando WAMP.La stampa PHP sulla stampante termica locale non funziona senza nome di rete

Parte del codice di stampa è:

$printer = "\\\\localhost\\TM-T88V"; 

// Open connection to the thermal printer 
$fp = fopen($printer, "w"); 
if (!$fp){ 
    die('no connection'); 
} 

$data = " PRINT THIS "; 

// Cut Paper 
$data .= "\x00\x1Bi\x00"; 

if (!fwrite($fp,$data)){ 
    die('writing failed'); 
} 

Questo codice funziona bene fino a quando il PC è collegato a una rete. Posso ottenere PHP per connettermi a una stampante condivisa (sullo stesso PC o su un PC in rete) usando fopen e "LOCALHOST" o "COMPUTER-NAME": fopen ("\\ localhost \ TM-T88V ", 'w');

Se disconnetto il pc dalla rete, PHP non può più connettersi a \\ localhost o \\ COMPUTER-NAME.

Ho provato cose come: fopen ('TM-T88V'), fopen ('\\. \ TM-T88V'), ma continuo a ricevere "[function.fopen]: impossibile aprire lo stream: No tale file o directory ... ".

Come connettersi a una stampante locale (condivisa) (preferibilmente per nome) senza una connessione di rete attiva?

+1

utilizzo di un adattatore di loopback Ho trovato un modo per aggirare il problema, in questo modo il computer ancora 'pensa' ha una connessione di rete in modo che possa risolvere \\ localhost. Ma penso che ci dovrebbe essere un modo per connettersi direttamente alla stampante. –

+0

Ciao Bauke. Puoi spiegare la soluzione a questo problema in modo più dettagliato. Siamo nella stessa situazione di un anno fa. Non siamo in grado di inviare una stampa alla stampante termica Zebra. Abbiamo provato anche il tuo codice ma non ha funzionato. –

+1

Ciao Bauke. Grazie mille per l'idea. Siamo stati in grado di risolvere questo finalmente alla nostra fine pure. L'unica cosa che dovevamo fare era condividere la stampante sulla rete e poi accedervi tramite la rete. La scheda Loopback non ha funzionato per noi. –

risposta

3

Hai provato fopen("PRN", "w")?

+0

Sì, ho. Mi dà anche un errore "impossibile aprire lo stream ...". Ho impostato la stampante termica come stampante predefinita, ma non aiuta neanche. –

+0

queste stampanti dispongono di un'interfaccia seriale, non (o appena) una parallela ... –

0

Ecco il frammento di codice che sto usando per il mio lavoro di stampa in PHP:

$handle = printer_open('Printer Name in windows here'); 

if($handle) { // Make sure the printer is present before sending the job 
// print job here 
} 
Problemi correlati