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);
        }
    }
}
标签:

给我留言

Copyright © ios教程,苹果粉丝,苹果资讯,ios入门教程,ios学习,ios程序员,ios视频教程,ios粉丝网 保留所有权利.   Theme  Ality

用户登录