使用Swift(iOS)将可编辑的4.0数据转换为可用信息
这是我第一个使用swift的BLE项目,非常感谢你们的指导。我的arduino正在使用一个红熊实验室的微型计算机将传感器中的整数(介于1到1200之间)发送到我的iPhone应用程序。我能够找到并连接到设备并传输数据。一、 至少在过去的三天里,我还不知道如何将这些数据转换回可用信息 例如,在didUpdateValueForCharacteristic函数中,如果我打印:使用Swift(iOS)将可编辑的4.0数据转换为可用信息,ios,swift,arduino,bluetooth-lowenergy,Ios,Swift,Arduino,Bluetooth Lowenergy,这是我第一个使用swift的BLE项目,非常感谢你们的指导。我的arduino正在使用一个红熊实验室的微型计算机将传感器中的整数(介于1到1200之间)发送到我的iPhone应用程序。我能够找到并连接到设备并传输数据。一、 至少在过去的三天里,我还不知道如何将这些数据转换回可用信息 例如,在didUpdateValueForCharacteristic函数中,如果我打印: print(characteristic.value!.bytes) 我得到的回报如下: 0x000000013cdb5f
print(characteristic.value!.bytes)
我得到的回报如下:
0x000000013cdb5f80
如果我要打印characteristic.value!我会得到这样的东西:
<hc>
这将返回整数64816。我期望一个介于0和1200之间的数字,所以这要么是错误的,要么是我遗漏了一步
我还尝试使用以下方法将数据转换为字符串:
var string1 = NSString(data: characteristic.value!, encoding: NSUTF8StringEncoding) as! String
print("String: \(string1)")
这只是打开一个nil值并崩溃。首先确认返回的对象类型。value属性属于NSData类型,因此可以使用以下代码将其转换为NSString
- (id)initWithData:(NSData *)data encoding:(NSStringEncoding)encoding
经过三天的努力,我终于明白了这一点。答案与swift代码无关。相反,我在arduino上的波特率太慢了。增加这个解决了所有问题
characteristic.value
是一个NSData
对象。查看如何将NSData
转换为Integer
:感谢Larme的评论。我尝试将NSData转换为整数,并发布了上面使用的代码。它将NSData对象转换为64816的整数。我期待一个更低的数字。。。你知道我是否错过了一步或者做错了什么吗?谢谢你的帮助。谢谢你的帮助。我正在使用swift,所以我的代码有点不同,但我已经尝试了你的建议。然而,每当我这样做,它就会打开一个nil值,应用程序就会崩溃。我已经提出了我在上面的帖子中使用的代码。你对我遗漏的步骤有什么想法吗?谢谢你的帮助。
- (id)initWithData:(NSData *)data encoding:(NSStringEncoding)encoding