dbus

dbus-glib 安装环境搭建

可紊 提交于 2019-12-06 07:48:33
dbus-glib 安装环境搭建 安装 dbus apt-get install dbus 安装 d-feet ,用于查看 session bus 和 system bus apt-get install d-feet 安装 glib2.0 apt-get install libgtk2.0-dev 安装 dbus-glib apt-get install libdbus-glib-1-dev 下面三个错误参考http://hi.baidu.com/zengzhaonong/blog/item/670b98d6e63ae42c07088bae.html 常见的错误 错误 1: $ gcc test.c test.c:8:23: 错误: dbus/dbus.h : No such file or director y ...... $ 错误提示, dbus 库的头文件位置不正确 ( 如果已经安装了 dbus 的话 ) $ sudo updatedb $ sudo locate dbus.h ( 查看 dbus.h 的所在位置 ) /usr/local/include/dbus-1.0/dbus/dbus.h /usr/include/dbus-1.0/dbus/dbus.h 看来 dbus.h 的存放位置的确不正确,这可能是由于 dbus-1.0 的安装位置有问题,没关系,调整一下

d-feet not show dbus path and Interface

断了今生、忘了曾经 提交于 2019-12-06 07:48:18
使用d-feet查看dbus程序时,系统原有的d-feet程序显示path和interface等信息,但是自己写的程序虽然在d-feet中能够识别,却不显示path和interface等信息。经过调查发现,d-feet调用程序的org.freedesktop.DBus.Introspectable接口(Interface)下的Introspect函数(Method)。实现了这个接口,返回字符串格式的xml,然后d-feet中就能显示了。 返回字符串格式如下: "<!DOCTYPE node PUBLIC \"-//freedesktop//DTD D-BUS Object Introspection 1.0//EN\" \n" "\"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd\">\n" "<node>\n" " <interface name=\"org.freedesktop.DBus.Introspectable\">\n" " <method name=\"Introspect\">\n" " <arg name=\"data\" direction=\"out\" type=\"s\"/>\n" " </method>\n" " </interface>\n" " <interface name

Qt浅谈之二十七进程间通信之QtDBus

こ雲淡風輕ζ 提交于 2019-12-06 07:46:40
一、简介 DBus的出现,使得Linux进程间通信更加便捷,不仅可以和用户空间应用程序进行通信,而且还可以和内核的程序进行通信,DBus使得Linux变得更加智能,更加具有交互性。 DBus分为两种类型:system bus(系统总线),用于系统(Linux)和用户程序之间进行通信和消息的传递;session bus(回话总线),用于桌面(GNOME, KDE等)用户程序之间进行通信。 二、详解之Qt代码 1、代码一 (1)test.h #ifndef TEST_H #define TEST_H #include <QtCore> #include <QTimer> class Test : public QObject { Q_OBJECT public: Test(); public slots: QString testStart(); void changeTest(); signals: void stateChange(QString str); private: QTimer *timer; }; #endif /*TEST_H*/ (2)test.cpp #include "test.h" Test::Test() { qDebug() << "===========test init==========="; timer = new QTimer; connect

QT下进程之间通讯——QtDBus(2)

别等时光非礼了梦想. 提交于 2019-12-06 07:46:04
一、简介 DBus的出现,使得Linux进程间通信更加便捷,不仅可以和用户空间应用程序进行通信,而且还可以和内核的程序进行通信,DBus使得Linux变得更加智能,更加具有交互性。 DBus分为两种类型:system bus(系统总线),用于系统(Linux)和用户程序之间进行通信和消息的传递;session bus(回话总线),用于桌面(GNOME, KDE等)用户程序之间进行通信。 二、详解之Qt代码 1、代码一 (1)test.h [html] view plain copy #ifndef TEST_H #define TEST_H #include < QtCore > #include < QTimer > class Test : public QObject { Q_OBJECT public: Test(); public slots: QString testStart(); void changeTest(); signals: void stateChange(QString str); private: QTimer *timer; }; #endif /*TEST_H*/ (2)test.cpp [html] view plain copy #include "test.h" Test::Test() { qDebug() < < "==========

进程通信-dbus(1)

烂漫一生 提交于 2019-12-06 07:45:38
1.需求 最近要实现erp客户端和pos客户端及双屏显示客户端之间的通信,网上查了下打算采用dbus来实现。有两点考虑一简单二效率高(网上说的) 2.生成sln工程 需要dbus源码,expat,cmake 1.安装expat 如E:\software\Expat 2.1.0 2.安装cmake 如E:\software\CMake 3.解压dbus到指定的目录如D:\SDK\dbus\dbus-1.4.20 4.运行cmake-gui.exe 4.1设置源码路径D:/SDK/dbus/dbus-1.4.20/cmake 4.2设置编译路径D:/SDK/dbus/build 4.3增加两个变量(Add Entry)LIBEXPAT_INCLUDE_DIR E:/software/Expat 2.1.0/Source/lib LIBEXPAT_LIBRARIES E:/software/Expat 2.1.0/Bin/libexpat.lib 4.4选择编译器(Configure) 这里选择vs2010 4.5生成(Generate)即可 3.编译运行 运行build目录下的dbus.sln 即可编译和运行 来源: CSDN 作者: 电子枪 链接: https://blog.csdn.net/zhang_ruiqiang/article/details/48262159

dbus通信与接口介绍

大城市里の小女人 提交于 2019-12-06 07:45:29
DBUS是一种高级的进程间通信机制。DBUS支持进程间一对一和多对多的对等通信,在多对多的通讯时,需要后台进程的角色去分转消息,当一个进程发消息给另外一个进程时,先发消息到后台进程,再通过后台进程将信息转发到目的进程。DBUS后台进程充当着一个路由器的角色。 DBUS中主要概念为总线,连接到总线的进程可通过总线接收或传递消息,总线收到消息时,根据不同的消息类型进行不同的处理。DBUS中消息分为四类: 1. Methodcall消息:将触发一个函数调用 ; 2. Methodreturn消息:触发函数调用返回的结果; 3. Error消息:触发的函数调用返回一个异常 ; 4. Signal消息:通知,可以看作为事件消息。 1.2 DBUS应用场景 根据DBUS消息类型可知,DBUS提供一种高效的进程间通信机制,主要用于进程间函数调用以及进程间信号广播。 1 . 函数调用 DBUS可以实现进程间函数调用,进程A发送函数调用的请求(Methodcall消息),经过总线转发至进程B。进程B将应答函数返回值(Method return消息)或者错误消息(Error消息)。 2 . 消息广播 进程间消息广播(Signal消息)不需要响应,接收方需要向总线注册感兴趣的消息类型,当总线接收到“Signal消息”类型的消息时,会将消息转发至希望接收的进程。 1.3 DBUS通信特点

认识dbus的基本概念

删除回忆录丶 提交于 2019-12-06 07:45:11
一. dbus 的认识 dbus是一用于进程间通信的一种设施,但不是简单的1-1关系的进程间通信,如果只是这些已经有很多成熟的技术可以采用:在windows下从简单的com、管道、内存共享到复杂的corba。dbus则更是更轻量级的ipc,不仅可以实现1-1,还可以实现1-n关系的ipc。它的使用面向对象化,就像使用面向对象语言进行ipc开发。引入object,interface等概念。 二. 下从dbus的代码开始认识他的概念。 1.bus,总线,假如由一个集线器和几台机器组成的网络是一个总线式网络,我们不从网络拓补那些理论上看这个网络,从物理上看就是总线网络:集线器是总线,机器都连到这根总线上就可以communtion了。dbus就是这样一个网络,bus相当于集线器,而在dbus系统里实际扮演这一角色的是dbus-daemon。 2. dbus connection. 一个connection就代表一个到bus上的连接,在集线器网络里,各个endpoint要通信,都要通过网线连接到集线器。dbus系统里,如果一个进程要与其他进程通信,也要通过这个dbus connection连接到dbus-daemon,不过这是一个tcp连接。我们来看下dbus获取一个连接的代码: if (!init_connections_unlocked ()) { _DBUS_UNLOCK (bus);

基于DBus的进程间通信

▼魔方 西西 提交于 2019-12-06 07:44:58
1.dbus概念 网上有一篇叫“D-Bus Tutorial”的文章,流传较广。 D-Bus是针对桌面环境优化的IPC(interprocess communication )机制,用于进程间的通信或进程与内核的通信。最基本的D-Bus协议是一对一的通信协议。但在很多情况下,通信的一方是消息总线。消息总线是一个特殊的应用,它同时与多个应用通信,并在应用之间传递消息。下面我们会在实例中观察消息总线的作用。消息总线的角色有点类似与X系统中的窗口管理器,窗口管理器既是X客户,又负责管理窗口。 支持dbus的系统都有两个标准的消息总线:系统总线和会话总线。系统总线用于系统与应用的通信。会话总线用于应用之间的通信。网上有一个叫d-feet的python程序,我们可以用它来观察系统中的dbus世界。 图1、由d-feet观察到的D-Bus世界 dbus还提供了两个命令行工具用于dbus测试,dbus-send和dbus-monitor,前一个命令用于测试信号的发送,后一个命令用于监控dbus的数据流。 2.dbus概念 有关dbus的基础知识不在本文的范围内,具体的参见dbus的文档。下面给出dbus常用的流程。 2.1建立服务的流程 dbus_bus_get(),建立一个dbus连接; dbus_bus_request_name(),为这个dbus连接(DbusConnection)起名

D-Bus学习(三):消息

十年热恋 提交于 2019-12-06 07:44:01
  D-Bus的方式在移动手机操作系统中非常重要,包括Maemo,Moblin等以Linux为基础的操作系统。估计Andriod也大量使用。D-Bus的相关学习资料见: http://www.freedesktop.org/wiki/Software/dbus 。   消息通过D-Bus在进程间传递。有四类消息: 一、Method call消息:将触发对象的一个method 二、Method return消息:触发的方法返回的结果 三、Error消息:触发的方法返回一个异常 四、Signal消息:通知,可以看作为事件消息。   一个消息有消息头header,里面有field,有一个消息体body,里面有参数arguments。消息头包含消息体的路由信息,消息体就是净荷payload。头字段可能包括发送者的bus名,目的地的bus名,方法或者signal名等等,其中一个头字段是用于描述body中的参数的类型,例如“i”标识32位整数,"ii”表示净荷为2个32为整数。 发送Method call消息的场景   一个method call消息从进程A到进程B,B将应答一个method return消息或者error消息。在每个call消息带有一个序列号,应答消息也包含同样的号码,使之可以对应起来。他们的处理过程如下: 如果提供proxy

GDBus 通信机制介绍及Demo版本

跟風遠走 提交于 2019-12-06 07:43:46
一、DBus通信概念 DBus通信是IPC通信机制的一种方式,它有两种模式,分别为:session(会话模式)、system(总线模式)。 总线模式:采用总线模式时,系统需要维护一个DBus Daemon,每个DBus的请求通过DBus Daemon转发。这种模式Server只需要维护一个与DBus Daemon的链接,结构清晰,可以通过广播的方式发送消息到各个Client。 会话模式:这种模式一般称之为点对点的星型结构,Client与Server之间是直接的Peer2Peer的连接,少了DBus Daemon的中转,因此性能较好。 注意:在使用DBus通信前,需要保证系统安装了GIO_LIBS库,如果Linux环境还没有安装GIO_LIBS,请使用以下命令进行安装: yum install libgnomeui-devel 二、DBus Demo介绍 DBus的通信机制是Server-Client模式,Server需要提供一个XML(eg: com.Yanlin.Gdbus.Example.xml)文档给Client端去说明DBus Server提供的interface name、signal name及它的arg name、 type、 direction、method name及它的arg name、 type、 direction。 com.Yanlin.Gdbus