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/