技术标签: Bluetooth bluez linux BLE 蓝牙 计算机网络
众所周知,现在很多设备开始用上类蓝牙4.0技术,在linux上的蓝牙官方协议即为Bluez了。
但是关于BlueZ的文档和学习资料却非常少。
我最近需要在nao机器人的操作系统上(linux的gentooo发行版)接收ibeacon的信息(通过接收蓝牙4.0的数据报,然后进行解析)
然而因为各种原因我需要对Bluez的一些工具进行移植,C++蓝牙编程是我唯一的解决方案,经过学习和折腾之后,总算是有了些头绪,接下来将我的学习经验分享给大家,水平有限,欢迎大家指正。
首先贴出一些蓝牙的学习资源:
Bluez官网:http://www.bluez.org/,可查阅的资料非常少,但是源码都推荐在这个网站下载
Bluetooth的wiki(了解协议组成很有帮助):http://en.wikipedia.org/wiki/Bluetooth#Bluetooth_protocol_stack
Howto run Bluez:http://www.stlinux.com/kernel/bluetooth/how-to-run-BlueZ关于运行Bluez工具的一些说明不全
用hcitool以及hcidump解析ibeacon蓝牙数据报(对解析BLE设备的数据非常参考价值):
Linux下Bluez的编程实现:(国内比较详细介绍Bluez的博客,赞一个)
http://blog.csdn.net/kobbee9/article/details/7751372
实战LinuxBluetooth编程:(国内关于Bluez很详细的博客,很赞):
http://blog.sina.com.cn/s/blog_602f87700100e0vb.html
AnIntordunction to BluetoothProgramming:(国外对蓝牙编程介绍很详细的博客,虽然比较老,但非常赞,很有参考意义,包括了C和python语言)
http://people.csail.mit.edu/albert/bluez-intro/c33.html
Hcidump使用:http://blog.csdn.net/newtonnl/article/details/8073559
这是个非常好的工具,可以获取原始的蓝牙数据报,不过需要先用lescan工具开启le模式
Bluez的移植和配置:http://blog.chinaunix.net/uid-20723653-id-1886857.html
Ubtuntu和BlueZBLE:http://wv1124.iteye.com/blog/2025637
AndroidBluetooth介绍:http://blog.csdn.net/xubin341719/article/details/38584469
pybluez(python蓝牙编程类库):https://code.google.com/p/pybluez/
声明:本文为原创文章,发表于nebulaf91的csdn博客。欢迎转载,但请务必保留本信息,注明文章出处。 本文作者: nebulaf91 本文原始地址:http://blog.csdn.net/u011508640/article/details/72815981最大似然估计(Maximum likelihood estimation, 简称MLE)和最大后验概率估计(Maximum a pos...
http://www.ibm.com/developerworks/cn/linux/l-pow-debug/简介调试程序有很多方法,例如向屏幕上打印消息,使用调试器,或者只需仔细考虑程序如何运行,并对问题进行有根有据的猜测。在修复 bug 之前,首先要确定在源程序中的位置。例如,当一个程序产生崩溃或生成核心转储(core dump)时,您就需要了解是哪行代码发生了崩溃
著名端口UNIX 特有的端口注册的端口数据报传递协议端口Kerberos(工程 Athena/MIT)端口未注册的端口著名端口端口号码 / 层名称注释1tcpmuxTCP 端口服务多路复用5rje远程作业入口7echoEcho 服务
(恶心的需求)表头要求特殊的字符串(有下标的那种)。本来去掉了表头,将表格的第一行作为表头,这样就可以在表格上添加QLabel控件实现。这样的弊端就是没有了表头的鼠标拖动的功能。看到QHeaderView有setIndexWidget ( const QModelIndex & index, QWidget * widget )这个函数,所以采用这个方式。效果如下:代码如下: QStrin...
最近得空,就去一些招聘网站做了些面试题,为方便大家共同学习,Java API相关的就在这篇博客里记录一下,以后有空会持续更新,大家有更好的答案也可以留言告诉我。 面试题-Java算法篇 传送门 面试题-Android篇 传送门1. HashMap和Hashtable的区别Hashtable 继承自 Dictiionary 而 HashMap继承自AbstractMap。HashMap允许将n
本文描述了Linux上使用消息队列进行进程间通信的方法,源码和验证结果。试验表明,消息队列用于异步通信非常方便。
301永久重定向,即浏览器只需要第一次请求拿到长链接后,下次再去访问这个短链就不会向短网址服务器请求了,而是直接从浏览器的缓存里拿。302临时重定向,即每次访问短链都会去请求短网址服务器(除非响应中用Cache-Control或Expired暗示浏览器缓存),这样就便于server数据监控,所以虽然用302会给server增加一点压力,但明显是利大于弊的。根据短链获取长链或者根据长链获取短链使用类似HashMap的get算法,先根据HashCode查询,然后再根据短链文本查询。...
1.有空格的字符串 拆成数组 string str = System.Text.RegularExpressions.Regex.Replace(headProducts, @"\s+", ","); string[] Products= str.Split(',');2.生成日志 public void Log(string message) ...
rabbitmqctl list_queuesrabbitmqctl purge_queue kafka_queue (不推荐)使用reset方式重置rabbitmq即清空掉rabbitmq所有的队列数据和配置(划重点)rabbitmqctl stop_apprabbitmqctl resetrabbitmqctl start_app...
U-Boot HW Watchdog概述include/watchdog.h文件中有宏定义#ifdef CONFIG_HW_WATCHDOG #if defined(__ASSEMBLY__) #define WATCHDOG_RESET bl hw_watchdog_reset
项目中打AssetBundle一般会根这两个文件夹挂勾。对比分析: StreamingAssets:可读取、不可写入;Assets根目录下的StreamingAssets文件夹,文件夹内容不压缩打包到apk、ipa包内。 PersistentData:可读取、可写入;沙盒目录,应用程序安装运行后才会出现。 所以由上可以看出,Stre...
事务一个使用 MyBatis-Spring 的主要原因是它允许 MyBatis 参与到 Spring 的事务管理中。而 不是给 MyBatis 创建一个新的特定的事务管理器,MyBatis-Spring 利用了存在于 Spring 中的 DataSourceTransactionManager。一旦 Spring 的 PlatformTransactionManager 配置好了,