Hallo
ich musste es doch so wie du beschrieben hast lösen da ich die Funktion mehrfach verwenden muss
#include <SPI.h>
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only
}
}
void loop() {
//Var
float Zahl[11];
byte bigEndian[4];
Zahl[0]=0.01;
Zahl[1]=11.11;
Zahl[2]=22.22;
Zahl[3]=33.33;
Zahl[4]=44.44;
Zahl[5]=55.55;
Zahl[6]=66.66;
Zahl[7]=77.77;
Zahl[8]=88.88;
Zahl[9]=99.99;
Zahl[10]=10.10;
for (int i=0; i <= 10; i++){
Serial.println(Zahl[i]);
S7Float_to_Byte(Zahl[i], bigEndian);
Serial.print(bigEndian[0]);
Serial.print(bigEndian[1]);
Serial.print(bigEndian[2]);
Serial.println(bigEndian[3]);
delay(10);
}
delay(2000);
}
// Funktion Float in Byte, Byte drehen
byte* S7Float_to_Byte(const float inFloat, byte* buffer)
{
byte* bytes = (byte*)&inFloat;
buffer[0] = bytes[3];
buffer[1] = bytes[2];
buffer[2] = bytes[1];
buffer[3] = bytes[0];
return buffer;
}
Ich muss jetzt nur noch den speicherbrecht byte bigEndian[4]; löschen. Wenn nicht alle Arrays belegt sind kommen sonnst falsche werte bei den nicht belegten Arrays an.