蓝⽛bluez5的开发⽅法及⼊门教程
1 摘要
这篇⽂章的主要⽬的是告诉⼤家应该如何使⽤bluez进⾏开发,由于bluez的⽂档实在太少了,⼊门门槛实在太⾼了,很多⼈⽆从下⼿,准备写⼀个专题记录⼀下⾃⼰学习bluez的过程,分享⼀下bluez的学习⽅法,让⼤家少⾛⼀些弯路。我⽤的平台是君正x2000,蓝⽛库使⽤的是bluez5.54,bluez库是通过buildroot编译出来的。通过BLUEZ我主要开发了⼀个BLE的串⼝服务端demo。这个程序我已经上传到了
有需要的可以⾃⾏下载。
2 开发bluez需要哪些知识?
开发bluez与其他常见的c库有本质的区别。以前我们需要什么功能都是移植⼀个c库,然后调⽤c库⾥⾯的api。⽽bluez却完全不是这
样,bluez编译之后确实也会有⼀个libbluetooth,但是⼀般情况下,我们不会直接使⽤这个库进⾏开发。也不是像⽹上很⽼的教程⽤socket进⾏开发。那⽤什么呢?需要⽤DBUS进⾏开发。所以想要开发bulez,那么DBUS编程是绕不开的,必须要学习。
3 DBUS怎么学?
关于DBUS的教程⽹上有很多很多,我建议⼤家先弄清出⼀些概念,我这⾥不讲DBUS相关的内容,我也讲不明⽩,但是我可以告诉你们学习⽅法。
3.1 ⾸先建议⼤家搜索⼀些DBUS的博客,中⽂教程之类的,了解⼀些基本的概念和术语,参考下⾯的链接:
这是⼀些列⽂章可以供⼤家参考
3.2 DBUS英⽂的官⽅⽂档
中⽂⽂档都是其他⼈开发过程的⼀些教程并不是官⽅⽂档,当我们对⼀些概念了解了以后,⼀定要学习官⽅⽂档,虽然是英⽂,但是准确性⾮常的⾼。
还有⼀个是DBUS的调试软件《d-feet》,⾮常直观,在ubuntu上可以直接安装 sudo apt-get install d-feet,然后直接在命令⾏输⼊d-feet直接启动。
3.2.1 ⼀篇简单的教程《D-Bus Tutorial》
3.3.2 DBUS规范《D-Bus Specification》
这个⾮常重要,就像DBUS的数据⼿册,必须要完全学习,内容不多,建议通读,尤其是变量的类型,对象,接⼝,属性的⼀些概念。
3.3.3 gdbus和dbus-glib区别
⽹上很多⽂章在介绍c语⾔调⽤dbus接⼝时都说使⽤的是 dbus-glib,其实这个库已经被弃⽤了,官⽅的⽂档都说不再使⽤dbus-glib,⽽是使⽤gdbus。
下⾯这个链接是⼀些简单的说明,可以简单读⼀读,了解区别
3.3.4 gdbus接⼝的编程
gdbus的api的⽂档包括两部分内容分别是Low-level D-Bus Support 和 High-level D-Bus Support。⼀般情况下,我们学会了Low-level D-Bus Support 就⾜够编写bluez程序了。
3.3.5 gdbus的变量
gdbus的变量主要使⽤GVariant表⽰,⽽GVariant主要通过下⾯的三个⽂档进⾏学习:
— introduction to the GVariant type system
—
strongly typed value datatype
— varargs conversion of GVariants
4 bluez怎么学?
如果想跳过DBUS直接学BLUEZ是不可能,所以必须先对DBUS有充分的了解。然后在学习bluez。⽽学习bluez必须对蓝⽛规范有⼀定的了解,所以不了解蓝⽛规范的还需⾃⼰去脑补。
看到这⾥直到bluez有多难了吧?所以⽹上基本没有教程,或者有也都是⾮常⽼的教程,只会不了解bluez的⼈⾛更多的弯路。
4.1 bluez的⽂档在哪⾥?
4.1.1 api⽂档
bluez只有官⽅⽂档,没有其他⽂档,不要再去其他地⽅苦苦的教程了,根本就没有。所有bluez的API⽂档都在,在源码的doc⽬录下。
对于我编写的串⼝服务端程序,主要参考的是、、、
4.1.1 参考⽰例代码
对于DBUS接⼝的bluez编程,⽰例代码在源码⽬录的test⽬录下,但是没有c语⾔的代码,都是python语⾔写的,python语⾔对DBUS⽀持⽐c语⾔要完善很多。那如果我们想⽤c语⾔编写,这些代码有⽤吗?
当然有⽤,主要⽤于参考逻辑,⽽不是语⾔。
或者⼤家直接参考我基于c语⾔写的demo,对于⼊门已经很有帮助了
5 其他参考⽂档
对于bluez架构的参考⽂档,可以参考下⾯两个链接
ubuntu使用入门教程
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论