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

iOS(iPhone或iPad)应用程序是否可以同时拥有核心蓝牙(BTLE)中央pipe理器和外围pipe理器对象?

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

共享概念algorithm是:禁用外设pipe理器,启用中央pipe理器并执行中央function,然后禁用中央pipe理器,启用外设pipe理器,并执行外设function(即发送自动消息,等待并响应远程特征命令),重复…

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

我得到了它的工作。 我刚刚开始与苹果“BTLE中央外设转移”,然后首先删除了它的-35分贝的错误(search“-35”,然后删除if(){return}),然后我把两个central.m和peripheral.m合并成一个单独的UIViewController .m文件,添加一个UISwitch来select两个服务UUID中的一个,并修改外围发送者自动增加文本字段(在初始化为ASCII'0'之后)。

我有两个iPad迷你的不断发送递增号码到另一边。 它达到了超过900转,然后挂起。 但是我看到苹果“BTLE cp transfer”总是在几分钟后挂起,需要重启iPad才能继续。 我结束了应用程序在iPad和循环的权力,重新启动的应用程序,他们达到1600增量,然后挂起。

为了解决这个问题,我将增加资源控制,以防止中央和外围pipe理人员按照Abo的build议同时连接。

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