当前位置: 首页 > news >正文

MeeGo开发“.NET研究”进程通信核心 DBus调试工具

  我们讲过用QML语言开发MeeGo应用程序,在MeeGo开发中,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系统里的已有应用进行通信。可以通过如下方法设置该值.


  
1 . export `tr ‘\ 0 ′ ‘\n’
<
/ proc / $(pidof duihome) 上海企业网站制作="color: #000000;">/ environ | grep DBUS_SESSION_BUS_ADDRESS`

  工具1:dbus-send/dbus-monitor

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

  工具2:qdbus

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


  
1 . qdbus [ -- system] [ -- literal] [servicename] [path] [method] [args]
2 . servicename the service to connect to (e.g., org.freedesktop.DBus)
3 . path the path to the object (e.g., / )
4 . method the method to call, with or without the 上海企业网站设计与制作n style="color: #0000ff;">interface
5 . 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的名字和对应的对象路径,则该路径上的方法,信号和可用的属性都会被列出来.

  qdbus 用法举例

 上海网站建设 列出session bus的所有service


  
1 . $ qdbus

  上海徐汇企业网站制作列出system bus的所有service


  
1 . $ qdbus system

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


  
1 . $ qdbus com.nokia.meego - im - uiserver

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


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

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


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

  工具3:d-feet

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


  
1 . #zypper install d - feet

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


  
1 . #d - feet

Dfeet-dbus1

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

Dfeet-dbus2

 上海闵行企业网站设计与制作 如要如果该method需要参数,则会弹出参数选项框 

Dfeet-dbus3

  工具4:qdbusviewer

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


  
1 . #zypper install qt - devel - tools上海徐汇企业网站设计与制作

  要查看系统里有哪些已经注册的d上海闵行企业网站制作bus service, 运行qdbusviewer命令


  
1 . #qdbusviewer

Qdbusviewer

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

Qdbusviewer_call

  结语

  有了这些工具,你不仅可以很方便的知道系统里的服务是不是正常被注册运行了。还可以无中生有的产生一些事件,比如模拟短信收到,或者电话拨入等。这样你在模拟器上也可以调试一些本啦需要硬件支持的功能了。

相关文章:

  • 偶有所感
  • MPLS 原理详解
  • [翻译]WP7 QuickStart-第八篇-屏幕方向
  • WISEGATE:SIEM的最佳实践讨论
  • 庆祝自己的BLOG之旅开启
  • Silverlight 苹果风格按钮Mac OS Style 实现的更新版
  • C# CHECKEDLISTBOX控件用法总结(怎样得到多选的值)
  • CDP
  • 浅谈电池和充电方面的知识
  • Android 开发 数据结构理解 队列和栈 分析及实现
  • LINQ:是BUG还是~~~
  • JQuery之ContextMenu(右键菜单)
  • cisco路由器乱码的解决办法
  • 这个季节的忧伤,点到为止
  • DHCP Snooping + Dynamic ARP Inspection配置
  • [Vue CLI 3] 配置解析之 css.extract
  • 【EOS】Cleos基础
  • 【从零开始安装kubernetes-1.7.3】2.flannel、docker以及Harbor的配置以及作用
  • classpath对获取配置文件的影响
  • ES学习笔记(10)--ES6中的函数和数组补漏
  • javascript 哈希表
  • JavaScript创建对象的四种方式
  • Kibana配置logstash,报表一体化
  • Laravel 菜鸟晋级之路
  • LeetCode29.两数相除 JavaScript
  • Mocha测试初探
  • python大佬养成计划----difflib模块
  • React-redux的原理以及使用
  • Spark学习笔记之相关记录
  • TypeScript实现数据结构(一)栈,队列,链表
  • uva 10370 Above Average
  • Vue.js源码(2):初探List Rendering
  • Webpack 4x 之路 ( 四 )
  • 从零搭建Koa2 Server
  • 记一次用 NodeJs 实现模拟登录的思路
  • 前端临床手札——文件上传
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • 使用 5W1H 写出高可读的 Git Commit Message
  • 手机app有了短信验证码还有没必要有图片验证码?
  • MiKTeX could not find the script engine ‘perl.exe‘ which is required to execute ‘latexmk‘.
  • 【运维趟坑回忆录 开篇】初入初创, 一脸懵
  • ​ssh免密码登录设置及问题总结
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • (zt)基于Facebook和Flash平台的应用架构解析
  • (八十八)VFL语言初步 - 实现布局
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (附源码)ssm考试题库管理系统 毕业设计 069043
  • (附源码)计算机毕业设计SSM保险客户管理系统
  • (经验分享)作为一名普通本科计算机专业学生,我大学四年到底走了多少弯路
  • (十六)一篇文章学会Java的常用API
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • .[hudsonL@cock.li].mkp勒索加密数据库完美恢复---惜分飞
  • .bat批处理(一):@echo off
  • .net core 6 使用注解自动注入实例,无需构造注入 autowrite4net