Как получить статус с POS принтера - PullRequest
1 голос
/ 28 апреля 2010

Я пытаюсь найти способ получить статус бумаги с POS-принтера; Я думаю, что я использовал бы последовательность GS a, GS r, но я не могу понять, как вернуть информацию с принтера; Я нахожусь под Linux, где принтер POS возвращает информацию о статусе?

1 Ответ

1 голос
/ 12 мая 2010

Я наконец-то решил свою проблему ... Я использую PHP на Linux, вот код, надеюсь помочь кому-нибудь:

<?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);
}
?>
...