UPnP打印机设备发现

时间:2013-01-09 06:24:31

标签: java networking network-programming upnp dlna

在一个项目中,我通过发送ssdp datagrampacket并接收到http url来发现UPnP打印机设备。

使用这些网址获取开放连接,获取xml架构,其中描述了设备和服务详细信息

这里我通过dom解析得到了详细信息

现在我的问题是,我怎么能找到 1.打印机的状态 2.打印机是否是双面打印机 3.它支持哪种纸张(横向/纵向和尺寸)

2 个答案:

答案 0 :(得分:1)

如果您已经获得了服务详细信息,那么您应该能够理解并使用以下UPnP规范:PrintBasic servicePrintEnhanced service(如果您的打印机支持它)。我建议您在网络中使用一些服务发现工具,例如来自Intel UPnP Developer Suite的DeviceSpy。您将了解打印机提供的信息以及是否可以作为状态变量(可能是偶数)访问,或者您需要执行 RPC on service function 来获取它。具体如何解释两者之间的差异以及如何获得它们超出了简单的S.O.的范围。回答。您可以从阅读和理解UPnP Device Architecture document开始。在DeviceSpy中嗅探并尝试调用内容并查看结果也非常有用。

快速浏览规范(我更多地了解媒体服务)表明您应该善于PrintBasic状态(查找PrinterState / PrinterStateReasons)和纸张尺寸(查询MediaSize / MediaType)。我找不到双工,它可能隐藏在其他名称下(也许Sides?)。我发现这些可能是当前工作的单值变量。然后可以使用不同的名称访问适用的值枚举,或者您需要执行RPC来获取它。我不会在这里替换你的研发: - )

旁注:通过打开HTTP连接自己完成所有操作并解析DOM是不必要的繁琐(除非你是为了纯粹的乐趣而这样做)。集成一个成熟的现成库,如Cling。要正确使用UPnP,除了阅读简单的DOM之外,还需要很多复杂的东西。就像监听事件订阅和执行SOAP RPC一样。

答案 1 :(得分:0)

也许this会帮助你。

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