如何通过BlueZ C库执行蓝牙低能扫描

时间:2014-11-03 14:56:54

标签: linux bluetooth-lowenergy bluez intel-edison

我是使用BlueZ编程蓝牙低功耗的新手。

我想开发一个本机代码c,使用适用于英特尔Edison的蓝牙低功耗BlueZ API扫描附近的设备。 我已经看过this question,但答案并没有真正帮助。有什么建议吗?

4 个答案:

答案 0 :(得分:8)

在Galileo或Edison上使用BlueZ进行BLE编程与任何其他x86平台类似。

爱迪生(和伽利略)通常预装BlueZ库。您只需要使用C代码链接它们,并编程类似于其他x86平台。

完整C code example bluetooth scan with BlueZ, see this link

Please see this example for BLE scan

和HCI API here

答案 1 :(得分:8)

另一个答案的示例对我不起作用,它在扫描中停止...

下一个链接适用于c语言,但在转换包含de rssi信号信息的字节时出错。 https://github.com/glock45/intel-edison-playground/blob/master/scan.c

这一行121:

printf("%s - RSSI %d\n", addr, (**char**)info->data[info->length]);

应该是:

printf("%s - RSSI %d\n", addr, (**int8_t**)info->data[info->length]);

我通过查看btmon程序所在的bluez-version/monitor/*.c内部找到了这些内容。您可以看到数据类型和结构,hcidump.c非常有用,packets.cmain.c也是如此,但有许多要了解的hci套接字

答案 2 :(得分:3)

GattLib library(在询问此问题后创建)具有使用C扫描/连接到BLE设备的工具。

答案 3 :(得分:-1)

intel-edison scan.c代码也适用于Raspberry Pi。

它可以扫描连接到arduino Uno的Adafruit BLE UART好友模块。

在Pi上,需要下载bluez-5.33.tar.gz,libncurses-dev和libbluetooth-dev。

要编译scan.c,请使用

gcc scan.c -lbluetooth -o scan