2013-01-09 55 views
0

在一个项目中,我通过发送ssdp数据报文包并接收http url来发现了UPnP打印机设备。UPnP打印机设备发现

使用这些网址,越来越开放的连接,获取它所介绍的设备和服务的详细信息的XML架构

在这里我得到DOM的细节解析

现在我的问题是,我怎么能找到打印机 2的 1.状态打印机是双面与否 3.什么样的纸,它支持(横向/纵向也大小)

回答

0

也许this会帮助你。

您需要从打印机服务获取attributeSet以查找打印机的详细信息。

+0

你能解释如何从打印机服务中获得的属性集中,如果能请代码 – user1791618

+0

链接已经已经编写的代码示例解释。 –

1

如果您已经获得服务的细节,那么你应该能够理解并使用以下UPnP规范:PrintBasic servicePrintEnhanced 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一样。