c# – 本地打印机的SNMP?

前端之家收集整理的这篇文章主要介绍了c# – 本地打印机的SNMP?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在寻找一种从本地打印机获取信息的方法.也许与SNMP协议?

打印机与USB或PPI(并行端口)连接.所有打印机都有一个内部的TotalPagesCount并支持SNMP.

这里有一些打印机的例子:

>兄弟HL1430
>兄弟HL5150
>兄弟HL1230
>京瓷1118
京瓷1128
>京瓷2000
>京瓷1300
>京瓷3920
>京瓷1920
>京瓷1350

这可能吗?谢谢

@H_502_20@解决方法
我认为SNMP是正确的方法.大多数打印机实现了 standard printer MIBRFC 1213 MIB,所以你可以从那里获得的任何财产都将与模型无关.例如,如果您查找序列号,您的属性可能是prtGeneralSerialNumber 1.3.6.1.2.1.43.5.1.1.17

对于其他属性,您将需要在特定的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

如前所述,这是一条漫长的道路,但可能是唯一实现您想要做的事情,您可能需要重新考虑项目的可行性,然后调查了一些我提到的主题.

原文链接:https://www.f2er.com/csharp/92871.html

猜你在找的C#相关文章