SNMP для Локального принтера?

Я ищу способ Получить информацию от локального принтера. Возможно, с Протоколом SNMP?

Принтер подключен с USB или PPI (параллельный порт). Все принтеры имеют внутренний TotalPagesCount и поддерживают SNMP.

Здесь некоторые примеры Принтеров:

  • Брат HL1430
  • Брат HL5150
  • Брат HL1230
  • Kyocera 1118
  • Kyocera 1128
  • Kyocera 2000
  • Kyocera 1300
  • Kyocera 3920
  • Kyocera 1920
  • Kyocera 1350

Действительно ли это возможно?Спасибо

11
задан Gone Coding 27 September 2010 в 12:41
поделиться

3 ответа

Я думаю, что SNMP - правильный подход. Большинство принтеров реализуют стандартную MIB принтера и RFC 1213 MIB , поэтому любое свойство, которое вы можете получить оттуда, не будет зависеть от модели. Например, если вы ищете серийный номер, ваше свойство, вероятно, будет prtGeneralSerialNumber 1.3.6.1.2.1.43.5.1.1.17

Для других свойств вам нужно будет искать в определенных MIB, например, в HP Laserjet MIB у вас есть много таких вещей, как использование печатных носителей, количество односторонних печатных носителей, количество двусторонних печатных носителей, среднее количество покрытия тонером, сканированные носители. -usage, total-color-page-count .....

Для использования SNMP наиболее расширенной библиотекой является Net-SNMP , но она использует C API, и я не рекомендую ее вам, если вы необходимо использовать его в тяжелых многопоточных приложениях или с использованием SNMPv3.Существуют и другие библиотеки, такие как текст ссылки , которые выглядят очень многообещающими, но большинство надежных библиотек являются коммерческими и не очень дешевыми.

Все вышеперечисленное довольно легко реализовать, если принтер подключен к сети. Теперь, если принтер подключен через USB или PPI , вам нужно воспользоваться прокси-агентом HP SNMP, вы можете найти отличный пост здесь . В нем говорится, что в основном это небольшое программное обеспечение для Windows, которое использует стандартную службу SNMP Windows и предоставляет данные SNMP на стандартный принтер HP, подключенный к компьютер через USB или параллельный кабель . Я не знаю, работает ли он с другими брендами, но похоже, что он использует стандартный протокол DOT4 через USB для имитации типичной связи TCP / IP. Если существует какой-либо стандартный метод подключения ко всем этим принтерам, этот является наиболее многообещающим. Еще один метод, который я могу придумать, - это взломать отдельные драйверы каждой модели, чтобы проверить, предоставляют ли они такую ​​информацию (которая больше всего конечно, есть) и сделайте им соответствующие звонки, чтобы получить это, но я думаю, что в этой задаче вы сами по себе.

РЕДАКТИРОВАТЬ

Под взломом драйверов я имею в виду обратное проектирование, вероятно, инструментов каждого драйвера. Например, если на принтере есть утилита, которая показывает состояние тонера, попробуйте понять, как это работает, я бы начал использовать Depends , чтобы открыть исполняемый файл и посмотреть, какие библиотеки DLL он использует и какие методы они публикуют, если вы найдете в dll такой метод, как GetTonerStatus, стоит попробовать его использовать.

alt text
(источник: dependencywalker.com )

Если инструмент написан на .Net, это намного проще, потому что вы можете получить доступ к исходному коду, декомпилировав его (я не знаю о юридических проблемах этого метода). Используйте для этого отражатель , и вы это четко увидите.

alt text
(источник: corypeters.net )

Есть отличная книга, которая освещает эти аспекты, под названием Реверсирование: секреты обратного проектирования

Как было сказано ранее, это долгий путь, но возможно, единственный, кто достиг того, что вы хотите сделать, вы можете пересмотреть жизнеспособность проекта после небольшого исследования упомянутых мною тем.

17
ответ дан 3 December 2019 в 05:33
поделиться

Вы можете получить довольно много информации о принтерах через WMI, хотя я не уверен, что он содержит информацию, которую вы ищете:
http://msdn.microsoft.com/en-us/library/Aa394363

Я думаю, что принтеры HP хранят свои серийные номера где-то в этом ключе реестра (возможно, ключ под названием identity или подобный):
HKEY_LOCAL_MACHINE\SOFTWARE\Hewlett-Packard\

Я никогда не использовал SNMP, хотя я вспомнил эту библиотеку, которая может пригодиться, если вы пойдете по этому пути:
http://www.codeproject.com/KB/cs/SNMPDLL.aspx

4
ответ дан 3 December 2019 в 05:33
поделиться

Стандарт SNMP не поддерживает USB или другие типы подключения. Он поддерживает только стек TCP / IP через Ethernet. Следовательно, ответ должен быть НЕТ или невозможен.

Но мы действительно видим, что некоторые компании внедряют SNMP поверх других типов сетей / соединений. Однако такая настройка не стандартизована, и вы не можете выполнять запросы SNMP с использованием стандартных браузеров MIB и т. Д.

0
ответ дан 3 December 2019 в 05:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: