如何高效率的使用DBUS作client/server架构

Archive for the Linux Category --Dbus study Archive for the Linux Category来自: http://www.robotercoding.com/blog/?cat=3 « Previous EntriesAug 20 2007 d-bus的封装Posted by: roboter in 架构, Linux d-bus系统相当庞大,源代码有100多文件,大小差不 阅读详情


在嵌入式系统中使用dbus主要有两个方面的用途:
1:进程间通信
2:实现client/server模式;

2也是1的具体表现形式;

包括dbus自带的例子,都是采用dbus对数据的封装,实现client/server模式的,
缺点有二:
1 一个API要定义一个xml接口描述
2 数据封装非常复杂,非常不利于以后接口的扩展;

为了客服上面的缺点,提高可扩展性和效率,可以这样做:
如果一个应用分为client,server两端的话,要高效率的实现client/server之间
的通信,可以采用如下方式:


第一步:定义一个通用的API xml 接口描述,暂命令为dbus_general.xml

<?xml version="1.0" encoding="UTF-8" ?>
<node name="/org/freedesktop/DBus/General_api">
  <interface name="org.freedesktop.DBus.general_api">
    <method name="client_request">
      <annotation name="org.freedesktop.DBus.GLib.CSymbol" value="__client_request_cb"/>
      <arg type="i" name="action_id" direction="in" />   //这个地方就是不同API的ID
      <arg type="i" name="input_int" direction="in" />   //这个参数可以用,也可以不用
   <arg type="ay" name="input_garray" direction="in" />  //这个Garray用来从client传递数据,包括复杂的数据结构到server
   <arg type="i" name="outut_int" direction="out" />    //这个可以用,也可以不用
   <arg type="ay" name="output_garray" direction="out" /> //这个Garray用来从server侧传回

DBUS 实现c/s 全双工 前一篇文章主要介绍了dbus调用的流程,及简单的单工通信,这里记录下双工通信的流程,供后续参考。 定义dbus名称,路径,接口,方法等。 #define TEST_DBUS_A "methodA" #define TEST_DBUS_B "methodB" #define TEST_DBUS_INTERFACE "com.test.hello" #define TEST_DBUS_OBJPATH "/com/test/hello" #define TEST_DBUS_NAME "com.test.hell 阅读详情

相关推荐

通信协议缓冲区管理全景:TCP、UDP、ZMQ、DBus、SSL、SOME/IP通讯协议的缓冲区解析...

通信协议,是指在网络中进行数据交换的一组规则或标准。它们就像人类语言一样,定义了消息应该如何被格式化、传输和接收。在技术的世界里,这些协议就像是沟通的桥梁,连接着不同的设备和应用。

探索C++编程的奥秘,分享深入的技术见解和实践,旨在激发读者创造力与解决问题的思维。 1687

如何高效的利用dbus做client-server架构

在嵌入式系统中利用dbus重要有两个方面的用处: 1:历程间通信 2:告终client/server形式; 2也是1的翔实出现形式; 包括dbus自带的例子,都是批准dbus对数据的封装,告终client/server形式的, 缺点有二: 1 一个API要定义一个xml接口描写 2 数据封装极其混杂,极其不利于尔后接口的伸展; 为了客服上面的缺点,长进可伸展性和效率,能

shanzhizi的专栏 2685

dbus总线通信的原理和使用

1.什么是D-Bus D-Bus是一种高级的进程间通信机制,它由freedesktop.org项目提供,使用GPL许可证发行。D-Bus最主要的用途是在Linux桌面环境为进程提供通信,同时能将Linux桌面环境和Linux内核事件作为消息传递到进程。注册后的进程可通过总线接收或传递消息,进程也可注册后等待内核事件响应,例如等待网络状态的转变或者计算机发出关机指令。目前,D-Bus已被大多数Linux发行版所采用,开发者可使用D-Bus实现各种复杂的进程间通信任务。 2.D-Bus的相关概念 D-Bu

yang1fei2的博客 8807

IMU自动校准论文与代码实现A Robust and Easy to Implement Method for IMU Calibration without External Equipments

PART1 摘要 低成本的惯性测量单元会受到系统误差的影响,系统误差由标度因子和轴偏差造成,这会降低位置和姿态估计的精度。 本文提出了一种无需任何外部设备的,鲁棒性强,易于实现的IMU校准方法。 该程序基于多放置方案,再估计传感器偏差的同时,为加速度和陀螺仪三轴的尺度和偏差系数。我们的方法只需要用手移动传感器,并将其放置在一组不同的静态位置(姿态)。 论文描述了一个鲁棒的快速校准协议,...

qq_29313679的博客 5308

蓝牙6.0的‘新雷达’:Channel Sounding信道探测,真能比UWB更香吗?

本文探讨了蓝牙6.0的Channel Sounding信道探测技术在室内定位领域的应用潜力。通过与UWB技术的对比分析,揭示了其在成本、功耗和兼容性方面的优势,特别是在智能门锁、物品追踪等场景中的商业价值。Channel Sounding技术不仅具备亚米级精度,还能通过现有蓝牙设备实现零边际成本部署,为物联网应用提供了新的解决方案。

weixin_29288313的博客 333

LiteOS | 基于LiteOS的智慧农业案例实验分享

分享一个基于小熊派+LiteOS+华为云的案例实验(智慧农业)。 实验框图 相关模块简介 1、STM32L431RCT6 2、LiteOS LiteOS是华为开发的轻量级实时操作系统: LiteOS源码GitHub仓库链接: https://github.com/LiteOS/LiteOS 其源码一级目录结构如下: 其内核包括任务管理、内存管理、时间管理、通信机制、中断管理、队列管...

嵌入式大杂烩 5991

告别环境配置烦恼:用Conda一键搞定GATK4、samtools、fastp等生信分析全家桶

本文介绍如何利用Conda快速搭建包含GATK4、samtools、fastp等工具的生物信息学分析环境,解决软件安装和版本冲突问题。通过详细的配置步骤和实战案例,帮助研究者十分钟内完成重测序分析全家桶的环境配置,显著提升上游分析效率。

weixin_30753873的博客 335

语义通信实战:跳过“比特”保“语义”,手把手构建轻量级图像压缩重建网络(基于PyTorch)

本文详细介绍了基于PyTorch的轻量级语义通信系统LICRnet的实现,专注于图像压缩重建中的语义信息保留。通过深度可分离卷积、可变窗口多尺度注意力等创新技术,显著降低计算量并提升性能,特别适用于无人机巡检、远程医疗等物联网场景。文章包含完整的代码实现、训练策略及部署优化方案。

weixin_27697385的博客 221

从原理到代码:一文搞懂LFM信号脉冲压缩在Matlab中的实现

本文深入解析了LFM信号脉冲压缩的核心原理与Matlab实现方法。从线性调频信号的数学表达、时频特性入手,详细讲解了如何构建多目标回波仿真环境,并重点阐述了匹配滤波器的频域实现算法。文章提供了完整的、可运行的Matlab代码,涵盖信号生成、噪声添加、脉冲压缩及性能评估等关键步骤,并探讨了加窗处理、参数选择等工程实践中的考量,为雷达信号处理的学习与实践提供了清晰指南。

weixin_29063035的博客 415

【华为OD机试真题】45、 分糖果 | 机试真题+思路参考+代码解析(C++、Java、Py、JS)

### 🎃题目描述 >小明从糖果盒中随意抓一把糖果,每次小明会取出一半的糖果分给同学们。 >  当糖果不能平均分配时,小明可以选择从糖果盒中(假设盒中糖果足够)取出一个糖果或放回一个糖果。 >  小明最少需要多少次(取出、放回和平均分配均记一次),能将手中糖果分至只剩一颗。

正在更新最新华为OD机试2025B卷,提供OJ在线刷题 1290

Python全栈入门到实战【基础篇 19】函数进阶:默认参数、递归函数与偏函数应用

本文深入探讨Python函数进阶的三大核心知识:默认参数、递归函数与偏函数。针对默认参数,揭示了可变对象作为默认值的陷阱,提出使用None替代的方案;解析递归函数的三大要素(终止条件、递归调用、问题拆解),并通过阶乘和斐波那契数列示例演示实现方法,同时给出尾递归和缓存装饰器两种优化策略;最后介绍偏函数如何通过functools.partial固化参数简化调用。这些技巧能显著提升函数在复杂场景下的灵活性与复用性,帮助开发者编写更高效的Python代码。

那些看似不起波澜的日复一日,会在某天让你看到坚持的意义 3864

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

上一篇: 关于同一个进程调用dbus接口 dbus_g_bus_get () 导致程序崩掉的原因初探。
下一篇: valgrind 做常态内存泄露的检查
testhw
博客等级 码龄19年 172粉丝 183原创
评论 8
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值