首页 > 解决方案 > 使用 L2CAP 通道 XCODE 发送 BLE 数据包

问题描述

按住按钮时,我们正在使用 l2cap 通道发送数据包,而我们释放按钮时,我们要发送的最后一个数据包正在以 4 秒的延迟时间间隔发送。我们如何避免延迟并使用 l2cap 通道立即发送数据包?

经过观察,我们发现延迟是由于在循环按下按钮时发送的先前数据包正在执行。如何避免这种延迟并在按钮释放时立即发送最后一个数据包?

代码片段:

//on release button
 - (void)onRelease
{
    dispatch_async(dispatch_get_main_queue(), ^{
        [self sendStreamData:(NSString*)@"A"];
});
}

//Send data packet
(void)sendStreamData: (NSString*)onpress {
    NSString *timervalue = [[[timer userInfo] objectForKey:@"param1"] integerValue];
    const char *c = [[[timer userInfo] objectForKey:@"param1"] UTF8String];
    check
    if (![self->outputStream hasSpaceAvailable]){
        NSLog(@"No space available, skip");
        return;
    }

    const char *c = [onpress UTF8String];
    NSData* data = [NSData dataWithBytes:c length:onpress.length];
    NSInteger res = [self->outputStream write:[data bytes] maxLength:[data length]];
    NSLog(@"OutputStream response is %@", self->outputStream);

    if (res == onpress.length){
        // track
        [self trackData:(int)[data length]];
        NSString *outputData = [[NSString alloc] initWithData:data encoding: NSUTF8StringEncoding];
        NSLog(@"Sent OutputStream is %@", outputData);
    }
}

标签: xcodebluetoothbluetooth-lowenergyl2cap

解决方案


推荐阅读