printing - 如何以编程方式访问打印机的墨水量?

标签 printing protocols snmp

好的,这是一个特定于 Windows 的问题。

我需要能够访问连接到计算机的打印机的墨水量。可能是直接连接,也可能是网络连接。

我认识到每台打印机(或至少是打印机公司)可能会有所不同,但我在哪里可以找到它们如何向 PC 显示墨水量的信息。另外,阅读这些信息的最佳语言是什么?

最佳答案

好的,这是一个与操作系统无关的答案...... :-)

如果打印机不是非常便宜的型号,它将内置对 SNMP 的支持。 (简单网络管理协议(protocol))。 SNMP 查询可以从存储在其 MIB(管理信息库)中的网络设备返回当前值。

对于打印机,有一个定义为 Printer MIB 的标准。 .打印机 MIB 为 prtMarkerSuppliesLevel 定义标准名称和树位置(ASN.1 notation 中的 OID == 对象标识符)在墨水标记打印机的情况下,它映射到墨水量。

请注意,SNMP 还允许对标准 MIB 进行私有(private)扩展。大多数打印机供应商确实在他们的“私有(private) MIB”中隐藏了许多附加信息,尽管标准信息应该始终可以通过打印机 MIB OID 的查询获得。

实际上,每种编程语言都有标准库,可以帮助您从自己的应用程序中进行特定的 SNMP 查询。

一种这样的实现是开源的,称为 Net-SNMP ,它还带有一些强大的命令行工具来运行 SNMP 查询。

我认为查询所有墨水级别的 OID 是 .1.3.6.1.2.1.43.11.1.1.9 (this webpage 证实了我的看法)但我现在无法验证这一点,因为目前我的 LAN 中没有打印机。所以Net-SNMP的snmpget查询墨水量的命令应该类似于:

snmpget                       \
  -c public                   \
   192.168.222.111            \
   ".1.3.6.1.2.1.43.11.1.1.9"

在哪里 public是标准社区字符串和 192.168.222.111您的打印机的 IP 地址。

关于printing - 如何以编程方式访问打印机的墨水量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12120056/

相关文章:

java - 如何使用 Docx4j 打印

ios - Swift 协变泛型

swift - 扩展协议(protocol)属性以在 Swift 中提供默认实现

swift - 何时在 Swift 中使用序列、迭代器、集合等协议(protocol)

linux - CentOS 使用 SNMP 显示接口(interface)使用情况

SNMP 库存查找设备型号

javascript - 在 SharePoint 中通过 javascript 打印

c# - 在客户端打印而不显示打印对话框

java - 尝试从 GWT 项目调用 SNMP-Get

python - 如何在 Python 中打印到 stderr?