如何检查打印机是否缺纸

T0m*_*aas 6 linux cups printer

如何仅使用命令(无 GUI)检查杯子打印机是否缺纸。

编辑:是否可以使用 python 检查这一点?

EDIT2:我用不同的打印机(EPSON TM-m30)尝试过。当我尝试无纸打印时,它卡在“处理中”。

printer-state = processing
printer-state-message = Rendering completed
printer-state-reasons = none

但我仍然无法获取有关纸张的信息。

我不确定它是否可以帮助你,我从一些读取打印机属性的Python代码创建了json文件: https: //pastebin.com/u97U9TnQ

更新

我们购买了另一台打印机(Star Micronics TUP542),打印机有缺纸传感器:近端纸张传感器,但我找不到任何如何使用该传感器的手册(传感器已插入打印机)。cups 有一些命令吗?或者我需要使用一些不同的工具?

我尝试使用 python 获取属性,这是结果(json): https: //pastebin.com/Z3Tiz5g9

顺便说一句,无论有纸还是无纸,打印机状态始终为。3当打印机缺纸时它应该改变吗?我认为打印机状态原因应该说明缺纸的情况,但总是有['none']

更新2

也许我应该尝试 ESC/POS 命令(此处)。我在第157页状态传输找到了一些代码。

n = 1, 49:发送纸张检测器状态

但我不确定n = 1, 49它是什么意思是字符串、十进制还是十六进制值?为什么1和49之间有逗号。

我尝试了这个Python代码:

command = [0x1D, 0x72, 1]
dest="/dev/usb/lp1"

with open(dest,"wb") as file:
    file.write(bytearray(command))

with open(dest,"rb") as file:
    data = file.read() # hangs
    print(data)
Run Code Online (Sandbox Code Playgroud)

但 read 函数挂起并且永远不会返回。

PS:我也尝试了不同的值([0x1D, 0x72, 49][0x1D, 0x72, 1, 49][0x1D, 0x72, 1, 0x49]),但没有成功。

顺便说一句,当我使用sudo cat /dev/usb/lp1它时,它会打印很多###。

当我在 cat 之后使用 hexdump 时,我看到这个重复序列:23 06 00 00 00 00 00 00 00

A. *_*Que 1

你看过lpstat吗?

例如,获取打印机列表:

~$ lpstat -s

device for Canon_MX920_series: dnssd://Canon%20MX920%20series._ipp._tcp.local/?uuid=00000000-0000-1000-8000-xxxxxxxxxxxx
Run Code Online (Sandbox Code Playgroud)

然后查询有问题的打印:

~$ lpstat -p "Canon_MX920_series"

printer Canon_MX920_series is idle.  enabled since Tue 18 Jan 2022 10:49:40 AM CST
scheduler is running
Run Code Online (Sandbox Code Playgroud)