socket e connessione a printer server

Ciao,

Dovrei stampare dei barcode su una stampante.

Fino ad oggi generavo dei barcode in pdf e stampavo con una laser su dei fogli di etichette in formato A4 con grande spreco di etichette. Sto provando una stampante zebra per etichette. I tecnici della zebra mi hannod etto che per stampare basta aprire un socket e scrivere sul socket in questione la stringa correttamente formattata.

Ora il problema credo risieda nel printer server, che  siccome ha 3 porte parallele p1 p2 e p3, non so come scrivere la sintassi.

<?php
$fp = fsockopen ("192.168.1.144/P1", 515, $errno, $errstr, 30);
?>

In questo modo da un errore di connessione, se elimino il P1 avviene la connessione ma con FPUTS non accade nulla ... chiaramente.

Idee o suggerimenti ?

inviato 11 anni fa
Lokki
X 0 X

ma questa stampante ha una connessione ethernet? è collegata alla rete? Non credo servano le porte parallele per questo tipo di comunicazione.

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

La stampante ha un parallela e una seriale.

La parallela la ho collegata a una delle parallele del printer server.

 ???

risposto 11 anni fa
Lokki
X 0 X

PHP è su Windows?

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

linux fedora core 4

risposto 11 anni fa
Lokki
X 0 X

Ciao :bye:

Hai risolto il tuo problema? Visto che ci sei mi puoi spiegare a grandi linea come funziona questo socket? devi mandargli una stringa EPL2?

Grazie!

risposto 10 anni fa
Marco Dario
X 0 X

Alla fine ho usato un altro sistema, tramite shell_exec ho eseguito il comando di stampa in questo modo

shell_exec('sudo lp /tmp/stampa.zpl');

dove stampa.zpl era un file di testo in linguaggio zpl per stampanti zebra

Per far funzionare il tutto ho dovuto configurare la stampante come stampante ascii sul server e indirizzarla sul printer server.

Funziona benissimo e ho il vantaggio di poter gestire la coda di stampa in modo più pulito che con il socket.

La tua domanda è un pò generica ...

risposto 10 anni fa
Lokki
X 0 X

Ecco..

La mia domanda era:

Come posso stampare un file jpeg (che non è altro che il codice a barre) mandando il comando alla stampante zebra usando il liguaggio che mi hai appena detto?

Praticamente inserendo dei dati in una pagina mi crea un'altra pagina con il S/N del prodotto i dati che ho inserito prima e il jpeg del serial number.

Come faccio a farlo stampare corretamente sulla stampante visto che la stampante non ha il driver per linux?

grazie!!

Marco

risposto 10 anni fa
Marco Dario
X 0 X
<?php
$string='^XA
         ^PW831^LH0,0
         ^AEN,28,15
         ^FO10,10
         ^FB650,3
         ^FD'.$descrizione.'^FS
         ^FO10,85
         ^BY3,2.0
         ^B3N,N,90,Y
         ^FD'.$codice.'^FS
         ^XZ
         ';      
         $handle = fopen("/tmp/stampa.zpl", "a+");
         fwrite($handle, $string);
         $str=shell_exec('sudo lp /tmp/stampa.zpl');
         $str=shell_exec('sudo rm /tmp/stampa.zpl');
?>

Questo è lo script che uso, stampa un etichetta 12x4 con la descrizione il codice a barre relativo a $codice e il codice sotto il codice a barre.

Fai riferimento al manuale zpl per interpretare la stringa zpl.

$descrizione e $codice sono la descrizione articolo e codice dello stesso.

Devi configurare la stampante zebra con cups come generica stampante di testo.

Il codice a barre generato come immagine non ha senso conviene farlo generare alla stampante con lo zpl.

Se invece devi inserire un logo allora è un'altra cosa ma decisamente più complesso.

Ti consiglio di reperire qualche tool per creare in modo grafico l'etichetta e ottenere il codice zpl corrispondente tipo bar-one http://www.zebra.com/id/zebra/na/en/index/products/software/label_design_software/bar_one_5_1_mysap.html

Ciao  :bye:

risposto 10 anni fa
Lokki
X 0 X

Molto molto chiaro!  O0

Grazie mille!!!  ^-^

risposto 10 anni fa
Marco Dario
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda