UOS打印任务监控

UOS系统下如何对一个打印任务进行监控呢?

首先,UOS系统是支持这个功能。比如说我们打印一个任务后,UOS自带的打印管理器是能知道打印任务的状态的:

经过研究,最终发现了他的监控原理。

还得是DBus

没错,还是得通过DBus来实现打印任务监控。

话不多说,直接上代码:

#define SERVICE_INTERFACE_NAME "com.deepin.print.helper"
#define SERVICE_INTERFACE_PATH "/com/deepin/print/helper"

if (!QDBusConnection::sessionBus().connect(SERVICE_INTERFACE_NAME,
 SERVICE_INTERFACE_PATH, 
SERVICE_INTERFACE_NAME, 
"signalJobStateChanged", 
&listener, 
SLOT(slJobChanged(QDBusMessage)))) {
    qWarning() << "connect to dbus signal(signalJobStateChanged) failed";
}

这一段代码的意思是连接dbus的打印消息与槽函数,成功之后,才能接收系统的消息。

其中的 listener是自己写的一个监控对象,继承自QEventLoop。其槽函数可以这么写:


void Listener::slJobChanged(const QDBusMessage &msg)
{
    if (msg.arguments().count() != 3) {
        qWarning() << "JobStateChanged dbus arguments error";
    }
    else{
        int TaskId=msg.arguments().at(0).toInt();//打印任务ID
        int state=msg.arguments().at(1).toInt();//打印任务状态,4是created,5是started,9是finished
        ipp_jstate_e eState = static_cast<ipp_jstate_e>(state) ;
        QString strMsg = msg.arguments().at(2).toString();//打印任务消息
    }
}

其中 ipp_jstate_e 是一个枚举类型,其头文件在ipp.h。如果没有这个头文件要安装cups的相关依赖。这里就不展开说了。

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值