嵌入式linux中文站向广大嵌入式linux爱好者介绍一下MeeGo的DBus调试工具。

DBus是MeeGo进程通信的核心。我们简要的看一下MeeGo系统的哪些地方都使用了DBus.

1.从一个应用中启动另一个应用时。比如在联系人应用中想要拨打联系人的电话时,MeeGo系统中是通过DBus做进程通信的.

2.Service Framework是基于DBus的。比如你看到一个多媒体文件,点击提交一个"播放文件"的请求,该请求搜索合适的应用来播放该文件.

3.发布和订阅者系统。比如一个屏幕上的显示订阅了电池的电量消息,则在电量变化时通过DBus通知订阅者.

4.NotificaTIon Manager也是基于DBus的。如有短信到达,NoTIficaTIon Manger会进行提示.

5.系统的配置文件如果想在变动的时候通知MeeGo中感兴趣的应用,也需要用到DBus,比如主题的变化等.

6. 蓝牙中间件bluez和电话管理系统ofono的进程通信系统也是基于DBus的。

鉴于DBus的这种重要性,可以说"没有DBus就没有MeeGo"。那么我们也有必要了解一下MeeGo中有哪些DBus工具可以使用,方便在开发过程中遇到问题时更快的定位和解决问题。

准备DBUS_SESSION_BUS_ADDRESS

两个基于DBus的应用要能进行通信,他们需要有同样的DBUS_SESSION_BUS_ADDRESS.MeeGo在启动它的 uxlaunch时,会启动一个DBus的服务进程,可以从这个进程里得到DBUS_SESSION_BUS_ADDRESS的值,而且通过 uxlaunch加载的应用会继承该环境变量,如果是自己从命令行启动的话,那么需要在运行你的应用前设置好该环境变量,才能正常的和MeeGo系统里的已有应用进行通信。可以通过如下方法设置该值.

export `tr '' '\n' < /proc/$(pidof duihome)/environ|grep DBUS_SESSION_BUS_ADDRESS`

工具1:dbus-send/dbus-monitor

这个是随dbus软件包一起发布的工具,封装比较底层,这里不做介绍了。可以在控制台命令行里输入man dbus-send查询详细用法。

工具2:qdbus

该工具是基于Qt的一个命令行工具。用法如下

qdbus [--system] [--literal] [servicename] [path] [method] [args]

servicename the service to connect to (e.g., org.freedesktop.DBus)

path the path to the object (e.g., /)

method the method to call, with or without the interface

args arguments to pass to the call

有两个参数

--system 连接到system-bus(dbus有两种bus,一种是session-bus,一种是system-bus,不加参数默认连接到session-bus.)

--literal 打印原始返回信息

* 如果qdbus命令不带任何参数,将会列出在dbus上所有的service.

* 假如参数里只有service的名字,那么qdbus会列出所有的对象路径.

* 如果qdbus命令给出了service的名字和对应的对象路径,则该路径上的方法,信号和可用的属性都会被列出来.

列出session bus的所有service

$ qdbus

列出system bus的所有service

$ qdbus --system

列出com.nokia.meego-im-uiserver service上所有路径

$ qdbus com.nokia.meego-im-uiserver

列出com.nokia.meego-im-uiserver service上某一路径里可用的方法

$ qdbus com.nokia.meego-im-uiserver /org/maemo/duiinputmethodserver1

调用指定service,指定路径上的某个方法。

$ qdbus com.nokia.meego-im-uiserver /org/maemo/duiinputmethodserver1 org.maemo.duiinputmethodserver1.showInputMethod

工具3:d-feet

d-feet是一个用python写的应用,在MeeGo中可以用如下命令安装

#zypper install d-feet

要查看系统里有哪些已经注册的dbus service, 运行d-feet命令

#d-feet

如要调用指定的method,在对应的method上双击就可以了.

如要如果该method需要参数,则会弹出参数选项框

工具4:qdbusviewer

qdbusviewer则是Qt软件包中的一个开发工具,在MeeGo中可以用如下命令安装

#zypper install qt-devel-tools

要查看系统里有哪些已经注册的dbus service, 运行qdbusviewer命令

#qdbusviewer

如果想调用对应的method,在该方法上点击鼠标右键,可以看到"Call"字样,选择即可

结语

有了这些工具,你不仅可以很方便的知道系统里的服务是不是正常被注册运行了。还可以无中生有的产生一些事件,比如模拟短信收到,或者电话拨入等。这样你在模拟器上也可以调试一些本啦需要硬件支持的功能了。DBus是MeeGo进程通信的核心。我们简要的看一下MeeGo系统的哪些地方都使用了DBus.

dbus 嵌入式linux,MeeGo操作系统DBus调试工具相关推荐

  1. 练一练,嵌入式Linux工程师操作系统面试题三道

    题一,同步和异步有啥区别? 题二,TCP与UDP有啥区别? 题三,进程和线程有啥区别? 题一答案: 同步(Sync):所有的操作都做完,才返回给用户.这样用户在线等待的时间太长,给用户一种卡死了的感觉 ...

  2. linux 农业分析,基于嵌入式Linux的农业信息采集系统设计与研究

    摘要: 精准农业是现代化农业发展的方向,将嵌入式数据采集技术应用到农业生产过程中,既可以节省人力物力成本,还可以提高农作物产量和质量,减少农药污染和提高生产效率.在精准农业生产过程中,需要采集和监测农 ...

  3. 嵌入式linux文件系统

    嵌入式linux文件系统 操作系统中最重要的莫过于"进程管理"和"文件系统"两大部分,而linux从一开始就把外部设备当成是"文件"处理.从 ...

  4. linux mpeg-4,嵌入式MPEG-4解码系统的设计与实现,嵌入式MPEG-4解码系统,嵌入式Linux,视频码流,P...

    介绍了一种嵌入式高图像质量的MPEC-4视频流解码系统.该系统以嵌入式Linux作为操作系统,采用硬解码方式,把IDE接口设备或网络端口输入的MPEC-4视频码流(ES.PS和TS)转换成PAL/NT ...

  5. 嵌入式linux工控板,基于Linux的ARM9工业控制板设计

    摘要: 嵌入式系统是专用的计算机系统,对于嵌入式系统的使用已经深入到社会各个领域.由于其低功耗.低成本.可裁剪的特点,被广泛地应用于工业控制领域.本文结合ARM9架构处理器和嵌入式Linux操作系统进 ...

  6. 单片机、嵌入式Linux开发大学自学路径

    笔者所修读的专业为物联网工程,物联网工程是一门新兴的.热门的专业,其所涉及的学科更是又多又杂,既有计算机方向的编程语言(如C.C++.Java.Python等).数据结构与算法.操作系统.移动端应用开 ...

  7. linux内置usb3.0驱动,基于嵌入式Linux的USB3.0视频驱动的改进

    作 者:孙红[1,2] 秦守文[1] Sun Hong , Qin Shouwen (1. School of Optical--Electrical and Computer Engineering ...

  8. uclinux 嵌入式linux,嵌入式操作系统uCLinux

    嵌入式操作系统是嵌入式系统的灵魂,而且在同一个硬件平台上可以嵌入不同的嵌入式操作系统.比如ARM7TDMI内核,可以嵌入Nucleus.VxWorks.uClinux等操作系统.在此主要对uClinu ...

  9. Linux中使用gcp拷贝报错:dbus.exceptions.DBusException: org.freedesktop.DBus.Error.NotSupported:

    1 在linux中使用gcp拷贝的时候报错 Linux中使用gcp拷贝报错:dbus.exceptions.DBusException: org.freedesktop.DBus.Error.NotS ...

最新文章

  1. 4星|《高手》:会讲故事的科学家的经管社科书读书笔记
  2. 家装强电弱电布线图_强弱电布线注意事项,强弱电布线的4个讲究!
  3. 超级计算机和人比,和超级计算机相比,人类的大脑很弱吗
  4. module_param 在内核编程中的作用
  5. 【数据结构与算法】【算法思想】位图
  6. 最新课程 | openGauss 快速上手指南课程即将开课
  7. opencv函数制作的秒针模型
  8. ios 图片居中裁剪_IOS图片裁剪和小图看大图动画
  9. freebsd mount linprocfs
  10. 编写IOCP时的几个注意事项(Mirosoft)
  11. toad for mysql调试存储过程_【oracle】oracle 调试 存储过程
  12. oracle开发的小技巧(原创)
  13. 计算机三级数据库要安装什么软件,计算机三级数据库技术题库app
  14. 我的世界怎么在网易的服务器里显示皮肤,我的世界怎么显示皮肤,怎么在嗨皮咳嗽上显示自定义皮肤...
  15. Android 安卓动画 补间动画 - 缩放动画
  16. 超星学习通小助手多线程工具Python
  17. 针对WIN10安卓模拟器蓝屏的解决办法
  18. [2019HDU多校第四场][HDU 6617][D. Enveloping Convex]
  19. 计算机科学与技术的应用及优势,解读计算机科学与技术的应用及发展趋向.docx...
  20. 2020,神策数据 +

热门文章

  1. 公司企业邮箱怎么群发邮件?如何在工作中脱颖而出
  2. linux系统怎么远程进服务器
  3. 近期必读的6篇 NeurIPS 2019 的零样本学习(Zero-Shot Learning)论文
  4. jQuery如何向HTML添加指定的内容
  5. css名词解析,小说CSS样式详解
  6. PIXI_锚点图片位控
  7. nodejs+vue+elementui高校体育馆场地预订系统
  8. IP协议 Header Checksum算法
  9. 一文看懂:性能监控神器JavaMelody
  10. Android 局域网扫描