iOS(iPhone或iPad)应用可以同时拥有核心蓝牙(BTLE)中央管理器和外围管理器对象吗?
它们可以异步操作,还是主应用程序线程需要让它们共享(来回切换)。
共享概念算法将是: 禁用外设管理器,启用中央管理器并执行中央功能, 然后, 禁用中央mgr,启用外设mgr,并执行外围功能(即发送自动发送功能,等待并响应远程特征命令), 重复...
背景技巧细节: 我们有一个本地系统,有多个iOS设备和多个非iOS设备,需要通过BTLE进行互通。 非iOS设备均使用Broadcom BCM20732蓝牙LE芯片。 但硬件还没有准备好,所以我使用iOS设备来模拟非iOS,这需要同步中央和外围功能,即。 1.充当集中询问系统中多个其他非iOS设备的核心。 2.充当外围设备以响应来自iOS用户界面设备的数据请求。
答案 0 :(得分:13)
我得到了它的工作。我刚刚开始使用Apple“BTLE中心外设转移”,然后首先删除它所拥有的-35 db错误(搜索“-35”然后删除if(){return}),然后我将两者都结合起来。并将peripheral.m转换为单个UIViewController .m文件,添加一个UISwitch来选择两个服务UUID之一,并修改外设发送器以自动递增文本字段(在初始化为ASCII'0'之后)。
我连续两个iPad mini,每个都将递增的号码发送到另一侧。它获得了超过900次转移然后挂起。但我看到Apple“BTLE c p transfer”在几分钟后总是挂起,要求iPad重启才能继续。我以iPad和循环电源结束应用程序,重新启动应用程序,然后他们增加了1600个增量,然后挂起。
为了解决问题,我将根据Abo的建议,添加资源控制以防止中央和外围管理人员同时连接。
答案 1 :(得分:5)
是的,他们可以,但如果您的手机现在处于外围模式且已连接,则必须确保在切换到中央模式并尝试与其他设备连接之前断开连接,反之亦然。