我是使用BlueZ编程蓝牙低功耗的新手。
我想开发一个本机代码c,使用适用于英特尔Edison的蓝牙低功耗BlueZ API扫描附近的设备。 我已经看过this question,但答案并没有真正帮助。有什么建议吗?
答案 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.c
和main.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