A-A+
Swift 分包发送蓝牙数据
//分包发送蓝牙数据 是蓝牙单次可处理最大字节长度 let BLE_SEND_MAX_LEN = 20; func sendMsgWithSubPackage(msgData:NSData) {
for i in stride(from: 0, to: msgData.count, by: BLE_SEND_MAX_LEN) {
// 预加 最大包长度,如果依然小于总数据长度,可以取最大包数据大小
if ((i + BLE_SEND_MAX_LEN) < msgData.count) {
let rangeStr = NSString(format: "%i,%i",i, BLE_SEND_MAX_LEN) as String
let subData = msgData.subdata(with: NSRangeFromString(rangeStr))
self.peripheral.writeValue(subData as Data, for: self.writeCharacteristic, type: CBCharacteristicWriteType.withoutResponse)
//根据接收模块的处理能力做相应延时
usleep(20 * 1000);
} else {
let rangeStr = NSString(format: "%i,%i",i, msgData.count-i) as String
var subData : Data! = nil;
if msgData.count <= BLE_SEND_MAX_LEN {
subData = msgData as Data;
} else {
subData = msgData.subdata(with: NSRangeFromString(rangeStr))
}
if nil != subData && subData.count > 0 {
self.peripheral.writeValue(subData as Data, for: self.writeCharacteristic, type: CBCharacteristicWriteType.withoutResponse)
}
usleep(20 * 1000);
}
}
}