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

简介:   我们讲过用QML语言开发MeeGo应用程序,在MeeGo开发中,DBus是MeeGo进程通信的核心。我们简要的看一下MeeGo系统的哪些地方都使用了DBus.  1.从一个应用中启动另一个应用时。

  我们讲过用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

  结语

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

目录
相关文章
|
1月前
|
设计模式 开发框架 JavaScript
基于.NET8 + Vue/UniApp前后端分离的快速开发框架,开箱即用!
基于.NET8 + Vue/UniApp前后端分离的快速开发框架,开箱即用!
|
2月前
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
166 3
|
1月前
|
传感器 人工智能 供应链
.NET开发技术在数字化时代的创新作用,从高效的开发环境、强大的性能表现、丰富的库和框架资源等方面揭示了其关键优势。
本文深入探讨了.NET开发技术在数字化时代的创新作用,从高效的开发环境、强大的性能表现、丰富的库和框架资源等方面揭示了其关键优势。通过企业级应用、Web应用及移动应用的创新案例,展示了.NET在各领域的广泛应用和巨大潜力。展望未来,.NET将与新兴技术深度融合,拓展跨平台开发,推动云原生应用发展,持续创新。
35 4
|
1月前
|
机器学习/深度学习 人工智能 物联网
.NET 技术:引领未来开发潮流
.NET 技术以其跨平台兼容性、高效的开发体验、强大的性能表现和安全可靠的架构,成为引领未来开发潮流的重要力量。本文深入探讨了 .NET 的核心优势与特点,及其在企业级应用、移动开发、云计算、人工智能等领域的广泛应用,展示了其卓越的应用价值和未来发展前景。
61 5
|
1月前
|
存储 缓存 NoSQL
2款使用.NET开发的数据库系统
2款使用.NET开发的数据库系统
|
1月前
|
开发框架 JavaScript 前端开发
2024年全面且功能强大的.NET快速开发框架推荐,效率提升利器!
2024年全面且功能强大的.NET快速开发框架推荐,效率提升利器!
|
2月前
|
JSON C# 开发者
C#语言新特性深度剖析:提升你的.NET开发效率
【10月更文挑战第15天】C#语言凭借其强大的功能和易用性深受开发者喜爱。随着.NET平台的演进,C#不断引入新特性,如C# 7.0的模式匹配和C# 8.0的异步流,显著提升了开发效率和代码可维护性。本文将深入探讨这些新特性,助力开发者在.NET开发中更高效地利用它们。
44 1
|
5月前
|
运维 关系型数据库 MySQL
掌握taskset:优化你的Linux进程,提升系统性能
在多核处理器成为现代计算标准的今天,运维人员和性能调优人员面临着如何有效利用这些处理能力的挑战。优化进程运行的位置不仅可以提高性能,还能更好地管理和分配系统资源。 其中,taskset命令是一个强大的工具,它允许管理员将进程绑定到特定的CPU核心,减少上下文切换的开销,从而提升整体效率。
掌握taskset:优化你的Linux进程,提升系统性能
|
5月前
|
弹性计算 Linux 区块链
Linux系统CPU异常占用(minerd 、tplink等挖矿进程)
Linux系统CPU异常占用(minerd 、tplink等挖矿进程)
192 4
Linux系统CPU异常占用(minerd 、tplink等挖矿进程)
|
4月前
|
算法 Linux 调度
探索进程调度:Linux内核中的完全公平调度器
【8月更文挑战第2天】在操作系统的心脏——内核中,进程调度算法扮演着至关重要的角色。本文将深入探讨Linux内核中的完全公平调度器(Completely Fair Scheduler, CFS),一个旨在提供公平时间分配给所有进程的调度器。我们将通过代码示例,理解CFS如何管理运行队列、选择下一个运行进程以及如何对实时负载进行响应。文章将揭示CFS的设计哲学,并展示其如何在现代多任务计算环境中实现高效的资源分配。

相关实验场景

更多