0

floatLMIC lora ライブラリを使用して arduino から複数の値を送信しようとしています。LMIC 関数は、uint8_tその送信引数の型として のみを取ります。

temp温度値がフロートとして含まれており、測定された温度を問題なく印刷できます。

Serial.println((String)"Temp C:         " + temp);

このコードを使用して変換を行う例を次に示します。

uint16_t payloadTemp = LMIC_f2sflt16(temp);
// int -> bytes
byte tempLow = lowByte(payloadTemp);
byte tempHigh = highByte(payloadTemp);
payload[0] = tempLow;
payload[1] = tempHigh;

これが機能するかどうかはわかりませんが、そうではないようです。送信される結果のデータは次のとおりです。FF 7F

これが私が探しているものだとは思いません。次の変換手順も試しました。

uint8_t *array;
array = (unit8_t*)(&f);

arduinoを使用すると、これはコンパイルさえしません。

機能しますが、非常に長い結果を作成するものは次のとおりです。

String toSend = String(temp);
toSend.toCharArray(payload, toSend.length());
payloadActualLength = toSend.length();
Serial.print("the payload is: ");
Serial.println(payload);

しかし、結果の16進数は、送信したい他の値を取得するには長すぎます.

floatでは、 a を値に変換するにはどうすればよいですuint8_tか? また、元の変換が期待どおりに機能しないのはなぜですか?

4

2 に答える 2