使用 Swift (iOS) 将 BLE 4.0 数据转换为可用信息
Convert BLE 4.0 data into usable information using Swift (iOS)
这是我使用 swift 的第一个 BLE 项目,非常感谢你们提供的任何指导。我的 arduino 正在使用 red bear lab BLE mini 将整数(1 到 1200 之间)从传感器发送到我的 iPhone 应用程序。我能够找到并连接到设备并传输数据。至少在过去的三天里,我不知道如何将这些数据转换回可用信息。
例如在 didUpdateValueForCharacteristic 函数中,如果我打印:
print(characteristic.value!.bytes)
我得到一个 return 看起来像:
0x000000013cdb5f80
如果我要打印 characteristic.value!我会得到看起来像的东西:
<hc>
似乎我已经阅读了互联网上关于此的所有内容,但仍然无法弄清楚如何将此读数返回到正在发送的整数。如果有人愿意在这里给我一些指导,我将不胜感激。
提前致谢!
更新:根据反馈,我发布了一些我用过但不是 return 我需要的代码。我尝试使用以下方法将该值转换为整数:
var out : NSInteger = 0
let data = NSData(bytes: characteristic.value!.bytes, length: sizeof(NSInteger))
data.getBytes(&out, length: sizeof(NSInteger))
print("Integer: \(out)")
这个 return 是整数 64816。我希望数字介于 0 和 1200 之间,所以这要么是错误的,要么是我漏掉了一步。
我还尝试使用以下方法将数据转换为字符串:
var string1 = NSString(data: characteristic.value!, encoding: NSUTF8StringEncoding) as! String
print("String: \(string1)")
这只会解开一个 nil 值并崩溃。
首先确认他们返回的对象类型。该值属性是NSData类型,所以可以使用下面的代码将其转换为NSString。
- (id)initWithData:(NSData *)data encoding:(NSStringEncoding)encoding
经过三天的努力,我终于弄明白了。答案与 swift 代码无关。相反,我在 arduino 上的波特率太慢了。增加这个解决了一切。
这是我使用 swift 的第一个 BLE 项目,非常感谢你们提供的任何指导。我的 arduino 正在使用 red bear lab BLE mini 将整数(1 到 1200 之间)从传感器发送到我的 iPhone 应用程序。我能够找到并连接到设备并传输数据。至少在过去的三天里,我不知道如何将这些数据转换回可用信息。
例如在 didUpdateValueForCharacteristic 函数中,如果我打印:
print(characteristic.value!.bytes)
我得到一个 return 看起来像:
0x000000013cdb5f80
如果我要打印 characteristic.value!我会得到看起来像的东西:
<hc>
似乎我已经阅读了互联网上关于此的所有内容,但仍然无法弄清楚如何将此读数返回到正在发送的整数。如果有人愿意在这里给我一些指导,我将不胜感激。
提前致谢!
更新:根据反馈,我发布了一些我用过但不是 return 我需要的代码。我尝试使用以下方法将该值转换为整数:
var out : NSInteger = 0
let data = NSData(bytes: characteristic.value!.bytes, length: sizeof(NSInteger))
data.getBytes(&out, length: sizeof(NSInteger))
print("Integer: \(out)")
这个 return 是整数 64816。我希望数字介于 0 和 1200 之间,所以这要么是错误的,要么是我漏掉了一步。
我还尝试使用以下方法将数据转换为字符串:
var string1 = NSString(data: characteristic.value!, encoding: NSUTF8StringEncoding) as! String
print("String: \(string1)")
这只会解开一个 nil 值并崩溃。
首先确认他们返回的对象类型。该值属性是NSData类型,所以可以使用下面的代码将其转换为NSString。
- (id)initWithData:(NSData *)data encoding:(NSStringEncoding)encoding
经过三天的努力,我终于弄明白了。答案与 swift 代码无关。相反,我在 arduino 上的波特率太慢了。增加这个解决了一切。