dbus

dbus调试方法

笑着哭i 提交于 2019-12-06 07:16:52
近期研究了android bluetooth,发现bluez消息都是通过dbus进行传输,但是在java层和bluez通信的过程中,有些会被block住,这样就需要dbus进行调试,下面讲述dbus进行调试的方法。 dbus提供2个tool,一个是dbus-send, 一个是dbus-monitor。dbus-send可以像调用API那样进行消息传递,而dbus-monitor可以监听dbus消息传递过程。在这里讲述如何通过dbus-send和dbus-monitor结合进行调试。 dbus-monitor监听的时候需要指定sender和dest,如果想hci那样,每次的path都是不同的,怎样指定dest呢?我们需要下面的命令: root@smi:/ # dbus-send --system --type=method_call --print-reply --dest=org.bluez /org/bluez org.freedesktop.DBus.Introspectable.Introspect g/bluez org.freedesktop.DBus.Introspectable.Introspect < method return sender=:1.1 -> dest=:1.3 reply_serial=2 string "<!DOCTYPE node PUBLIC

QT中DBus的用法

大城市里の小女人 提交于 2019-12-06 07:16:36
目 录 1 概述 ... 2 2 QT 中 Dbus 的最简单的用法 ... 3 3 QT 中 DBus 的常规用法 ... 4 3.1 客户端的用法 1 :使用 QDBusMessage . 4 3.2 客户端的用法 2 :使用 DBusInterface . 4 3.3 客户端的用法 3 :使用 DBusProxy . 5 3.4 服务端的用法 1 :直接注册对象和服务 ... 6 3.5 服务端的用法 2 :使用 DBusAdapter 6 4 QT 中 Dbus 的特殊的用法 ( 使用 QT 的信号 ) 7 1 概述 D-Bus 是一种高级的进程间通信机制,它由 freedesktop.org 项目提供,使用 GPL 许可证发行。 D-Bus 最主要的用途是在 Linux 桌面环境为进程提供通信,同时能将 Linux 桌面环境和 Linux 内核事件作为消息传递到进程。 D-Bus 的主要概率为总线,注册后的进程可通过总线接收或传递消息,进程也可注册后等待内核事件响应,例如等待网络状态的转变或者计算机发出关机指令。目前, D-Bus 已被大多数 Linux 发行版所采用,开发者可使用 D-Bus 实现各种复杂的进程间通信任务。 D-Bus 是一个消息总线系统,其功能已涵盖进程间通信的所有需求,并具备一些特殊的用途。 D-Bus 是三层架构的进程间通信系统,其中包括: 接口层

交叉编译dbus

百般思念 提交于 2019-12-06 07:16:20
1. 下载dbus和expat源码 dbus: http://dbus.freedesktop.org/releases/dbus/ expat: http://sourceforge.net/projects/expat/ 2. 交叉编译expat #./configure --host=armv6-rpi-linux-gnueabi --prefix=/opt/Rasp/expat #make #make install 3. 交叉编译dbus #./configure --host=armv6-rpi-linux-gnueabi --prefix=/opt/Rasp/dbus CFLAGS=-I/opt/Rasp/expat/include LDFLAGS=-L/opt/Rasp/expat/lib #make #make install 来源: CSDN 作者: 奋斗的IT青年 链接: https://blog.csdn.net/Charein/article/details/36634857

Dbus

岁酱吖の 提交于 2019-12-06 07:16:10
##D-Bus三层架构 DBus是一个为应用程序间通信的消息总线系统, 用于进程之间的通信。它是个3层架构的IPC 系统,包括: 1、函数库libdbus ,用于两个应用程序互相联系和交互消息。 2、一个基于libdbus构造的消息总线守护进程,可同时与多个应用程序相连,并能把来自一个应用程序的消息路由到0或者多个其他程序。 3、基于特定应用程序框架的封装库或捆绑(wrapper libraries or bindings )。例如,libdbus-glib和libdbus-qt,还有绑定在其他语言,例如Python的。大多数开发者都是使用这些封装库的API,因为它们简化了D-Bus编程细节。libdbus被有意设计成为更高层次绑定的底层后端(low-levelbackend )。大部分libdbus的 API仅仅是为了用来实现绑定。 ##总线 在D-Bus中,“bus”是核心的概念,它是一个通道:不同的程序可以通过这个通道做些操作,比如方法调用、发送信号和监听特定的信号。在一台机器上总线守护有多个实例(instance)。这些总线之间都是相互独立的。 ###一个持久的系统总线(system bus): 它在引导时就会启动。这个总线由操作系统和后台进程使用,安全性非常好,以使得任意的应用程序不能欺骗系统事件。它是桌面会话和操作系统的通信,这里操作系统一般而言包括内核和系统守护进程

dbus调试方法

 ̄綄美尐妖づ 提交于 2019-12-06 07:15:51
近期研究了android bluetooth,发现bluez消息都是通过dbus进行传输,但是在java层和bluez通信的过程中,有些会被block住,这样就需要dbus进行调试,下面讲述dbus进行调试的方法。 dbus提供2个tool,一个是dbus-send, 一个是dbus-monitor。dbus-send可以像调用API那样进行消息传递,而dbus-monitor可以监听dbus消息传递过程。在这里讲述如何通过dbus-send和dbus-monitor结合进行调试。 dbus-monitor监听的时候需要指定sender和dest,如果想hci那样,每次的path都是不同的,怎样指定dest呢?我们需要下面的命令: root@smi:/ # dbus-send --system --type=method_call --print-reply --dest=org.bluez /org/bluez org.freedesktop.DBus.Introspectable.Introspect g/bluez org.freedesktop.DBus.Introspectable.Introspect < method return sender=:1.1 -> dest=:1.3 reply_serial=2 string "<!DOCTYPE node PUBLIC

dbus小工具

梦想的初衷 提交于 2019-12-06 07:15:36
dbus提供了两个小工具: dbus-send 和dbus-monitor。我们可以用 dbus-send 发送消息。用dbus-monitor监视总线上流动的消息。 让我们通过 dbus-send 发送消息来调用前面的Add方法,这时 dbus-send 充当了应用程序B。用dbus-monitor观察调用过程中的消息。 启动example-service: $ ./example-service 在另一个控制台启动dbus-monitor: $ dbus-monitor dbus-monitor默认监视会话总线。执行: $ dbus-send --session --type=method_call --print-reply --dest=org.fmddlmyy.Test /TestObj org.fmddlmyy.Test.Basic.Add int32:100 int32:999 输出为: method return sender=:1.21 -> dest=:1.22 reply_serial=2 int32 1099 dbus-monitor的相关输出包括: signal sender=org.freedesktop.DBus -> dest=(null destination) path=/org/freedesktop/DBus; interface=org

DBUS

血红的双手。 提交于 2019-12-06 07:15:15
dbus基本接口 /* * Example low-level D-Bus code. * Written by Matthew Johnson <dbus@matthew.ath.cx> * * This code has been released into the Public Domain. * You may do whatever you like with it. */ #include <dbus/dbus.h> #include <stdbool.h> #include <unistd.h> #include <stdio.h> #include <stdlib.h> /** * Connect to the DBUS bus and send a broadcast signal */ void sendsignal(char* sigvalue) { DBusMessage* msg; DBusMessageIter args; DBusConnection* conn; DBusError err; int ret; dbus_uint32_t serial = 0; printf("Sending signal with value %s/n", sigvalue); // initialise the error value dbus_error

DBUS入门笔记

不问归期 提交于 2019-12-06 07:14:55
DBUS简介 学习网址: https://dbus.freedesktop.org/doc/dbus-tutorial.html DBUS三层: libdbus,消息分发的守护进程Dbus daemon,应用程序框架的封装库或绑定 (For example, libdbus-glib and libdbus-qt) libdbus仅仅支持one-to-one connection 关于传递,对象是message = header (filed) + body (param) header常包括body中的数据类型信息。 DBUS的应用场景: 同一会话中的桌面应用程序 桌面应用程序和OS(系统级别的守护进程) DBUS可以解决传统Linux IPC不能应付的远端系统管理员问题: A gap in current Linux support is that policies with any sort of dynamic "interact with user" component aren't currently supported. For example, that 's often needed the first time a network adapter or printer is connected, and to determine appropriate

错误:dbus/dbus.h:No such file or directory

久未见 提交于 2019-12-06 07:14:39
在运行dbus测试程序时出现错误: dbus/dbus.h:No such file or directory 编译 编译时加入 pkg-config --cflags dbus-1 和 pkg-config --libs dbus-1 CC = gcc all : client % . o : % . c gcc - Wall - c `pkg - config -- cflags dbus - 1 ` $ ^ - o $@ client : client . o $ ( CC ) client . o - o client `pkg - config -- libs dbus - 1 ` . PHONY : clean clean : rm * . o add - server add - client 如果还是提示错误,可以尝试以下方法,已经安装了dbus(没有请安装) 安装dbus sudo yum install dbus-devel (centos系统) 查找dbus.h位置 $ sudo locate dbus.h 如果提示错误,执行 $ sudo updatedb /usr/local/include/dbus-1.0/dbus/dbus.h /usr/include/dbus-1.0/dbus/dbus.h dbus默认安装到了dbus-1.0位置

【8】初识dbus和glib

雨燕双飞 提交于 2019-12-06 07:14:19
从接触dbus到现在已经过去了两个星期了,至于为什么要学这个,当然是一些需求所导致,所以说作为一个程序员具备一定的自我学习能力还是必要的,还有就是要硬着头皮看英文文档,能大概的明白写的什么意思就行,实在看不懂可以翻译一下就行。 什么是dbus dbus就是一种进程间的通信机制,dbus主要的概念就是总线,进程注册到总线之后,就可以利用总线来进行通信了。 dbus的一些基本概念 dbus是三层架构的进程通信系统: 接口层:由libdbus提供。 总线层:由D-Bus总线守护进程提供的。总线可以分为系统总线和会话总线。 包装层:包装层一系列基于特定应用程序框架的Wrapper库。 对象:对象是封装后的匹配器与回调函数,它以对等(peer-to-peer)协议使每个消息都有一个源地址和一个目的地址。这些地址又称为对象路径,或者称之为总线名称。 消息:D-Bus的消息分为信号(signals)、方法调用(method calls)、方法返回(method returns)和错误(errors)。 服务:服务(Services)是进程注册的抽象。 关于这些理论上的东西,直接搜索一下就可以了解了,其实刚开始看的时候,感觉也是迷糊的,啥也不懂,没办法,这时候就得硬着头皮继续查看相关资料了,计算机里面的这些东西,都很抽象,想要搞懂,就得花时间硬着头皮去看,去理解,没办法。