【发布时间】:2015-12-17 22:22:59
【问题描述】:
我正在使用 Adafruit BLE UART 板将数据传输到 iOS 应用程序进行处理。在 iOS 端,数据由一个名为 UARTPeripheral 的类处理。 (我发送的链接是某个人的 GitHub 项目中的文件的链接——我找不到真实的链接——但文件是一样的。Arduino 方面正在使用 Adafruit library 处理数据。每边都需要仔细检查(至少我认为)是 Arduino 端的 print() 函数和 iOS 端的 - (void)didReceiveData:(NSData*)newData 方法。
这是我尝试发送数据(从 Arduino 端)时出现的实际问题:每个数据值之间都是 3。就这么简单。假设我使用ble.print(B00000010)从板上发送二进制2,在iOS端我收到32。假设我使用以下代码从 Arduino 端发送一个整数:
int test = 4132;
ble.print(test);
我最终会在 iOS 端获得34313332。我没有要求任何人仔细检查这些库,但最好能说明为什么会发生这样的事情。我知道我可以只使用“贴膏药”的方法,然后摆脱 3s,但我想找到这个问题的根源。
【问题讨论】:
-
如果您打印 Int 4132,您实际上是在发送字符串“4132” - 因此您显示的字节对应于字符 4 1 3 2 的 ASCII 值
-
感谢 Paul,我会先尝试将其转换为 NSString。我应该看到的!
-
您可能正在接收一个 NSData 实例,因此简单的强制转换不起作用,但有一些 String 的初始化器采用 NSData
-
是的 - 它是 NSData,但使用 UTF-8 编码将其转换为 NSString 效果很好。谢谢!
标签: ios objective-c bluetooth arduino bluetooth-lowenergy