打印机与USB或PPI(并行端口)连接.所有打印机都有一个内部的TotalPagesCount并支持SNMP.
这里有一些打印机的例子:
>兄弟HL1430
>兄弟HL5150
>兄弟HL1230
>京瓷1118
京瓷1128
>京瓷2000
>京瓷1300
>京瓷3920
>京瓷1920
>京瓷1350
这可能吗?谢谢
对于其他属性,您将需要在特定的MIB中进行搜索,例如在HP Laserjet MIB中,您有很多内容,如印刷媒体使用,印刷媒体单面数,印刷媒体双工计数,使用量 – 墨粉覆盖率,扫描媒体使用量,全彩色页数…..
要使用SNMP,最多扩展库是Net-SNMP,但它使用C API,如果您需要在大量多线程应用程序或使用SNMPv3中使用它,我不建议使用.还有像link text这样的其他图书馆看起来非常有希望,但大多数可靠的图书馆都是商业而不是很便宜.
如果打印机是网络连接,以上所有这些都是很容易实现的,现在如果打印机是USB或PPI连接的,那么您需要手动进入HP SNMP Proxy Agent,您可以找到一个很棒的帖子here.
它表示,它基本上是一个Windows软件,捎带在标准的Windows SNMP服务上,并通过USB或并行电缆在连接到计算机的默认HP打印机上提供SNMP数据.我不知道它是否适用于任何其他品牌,但它似乎使用标准协议DOT4通过USB模拟典型的TCP / IP通信.如果有任何标准的方法连接到所有这些打印机,这是最有希望的.
我可以想到的另一种方法是劫持每个模型的个人驱动程序,看看他们是否提供这样的信息(最肯定的),并且对它们进行相应的调用,但是在这个任务上,我认为你在你自己.
编辑
使用驱动程序黑客我的意思是逆向工程可能是每个驱动程序的工具.例如,如果打印机具有显示墨粉状态的实用程序,尝试了解它是如何工作的,我将开始使用Depends打开可执行文件,并查看它正在使用哪些DLL以及它们发布的方法,如果您发现一种方法,如GetTonerStatus在dll中,值得尝试使用它.
alt text http://www.dependencywalker.com/snapshot.png
如果该工具是用.Net编写的,那么可以通过反编译来访问源代码(我不知道这个方法的法律问题).使用reflector做,你会看清楚.
alt text http://corypeters.net/wp-content/uploads/netReflector.gif
有一本伟大的书涵盖了这个方面叫做Reversing: Secrets of Reverse Engineering
如前所述,这是一条漫长的道路,但可能是唯一实现您想要做的事情,您可能需要重新考虑项目的可行性,然后调查了一些我提到的主题.