我正在制作一个应用程序,它将从Arduino(使用Xbee发送)的浮点值发送到Java应用程序(使用Xbee接收)。 问题是,当我在Java中接收数据时,我无法将其转换为存储在xbee数据包中的原始浮点数。在Java中获取从Arduino发送的浮点数作为uint8
这就是我,
的Arduino:
uint8_t* data;
float value = (voltage*100)/5;
data = (uint8_t*)(&value);
for(int i = 0; i<sizeof(data); i++) Serial.println(data[i]):
Serial.println(*((float*)(data)));
在这里,我把浮点值,我将其存储在数据阵列字节。例如,对于值22.66,我在第一次打印中得到的值是0和72(存储浮点值后数据大小为2)。第二张照片获得22.66。所以看起来这个值是正确存储的。
之后,我将数据发送到Java技术的XBee包,我得到这样的数据在Java中:
XBeeResponse response = xbee.getResponse(2000);
int[] data = response.getProcessedPacketBytes();
System.out.println(data[7] + " " + data[8]); //these positions contain the values stored in arduino -> data[7] = 0 and data[8] = 72)
我想知道如何从位置获得Java中的值22.66数据[7]和数据[8]。 我试过一些像这样的东西:
int value = (data[7]) | (data[8]<<8);
float valuef = Float.intBitsToFloat(value);
但它没有奏效。
任何人有任何想法我可以做到这一点?
谢谢!
PS:如果有帮助,我使用下面的XBee库在Java和Arduino的: https://github.com/andrewrapp/xbee-api https://github.com/andrewrapp/xbee-arduino
你应该使用'sizeof(value)',它将是4个字节。 – tomlogic