我已经将传感器附加到RFDuino上,并希望将读数通过BLE发送到安卓应用程序。
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的东西,它被描述为这里,但我不明白它背后的逻辑。如何正确地转换从RFDuino发送的值?
发布于 2015-05-28 07:05:17
RFduino在小端发送浮标。您的android应用程序将接收到4个字节,您需要通过颠倒字节的顺序(并转换为浮点数)将其转换为大端字节。关于这个话题有几条线索。将小终端转化为大端和你用的那个。
它应该只是一个快速阅读的endianness和浮点格式,以了解其背后的逻辑。但是,基本上,4字节浮点数以相反的顺序存储在小字节和大端字节之间。当你倒转小端点的4个字节时,它就变成了大端点,你就可以很好地处理你的情况了。
http://www.cs.umd.edu/class/sum2003/cmsc311/Notes/Data/endian.html 格式化
https://stackoverflow.com/questions/29107847
复制相似问题