單次發(fā)送的數(shù)據(jù)過大,藍牙模塊內(nèi)部接收緩沖區(qū)只有20個字節(jié)
BLE_SEND_MAX_LEN是藍牙單次可處理最大字節(jié)長度
//分包發(fā)送藍牙數(shù)據(jù)
-(void)sendMsgWithSubPackage:(NSData*)msgData
Peripheral:(CBPeripheral*)peripheral
Characteristic:(CBCharacteristic*)character
{
for (int i = 0; i < [msgData length]; i += BLE_SEND_MAX_LEN) {
// 預加 最大包長度抬伺,如果依然小于總數(shù)據(jù)長度搀绣,可以取最大包數(shù)據(jù)大小
if ((i + BLE_SEND_MAX_LEN) < [msgData length]) {
NSString *rangeStr = [NSString stringWithFormat:@"%i,%i", i, BLE_SEND_MAX_LEN];
NSData *subData = [msgData subdataWithRange:NSRangeFromString(rangeStr)];
NSLog(@"%@",subData);
[self writeCharacteristic:peripheral
characteristic:character
value:subData];
//根據(jù)接收模塊的處理能力做相應(yīng)延時
usleep(20 * 1000);
}
else {
NSString *rangeStr = [NSString stringWithFormat:@"%i,%i", i, (int)([msgData length] - i)];
NSData *subData = [msgData subdataWithRange:NSRangeFromString(rangeStr)];
[self writeCharacteristic:peripheral
characteristic:character
value:subData];
usleep(20 * 1000);
}
}
}