在一個項目中,我通過發送ssdp數據報文包並接收http url來發現了UPnP打印機設備。UPnP打印機設備發現
使用這些網址,越來越開放的連接,獲取它所介紹的設備和服務的詳細信息的XML架構
在這裏我得到DOM的細節解析
現在我的問題是,我怎麼能找到打印機 2的 1.狀態打印機是雙面與否 3.什麼樣的紙,它支持(橫向/縱向也大小)
在一個項目中,我通過發送ssdp數據報文包並接收http url來發現了UPnP打印機設備。UPnP打印機設備發現
使用這些網址,越來越開放的連接,獲取它所介紹的設備和服務的詳細信息的XML架構
在這裏我得到DOM的細節解析
現在我的問題是,我怎麼能找到打印機 2的 1.狀態打印機是雙面與否 3.什麼樣的紙,它支持(橫向/縱向也大小)
也許this會幫助你。
您需要從打印機服務獲取attributeSet以查找打印機的詳細信息。
如果您已經獲得服務的細節,那麼你應該能夠理解並使用以下UPnP規範:PrintBasic
service和PrintEnhanced
service(如果您的打印機支持的話)。我建議在您的網絡中使用一些服務發現工具,如Intel UPnP Developer Suite的DeviceSpy。你會得到一個想法是什麼信息您的打印機提供,以及它是否是可達的狀態變量(也許是事件觸發),或者你需要做的服務功能一個RPC獲得它。就這兩者之間的區別以及如何獲得它們給出具體的指導方法,這超出了簡單的S.O.的範圍。回答。您可以從閱讀並瞭解UPnP Device Architecture document開始。在DeviceSpy中嗅探並嘗試調用事物並查看結果也非常有幫助。
的規格(我更成媒體服務)的快速脫脂表明,你要善於與PrintBasic
的狀態(查找PrinterState
/PrinterStateReasons
)和紙張尺寸(查找MediaSize
/MediaType
)。我找不到雙工,它可能隱藏在其他名稱下(可能是Sides
?)。這些我可能完全有可能找到當前工作的單值變量。那麼適用的值枚舉可能會以不同的名稱訪問,或者您需要執行RPC來獲取它。我不會在這裏免去您的[R & d :-)
旁註:打開HTTP連接和解析DOM做的一切都是你自己是不必要的繁瑣的(除非你這樣做是爲了純粹的樂趣)。集成像Cling這樣成熟的現成庫。要正確使用UPnP,你需要很多複雜的東西超越讀一個簡單的DOM。像監聽事件訂閱和執行SOAP RPC一樣。
你能解釋如何從打印機服務中獲得的屬性集中,如果能請代碼 – user1791618
鏈接已經已經編寫的代碼示例解釋。 –