私はarduino(送信するためにXbeeを使用)から浮動小数点値をJavaアプリケーションで(Xbeeを使用して)送信しています。 問題は、Javaでデータを受け取ったときに、xbeeパケットに格納されていた元のフロート番号に変換できないということです。私がきたものだJavaでArduinoからuint8として送信された浮動小数点数を取得する
、
アルドゥイーノ:
ここ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)));
私はfloat型の値を取ると、私はバイトとしてデータ配列に格納します。たとえば、値22.66の場合、最初の印刷で得られる値は0と72です(データサイズはfloat値を格納した後2です)。 2枚目のプリントは22.66となります。だから、値が正しく保存されているようです。
私はのXBeeパケットでJavaにデータを送信し、私はJavaでこのようなデータを取得する。その後:私は位置からJavaで値22.66を取得する方法を知りたい
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)
データ[7]、データ[8]である。 私はのようないくつかのことを試してみた:
int value = (data[7]) | (data[8]<<8);
float valuef = Float.intBitsToFloat(value);
しかし、それは動作しませんでした。
誰でもどのように私がそれを行うことができるか考えていますか?
ありがとうございました!あなたはまだIRが必要な場合は https://github.com/andrewrapp/xbee-api https://github.com/andrewrapp/xbee-arduino
あなたは4バイトになる 'sizeof(value)'を使うべきです。 – tomlogic