使用 Cups Api 检测打印机状态变化

Posted

技术标签:

【中文标题】使用 Cups Api 检测打印机状态变化【英文标题】:Detecting Printer State Change with Cups Api 【发布时间】:2017-03-27 18:43:19 【问题描述】:

使用 Cups c api,我可以看到打印机的状态(例如暂停、打印、卡住等)。我现在要做的是监听或锁定打印机状态的变化.最终,我想要一个打印机状态的实时视图,但我不想让延迟循环向带有打印机属性请求的垃圾邮件杯发送垃圾邮件。

我在源代码和文档中看到了许多暗示某种事件系统的函数和标签,但我一直无法弄清楚如何使用它。欢迎任何帮助,即使只是将我指向正确的功能。

我在当前的实现中使用了这个示例来获取状态信息。 http://cups-dev.easysw.narkive.com/9RO0OBnZ/how-to-get-printer-status-via-cups-api

【问题讨论】:

【参考方案1】:

最终这是一个非常复杂的问题,需要大量工作才能弄清楚。我发现监听变化的唯一明智的方法是使用 rss 通知系统。我建议不要尝试制作自己的通知模块,我浪费了一周的时间尝试这样做(我什至不确定它是否可行)。将Create-Printer-Subscriptionrss://localhost:8000 之类的uri 一起使用。您当然需要一个等待 xml 数据的侦听器。

我用 java/jna here 制作了一个简单的调试工具。选择 2 设置订阅,但您需要自己收听数据。

【讨论】:

以上是关于使用 Cups Api 检测打印机状态变化的主要内容,如果未能解决你的问题,请参考以下文章

ubuntu关闭631(cups)端口

未检测到打印机但存在于 cups 服务器上

如何使用 cups API 添加 System V 过滤器?

苹果放弃开源项目CUPS的开发,OpenPrinting将负责后续工作

有没有办法使用 CUPS 库获取打印机的字节命令列表?

JVM 是不是有能力检测并行化机会?