xcode - 使用 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);
}
}
解决方案
推荐阅读
- autodesk-forge - Autodesk Forge 查看器标记大文本被截断
- augmented-reality - 水上增强现实
- javascript - 测试使用 useEffect 钩子和 apollo 的自定义上下文钩子
- python-3.x - 查找元组列表的最大聚合
- c# - 无法调整外部窗口的大小
- css - 闪亮的 sliderTextInput 使所有文本标签可见
- java - 如何使用 DateTimeFormatter 或 Java 中的任何其他库将“2019-07-14T18:30:00.000Z”转换为“2021-09-26 04:30:00 PM”
- ios - NFC NDEF 写入 IOS 编码
- amazon-web-services - AWS 控制台中的 AWS ElasticSearch 请求超时
- devexpress - 适用于 Blazor 的 DevExpress dxDataGrid -“当前电路存在未处理的异常”错误