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

Lon*_*ges 9 linux bluetooth-lowenergy bluez intel-edison

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

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

小智 9

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

下一个链接适用于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]);
Run Code Online (Sandbox Code Playgroud)

应该:

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

我通过查看里面的bluez-version/monitor/*.cbtmon程序来找到这些.你可以看到的数据类型和结构,hcidump.c是非常有用的packets.c,而且main.c也一样,但也有很多人了解HCI插座


ash*_*oke 7

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

Edison(和Galileo)通常预装BlueZ库.您只需要使用C代码链接它们,并编程类似于其他x86平台.

有关BlueZ的完整C代码示例蓝牙扫描,请参阅此链接.

请参阅此示例以了解BLE扫描

和HCI API 在这里.

  • 我看过这个代码示例。它可以工作,但它不扫描 BLE 设备——只能扫描普通设备。 (2认同)

小智 5

GattLib库(这是这个问题被问之后创建)的扫描工具/连接到使用C. BLE装置