11

ローカル プリンタから情報を取得する方法を探しています。多分SNMPプロトコルで?

プリンターは USB または PPI (パラレルポート) で接続されています。すべてのプリンターは内部に TotalPagesCount を持ち、SNMP をサポートします。

プリンターの例を次に示します。

  • ブラザー HL1430
  • ブラザー HL5150
  • ブラザー HL1230
  • 京セラ1118
  • 京セラ1128
  • 京セラ2000
  • 京セラ1300
  • 京セラ3920
  • 京セラ1920
  • 京セラ1350

これは可能ですか?ありがとう

4

3 に答える 3

18

SNMPが正しいアプローチだと思います。ほとんどのプリンターは、標準のプリンター MIBRFC 1213 MIBを実装しているため、そこから取得できるプロパティはモデルに依存しません。たとえば、シリアル番号を探す場合、プロパティはおそらく prtGeneralSerialNumber 1.3.6.1.2.1.43.5.1.1.17 です。

他のプロパティについては、特定の MIB で検索する必要があります。たとえば、HP Laserjet MIBには、 printed-media-usage、printed-media-simplex-count、printed-media-duplex-countなどの多くのものがあります。 、使用量平均トナー カバレッジ、スキャン メディア使用量、総カラー ページ数.....

SNMP を使用するための最も拡張されたライブラリはNet-SNMPですが、C API を使用するため、重いマルチスレッド アプリケーションや SNMPv3 を使用する必要がある場合はお勧めしません。非常に有望に見えるリンクテキストのような他のライブラリがありますが、信頼できるライブラリのほとんどは商用であり、それほど安価ではありません.

プリンターがネットワークに接続されている場合、上記のすべては非常に簡単に実装できます。プリンターが USB または PPI に接続されている場合は、HP SNMP プロキシ エージェントに手を入れる必要があります。ここで素晴らしい投稿を見つけることができます。基本的には、標準のWindows SNMPサービスに便乗し、USBまたはパラレルケーブルを介してコンピューターに接続されたデフォルトのHPプリンターにSNMPデータを提供する小さなWindowsソフトウェアであると言われています. 他のブランドで動作するかどうかはわかりませんが、標準プロトコル DOT4 over USB を使用して、典型的な TCP/IP 通信をエミュレートしているようです。これらすべてのプリンターに接続する標準的な方法がある場合、これが最も有望です。私が考えることができる別の方法は、各モデルの個々のドライバーをハックして、それらがそのような情報を提供するかどうかを確認し (最も確実にそうします)、それを取得するためにそれぞれの呼び出しを行うことです。あなた自身の。

編集

ドライバーのハッキングとは、おそらく各ドライバーのツールのリバース エンジニアリングを意味します。たとえば、プリンターにトナーの状態を表示するユーティリティがあり、それがどのように機能するかを理解しようとする場合、依存を使用して実行可能ファイルを開き、使用している dll とそれらが発行するメソッドを確認します。GetTonerStatus のようなメソッドが見つかった場合dll では、それを使用してみる価値があります。

代替テキスト
(出典:dependencywalker.com

ツールが .Net で記述されている場合は、逆コンパイルすることでソース コードにアクセスできるため、はるかに簡単です (この方法の法的な問題については知りません)。リフレクターを使用すると、はっきりと見えます。

代替テキスト
(出典:corypeters.net

Reversing: Secrets of Reverse Engineeringと呼ばれるこの側面をカバーする素晴らしい本があります。

前に述べたように、これは長い道のりですが、おそらくやりたいことを達成するための唯一のものです。

于 2010-05-09T06:37:22.377 に答える
4

探している情報が含まれているかどうかはわかりませんが、WMI 経由でプリンターに関するかなりの情報を得ることができます:
http://msdn.microsoft.com/en-us/library/Aa394363

HP プリンターは、シリアル番号を次のレジストリ キー (おそらく ID などと呼ばれるキー) のどこかに保存していると思います:
HKEY_LOCAL_MACHINE\SOFTWARE\Hewlett-Packard\

SNMP を使用したことはありませんが、そのルートをたどる場合に役立つ可能性のあるこのライブラリを思い出しました:
http://www.codeproject.com/KB/cs/SNMPDLL.aspx

于 2010-04-30T21:45:22.710 に答える
0

SNMP 標準は、USB またはその他の接続タイプをサポートしていません。イーサネット上の TCP/IP スタックのみをサポートします。したがって、答えは NO または不可能です。

しかし、一部の企業は、他のネットワーク/接続タイプで SNMP を実装しています。ただし、このようなカスタマイズは標準化されておらず、標準の MIB ブラウザなどを使用して SNMP クエリを作成することはできません。

于 2010-05-06T04:42:56.470 に答える