【发布时间】:2013-04-09 19:01:46
【问题描述】:
我正在尝试使用 CoreBluetooth(蓝牙 4.0)通过 iPhone 连接到 Raspberry Pi。我发现了该设备并使用此代码发送了一个连接请求:
if (peripheral != self.foundPeripheral) {
NSLog(@"Try to connect to %@", peripheral.name);
self.foundPeripheral = peripheral;
[self.centralManager stopScan];
[self.centralManager connectPeripheral:peripheral options:nil];
}
没有调用 didConnectPeripheral 或 didFailedToConnectPeripheral。我还确保将 RPi 设置为使用
宣传蓝牙低功耗sudo hciconfig hci0 leadv
但是当我使用
检查活动连接时hcitool con
没有活动连接。我错过了 RPi 的一些设置吗?外设上的name变量也是空白的,是因为我还没有连接吗?
【问题讨论】:
-
您是否运行了某种 GATT 服务器来响应请求?我认为 hciconfig 可能只是打开开关打开广告,但实际上没有响应连接请求。
-
我目前没有运行 GATT 服务器,但必须运行某些东西来处理所有内容是有道理的。稍后我将对其进行研究并再次发表评论。谢谢!
-
我认为有一个测试 GATT 服务器是 Bluez 源代码的一部分,但我找不到它。有一个名为
attrib_server.c的文件似乎有助于这种角色。 -
BlueZ 堆栈的替代方案是使用 BlueGiga 的 BLED112 加密狗。它是可闪存的,具有相当简单的 API 和开发工具包来完成基本任务。您可以使用简单的脚本和 XML 文件在 BLED112 加密狗内部对 GATT 服务器进行编码,并通过 USB 端点与 Linux 进行通信。
标签: raspberry-pi core-bluetooth bluetooth-lowenergy bluez