[英]UPnP printer device discovery
在一个项目中,我通过发送ssdp数据报数据包并接收http url发现了UPnP打印机设备。
使用这些网址,获得打开的连接,获取其中描述设备和服务详细信息的xml模式
在这里,我通过dom解析获得详细信息
现在我的问题是,我如何找到1.打印机的状态2.打印机是否为双面打印3.它支持哪种纸张(横向/纵向以及尺寸)
如果已经在获取服务详细信息,则您应该能够理解和使用以下UPnP规范: PrintBasic
服务和PrintEnhanced
服务 (如果您的打印机支持的话)。 我建议在您的网络中使用一些服务发现工具,例如Intel UPnP Developer Suite中的 DeviceSpy。 您将了解打印机提供的信息以及状态变量是否可以访问(可能是事件),或者您需要执行RPC on service函数来获取信息。 给出关于两者之间的区别以及如何获取它们的具体方法超出了简单的SO答案的范围。 您可以从阅读和理解UPnP设备架构文档开始 。 嗅探DeviceSpy并尝试调用事物并查看结果也非常有帮助。
快速浏览规格(我更喜欢Media服务)表明,对于状态(查找PrinterState
/ PrinterStateReasons
)和纸张尺寸(查找MediaSize
/ MediaType
),您应该对PrintBasic
了解。 我找不到双工,它可能隐藏在其他名称下(也许是Sides
?)。 我发现这些很可能是当前工作的一值变量。 然后,可以使用其他名称访问适用的值枚举,或者您需要执行RPC以获得它。 我不会在这里取代您的研发部门:-)
旁注 :通过打开HTTP连接并解析DOM自己进行所有操作都是不必要的乏味(除非您出于纯粹的乐趣而这样做)。 集成像Cling这样成熟的现成库之一。 要正确使用UPnP,除了阅读简单的DOM外,您还需要很多复杂的东西。 就像侦听事件订阅并执行SOAP RPC一样。
也许这会对您有所帮助。
您需要从打印机服务获取attributeSet来查找打印机的详细信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.