好的,这是一个特定于 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/