15

iOS(iPhone 或 iPad)应用程序能否同时具有核心蓝牙(BTLE)中央管理器和外围管理器对象?

它们可以异步操作,还是主应用程序线程需要让它们共享(来回切换)。

共享概念算法是:禁用外设管理器,启用中央管理器并执行中央功能,然后禁用中央管理器,启用外围管理器并执行外围功能(即发送自动通知,并等待和响应远程特征命令), 重复...

背景细节:我们有一个本地系统,有多个 iOS 设备和多个非 iOS 设备,需要通过 BTLE 相互通信。非 iOS 设备均使用 Broadcom BCM20732 蓝牙 LE 芯片。但是硬件还没有准备好,所以我正在使用 iOS 设备来模拟非 iOS,这需要同时具备中央和外围功能,即。1. 作为中心定期询问系统中的多个其他非 iOS 设备。2. 作为外围设备响应来自 iOS 用户界面设备的数据请求。

4

2 回答 2

14

我让它工作了。我刚开始使用 Apple“BTLE 中央外围设备传输”,然后首先删除了它所具有的 -35 db 错误(搜索“-35”然后删除 if(){ return }),然后我结合了两个 central.m和 peripheral.m 到单个 UIViewController .m 文件中,添加 UISwitch 以选择两个服务 UUID 之一,并修改外围发送器以自动增加文本字段(在将其初始化为 ASCII '0' 之后)。

我有两个 iPad mini 连续不断地将递增的数字发送到另一侧。它进行了超过 900 次传输,然后挂起。但我看到苹果“BTLE cp transfer”总是在几分钟后挂起,需要重新启动 iPad 才能继续。我在 iPad 和循环电源上都结束了应用程序,重新启动了应用程序,它们达到了 1600 增量,然后挂起。

为了解决这个问题,按照 Abo 的建议,我将添加资源控制以防止中央管理器和外围管理器同时连接。

于 2013-06-10T18:51:23.180 回答
5

是的,他们可以,但如果您的手机现在处于外围模式并已连接,您必须确保它在切换到中央模式并尝试与其他设备连接之前断开连接,反之亦然。

于 2013-06-08T08:15:36.517 回答