2010-04-28 16 views
0

J'essaie de trouver un moyen d'obtenir le statut de papier d'une imprimante POS; Je pense que je voudrais utiliser GS a, GS r séquence, mais je ne peux pas comprendre comment retourner des informations de l'imprimante; Je suis sous Linux, où l'imprimante POS renvoie-t-elle des informations sur l'état?Comment obtenir le statut de POS Printer

+1

Pourriez-vous s'il vous plaît fournir plus de contexte pour votre question? –

Répondre

1

Je suis finalement résolu mon problème ... j'utilise PHP sur boîte de Linux, voici le code, l'espoir d'aider quelqu'un:

<?php 

$device="/dev/usb/lp0"; 
$printer=fopen($device, 'w'); 

//La sequenza di ESCAPE DLE EOT n consente 
//la trasmissione in realtime 
//dello status 
//n=1: printer status 
//n=2: printer offline status 
//n=3: error status 
//n=4: paper roll sensor status 

//Per n=4 i bits valorizzati sono: 
//BIT Off/On Dec Desc 
//0  Off  0 not used, fixed to Off 
//1  On  2 not used, fixed to On 
//2,3 Off  0 Paper adequate 
//2,3 On  12 Paper near end detected 
//4  On  16 Not used, fixed to On 
//5,6 Off  0 Paper present 
//5,6 Off  96 Paper roll end 
//7  Off  0 Not used, fixed to Off 


fwrite($printer,kbyte(16).kbyte(4).kbyte(4)); 
//fwrite($printer,kbyte(29).kbyte(73).kbyte(69)); 

fclose($printer); 
$r_printer=fopen($device, 'r'); 
$ret=fgets($r_printer); 
fclose($r_printer); 
$bit_val=ord($ret[0]); 

print "Retval=".$bit_val; 

if(($bit_val & 12) || ($bit_val & 96)) 
    print "******Out of paper******\n"; 
else 
    print "---Paper ok\n"; 

function kbyte($num) { 
    return pack('C', $num); 
} 
?>