加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 本地打印机的SNMP?

发布时间:2020-12-15 04:03:13 所属栏目:百科 来源:网络整理
导读:我正在寻找一种从本地打印机获取信息的方法.也许与SNMP协议? 打印机与USB或PPI(并行端口)连接.所有打印机都有一个内部的TotalPagesCount并支持SNMP. 这里有一些打印机的例子: 兄弟HL1430 兄弟HL5150 兄弟HL1230 京瓷1118 京瓷1128 京瓷2000 京瓷1300 京瓷3
我正在寻找一种从本地打印机获取信息的方法.也许与SNMP协议?

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

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

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

这可能吗?谢谢

解决方法

我认为SNMP是正确的方法.大多数打印机实现了 standard printer MIB和 RFC 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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读