0

プロジェクトで、ssdpデータグラムパケットを送信してhttp urlを受信することにより、UPnPプリンターデバイスを発見しました。

これらのURLを使用して、開いている接続を取得し、デバイスとサービスの詳細を記述したxmlスキーマを取得します

ここで私はdom解析によって詳細を取得します

今私の質問は、どうすれば1.プリンタのステータスを見つけることができますか2.プリンタが両面印刷されているかどうか3.サポートされている用紙の種類(風景/ポートレートとサイズ)

4

2 に答える 2

1

すでにサービスの詳細を取得している場合は、次のUPnP仕様を理解して使用できるはずです:PrintBasicサービスPrintEnhancedサービス(プリンターがサポートしている場合)。Intel UPnP Developer SuiteのDeviceSpyなど、ネットワークでサービス検出ツールを使用することをお勧めします。プリンターが提供する情報と、それが状態変数(おそらくイベント)として到達可能かどうか、またはそれを取得するためにサービス関数でRPCを実行する必要があるかどうかがわかります。2つの違いは何か、そしてそれらを取得する方法について具体的なハウツーを与えることは、単純なSOの答えの範囲を超えています。UPnPデバイスアーキテクチャドキュメントを読んで理解することから始めることができます。DeviceSpyをスニッフィングして、物事を呼び出して結果を確認することも非常に役立ちます。

仕様(私はメディアサービスに詳しくあります)をざっとPrintBasic見てみると、ステータス(ルックアップPrinterState/ PrinterStateReasons)と用紙サイズ(ルックアップMediaSize/ MediaType)に問題がないことがわかります。デュプレックスが見つかりませんでした。他の名前で隠れている可能性があります(おそらくSides?)。私が見つけたこれらが現在のジョブの1つの値の変数である可能性は完全にあります。該当する値の列挙は、おそらく別の名前で到達可能であるか、RPCを実行して取得する必要があります。ここであなたの研究開発を置き換えることはありません:-)

補足:HTTP接続を開いてDOMを解析することですべてを自分で行うのは、不必要に面倒です(純粋な楽しみのために行っている場合を除く)。Clingのような成熟した既製のライブラリの1つを統合します。UPnPを適切に使用するには、単純なDOMを読み取るだけでなく、多くの複雑なものが必要です。イベントサブスクリプションをリッスンし、SOAPRPCを実行するようなものです。

于 2013-01-10T09:58:49.807 に答える
0

おそらくこれはあなたを助けるでしょう。

プリンタの詳細を確認するには、プリンタサービスからattributeSetを取得する必要があります。

于 2013-01-09T06:31:14.203 に答える