我正在工作的iOS应用程序(目标-C)的蓝牙手表使用BLE(CoreBluetooth),我的手表有关贸总协定蓝牙配置文件,iOS应用程序的最低支持来自iOS7。
我想知道如何使用核心蓝牙框架在iOS设备和外部设备之间进行数据传输。
实际上,我正在进行蓝牙手表固件升级部分的工作,我的iOS应用程序将在收到任何更新时从web服务获取固件代码(二进制数据),然后将数据发送到蓝牙手表。
我搜索并得到了一个苹果示例代码: BTLE_Transfer:转让/介绍/Intro.html
我想示例代码在我的例子中没有用,因为它有中央和外围代码,并且在两个iOS设备之间传输数据。
除了这个用于BLE数据传输的示例代码之外,还有其他方法吗?或者只有这个示例代码才有可能?(如果是的话,怎么做?)
更新:
我的设备有一个服务,它有两个特点,一个用于读,一个用于写。
根据我的工作流程,使用写特性:
写值:NSDATACHUNK特征:WRITECHARACTERISTIC类型:CBCharacteristicWriteWithResponse;
MYDEVICEINSTANCE readValueForCharacteristic:READCHARACTERISTIC;
My查询:
我想确认对iOS应用程序的外部设备通信所允许的最大限制,我从步骤1开始,使用writeValue从iOS应用程序发送NSDATACHUNK到BLE Watch。
我已经测试过,我可以发送NSDATACHUNK的MTU=255大小和BLE手表正在成功地接收。
我在"Apple示例代码: BTLE_Transfer“中发现他们使用的是MTU=20,但是,我猜示例代码是用于iOS设备到iOS设备通信的(如果我错了,请纠正我)。
那么,如果我使用MTU=250在我的iOS应用程序中进行BLE通信,苹果会拒绝我的申请吗?
或者有谁可以说,苹果对MTU允许的最大限制是什么?
每一个建议都会受到赞赏,
提前感谢
发布于 2015-03-30 14:15:37
您可以使用您想要的任何MTU大小(最多512)。
连接将使用的值始终是您和他们之间的最小值。
因此,例如,如果他们想使用MTU等于,比如说,50,那么如果您的MTU低于50,那么将使用这个MTU;否则,您选择高于50的值就没有意义,因为50被选中了。
发布于 2014-11-03 13:57:07
连接你的设备后,你的应用程序应该写一个“特色”,用:
[YOURDEVICEINSTANCE writeValue:NSDATAVALUE forCharacteristic:YOURCHARACTESITIC type:CBCharacteristicWriteWithResponse];
我们花了很多时间使用我的自定义BLE设备,我的结论是:
发布于 2016-06-27 19:03:32
在iOS设备上,可用的mtu是20,这意味着每次将数据设置为BLE外围设备时,都可以发送20字节的数据。如果您想要进行20字节以上的通信,您必须自己处理,引用APPLE外围样本代码
在您的情况下,问题不是iOS设备的mtu,而是外部的BLE设备,因为您的BLE设备是外围设备。因为你的BLE设备能够传输大量的数据- 255字节,所以拥有这个mtu是很好的。
https://stackoverflow.com/questions/26712694
复制相似问题