如何从 POS 打印机获取状态

Posted

技术标签:

【中文标题】如何从 POS 打印机获取状态【英文标题】:How to get status from POS Printer 【发布时间】:2010-04-28 17:09:53 【问题描述】:

我正在尝试找到一种从 POS 打印机获取纸张状态的方法;我想我会使用 GS a, GS r 序列,但我不明白如何从打印机返回信息;我在Linux下,POS打印机在哪里返回状态信息?

【问题讨论】:

能否为您的问题提供更多背景信息? 【参考方案1】:

我终于解决了我的问题......我在linux机器上使用php,这是代码,希望对任何人有所帮助:

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

?>

【讨论】:

以上是关于如何从 POS 打印机获取状态的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Flutter 中使用带有打印机名称的以太网 POS 打印机打印收据?

如何在蓝牙 POS 打印机中打印右对齐的文本?

如何在 Linux 中向热敏打印机发送 ESC/POS 命令

在 android 上如何使用支持 ESC/POS 命令集的 USB 打印机?

使用 Flutter 打印到 ESC/POS 时如何防止套接字超时错误

如何定义 ESC/POS 中参数的长度?