使用RFDuino通过BLE发送数据

时间:2015-03-17 19:18:21

标签: android bluetooth arduino rfduino

我已将传感器连接到RFDuino,并希望通过BLE将读数发送到Android应用。

const int sensorPin = 2;
int sensorValue = 0;

void setup() {
  Serial.begin(9600);
  RFduinoBLE.begin();
}

void loop() {
  sensorValue = analogRead(sensorPin);
  float voltage= sensorValue * (3.3 / 1023.0);
  Serial.print("uv sensor = ");
  Serial.println(voltage);
  RFduinoBLE.sendFloat(voltage);
  delay(1000);
}

在控制台中,我看到0.2等值。但在应用程序中,它转换为类似00-00-A4-41的内容。它描述了here,但我没有得到它背后的逻辑。如何正确转换RFDuino发送的值?

1 个答案:

答案 0 :(得分:1)

RFduino以小端发送浮动。你的Android应用程序将接收它作为4个字节,你将需要通过颠倒字节的顺序(并转换为浮点数)将其转换为大端。关于这个主题有几个主题,例如。 Converting Little Endian to Big Endian和您使用的那个。

它应该只是快速阅读字节顺序和浮点格式,以了解它背后的逻辑。但基本上,4字节浮点数的字节数相对于big endian以相反的顺序存储。当你以小端方式反转4个字节时,它就变成了大端,你很适合你的情况。

http://www.cs.umd.edu/class/sum2003/cmsc311/Notes/Data/endian.html http://en.wikipedia.org/wiki/Single-precision_floating-point_format