gpt4 book ai didi

ios - 如何在 ios 中通过蓝牙接收简单的整数值

转载 作者:行者123 更新时间:2023-11-29 02:53:31 25 4
gpt4 key购买 nike

我正在尝试学习如何将一些传感器插入 Arduino 板,以使用 Red Bear Labs 迷你板通过蓝牙与 iPhone 通信,但遇到了障碍。

传感器获取读数,并通过 BLE 将其发送到手机。到目前为止,我已经连接到该设备,我得到了看似数据但我无法理解的数据。

我写了一个看起来像这样的小草图来模拟传感器数据。

#include <SoftwareSerial.h>
SoftwareSerial bluetooth(5, 6);

void setup() {
bluetooth.begin(57600);
}

void loop() {
//int reading = analogRead(2);
int reading = 123; // fake reading
byte lowerByte = (byte) reading & 0xFF;
byte upperByte = (byte) (reading >> 8) & 0xFF;
bluetooth.write(reading);
bluetooth.write(upperByte);
bluetooth.write(lowerByte);
delay(1000);
}

在 iOS 中,我发送一个调用来读取数据,然后数据被一段看起来像这样的代码接收:

- (void)peripheral:(CBPeripheral *)peripheral 
didUpdateValueForCharacteristic:(CBCharacteristic *)characteristic
error:(NSError *)error
{
Byte data[20];
static unsigned char buf[512];
static int len = 0;
NSInteger data_len;

if (!error && [characteristic.UUID isEqual:[CBUUID UUIDWithString:@RBL_CHAR_TX_UUID]]){
data_len = characteristic.value.length;
[characteristic.value getBytes:data length:data_len];

if (data_len == 20){
memcpy(&buf[len], data, 20);
len += data_len;

if (len >= 64){
[[self delegate] bleDidReceiveData:buf length:len];
len = 0;
}
} else if (data_len < 20) {
memcpy(&buf[len], data, data_len);
len += data_len;

[[self delegate] bleDidReceiveData:buf length:len];
len = 0;
}
}
}...
}

但是当我查看返回的数据时,它对我来说根本没有任何意义..(我会尽快挖掘出一个例子)。

有谁知道我遗漏了一个简单的步骤,或者我可以引用一个很好的例子来尝试更好地理解这一点?

最佳答案

我终于意识到数据是正确的,我不得不通过移位来“拉出”数据。

UInt16 value;
UInt16 pin;

for (int i = 0; i < length; i+=3) {
pin = data[i];
value = data[i+2] | data[i+1] << 8;
NSLog(@"Pin: %d", pin);
NSLog(@"Value %d",value);
}

关于ios - 如何在 ios 中通过蓝牙接收简单的整数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24207727/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com