ios - iOS 可以同时在同一个应用程序上进行中央和外围工作吗?

标签 ios bluetooth core-bluetooth

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

它们可以异步运行吗,或者主应用线程是否需要让它们共享(来回切换)。

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

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

最佳答案

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

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

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

关于ios - iOS 可以同时在同一个应用程序上进行中央和外围工作吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16985891/

相关文章:

java - 将字符串从字节数组转换为 int

Android:普通蓝牙设备可以与 BLE 通信吗?

ios - 位置管理器 :didEnterRegion method is not getting called when screen is off

ios - 在 OSX : IOBluetooth or CoreBluetooth? 上模拟 HID

java - UIImage,Android 中的 imageWithData?

ios - Branch.io 在web端生成链接,然后在app中获取

ios - 如何在带有 M7 协处理器的 iOS 设备中计算行进距离、速度、持续时间?

python - 在 OSX 上连接低功耗蓝牙设备并与之交互

ios - 如何跨 View Controller 访问蓝牙数据?在 xcode 中

ios - Facebook Scores API 不发布开放图表故事