【问题标题】:Reading NSdata over BLE using LightBlueApplication使用 LightBlueApplication 通过 BLE 读取 NSdata
【发布时间】:2013-12-02 15:32:51
【问题描述】:

我正在尝试读取存储在 lightBlue 应用程序中的值,但问题是它似乎无法获取字符串。它检测到我正在读取数据,但是当我将数据转换为字符串时,它会输出 @""

 -(void) peripheral:(CBPeripheral *)peripheral didUpdateValueForCharacteristic:(CBCharacteristic *)characteristic error:(NSError *)error{
   if([characteristic.UUID isEqual:[CBUUID UUIDWithString:@"2A29"]]){
     if (characteristic.value) {
         NSString *stringFromData = [[NSString alloc] initWithData:characteristic.value encoding:NSUTF8StringEncoding];
        NSLog(@"The String is %@", stringFromData);
        self.manufacturer = [[NSString alloc] initWithData:characteristic.value encoding:NSUTF8StringEncoding];
        NSLog(@"Manufacturer Name = %@", self.manufacturer);
     }
   }

}

【问题讨论】:

  • 我做了更多的测试,发送的 NSData 是 HEX 格式,如何将十六进制转换为字符串?我刚刚 NSlogged 数据,它输出了十六进制值

标签: ios nsdata core-bluetooth cbperipheral cbcentralmanager


【解决方案1】:

尝试使用此代码 NSString *stringFromData = [[NSString alloc] initWithData:characteristic.value encoding:NSASCIIStringEncoding]; NSLog(@"The String is %@", stringFromData);

【讨论】:

  • 我试过了,还是不行,还是把@""作为字符串的值
  • 如果我输入“hey there”作为字符串,输出将是 00000000 0f0e2000 00686579 20746865 726520 这应该对应于“Hey there”,但是是十六进制
  • 它可能有效。 NSMutableString *stringFromData = [NSMutableString stringWithString:@""]; for (int i = 0; i = 32 && _byte
  • 您介意将该评论作为答案吗?我会将其标记为正确答案,因为它有效!非常感谢!
猜你喜欢
  • 1970-01-01
  • 2016-07-26
  • 1970-01-01
  • 1970-01-01
  • 2018-01-05
  • 1970-01-01
  • 1970-01-01
  • 2012-08-22
  • 2019-11-02
相关资源
最近更新 更多