BlueZ 开发学习指南(一) --- D-Bus介绍

本文介绍了Linux蓝牙协议栈BlueZ如何通过D-Bus提供API,强调了D-Bus在进程间通信中的作用,包括消息总线、客户端/服务端概念、对象、接口、方法、信号和属性等基本概念。此外,讨论了D-Bus工具如D-feet和dbus-monitor在开发中的应用,并提到了编程语言和相关API的选择。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

BlueZ 开发学习指南(一) — D-Bus介绍

一、 BlueZ与D-Bus简介

  Linux使用的蓝牙协议栈是Blue Z,不同于我们以往的开发方式,Blue Z提供的API 并不是通过头文件这样的形式, 而是通过D-Bus的方式来提供的。

  Blue Z提供的是Host端的协议栈,Control端的协议往往由专门的芯片厂提供。Host和Control通过HCI接口来通讯。HCI接口可以是UART、USB、SD卡,也可以是虚拟的。

  下图是应用通过D-Bus与Blue Z进行通讯的过程。D-Bus最初是作为一种标准的基于消息的通信系统创建的,以促进个人计算机上X-Windows桌面环境中组件之间的互操作性。但D-Bus比设计桌面GUI组件的通信具有更广泛的实用性。 自Blue Z 5.52版本以来,它已经成为Linux上运行的蓝牙应用程序与BlueZ本身之间的标准接口。了解如何使用D-Bus是再Linux下做BlueZ相关开发的关键。

image-20230712182309115

BlueZ中提供的API都在代码仓库的doc目录中,也可以通过下面链接查看: https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/doc

BlueZ应用程序不直接调用BlueZ函数,也不直接从BlueZ中接收回调。 无需根据BlueZ头文件编译应用程序代码。 D-Bus将应用程序与BlueZ完全解耦, 因此蓝牙应用程序开发工作,主要涉及使用D-Bus API发送或接收消息。

二、 D-Bus的基本概念

消息总线

D-Bus 进程间通信以消息总线为中心。 消息由一个进程放置在总线上,然后沿着总线传输到连接到同一总线的一个或多个其他进程。

有两种类型的消息总线,分别是系统总线和会话总线。

  • 系统总线只有一个实例,BlueZ 使用的就是系统总线。
  • Linux 中每个用户登录会话都存在一个会话总线

image-20230712184716438

客户端、 服务端、 连接

  D-Bus 通信需要将进程连接到消息总线, 连接到总线的进程称为客户端,监听并接受连接的进程称为服务端。 客户端和服务端只针对建立连接的

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

物联网布道师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值