Dear all,
Please find below the definitions of byteRead and byteWrite macros, something similar to the bitRead and bitWrite functions, but for bytes.
Hope this helps,
// ------------------------------------------------------------------------------------------
// byteRead macro definition. Francois Auger, Universite de Nantes, France, November 19, 2016
#define byteRead(x,n) ( * ( (unsigned char*)(&x) + n) )
// ------------------------------------------------------------------------------------------
// byteWrite macro definition. Francois Auger, Universite de Nantes, France, April 20, 2017
#define byteWrite(x,n,b) *( ( (unsigned char*)(&x)+n) )=b
// ------------------------------------------------------------------------------------------
byte byte0, byte1, byte2, byte3;
void setup() {
Serial.begin(115200); // serial port initialization
// while (!Serial) {} // wait for serial port to connect. Needed for Leonardo only
Serial.println(F("byteRead-byteWriteDemo program started"));
}
void loop() {
int N1 = 1025, N1copy;
byte0=byteRead(N1,0); byte1=byteRead(N1,1);
Serial.print(N1); Serial.print(" = "); Serial.print(byte1); Serial.print("*256 + "); Serial.print(byte0);
byteWrite(N1copy, 0, byte0); byteWrite(N1copy, 1, byte1); Serial.print(" N1copy = "); Serial.println(N1copy);
word N2 = 1025, N2copy;
byte0=byteRead(N2,0); byte1=byteRead(N2,1);
Serial.print(N2); Serial.print(" = "); Serial.print(byte1); Serial.print("*256 + "); Serial.print(byte0);
byteWrite(N2copy, 0, byte0); byteWrite(N2copy, 1, byte1); Serial.print(" N2copy = "); Serial.println(N2copy);
long int N3 = 70000, N3copy;
byte0=byteRead(N3,0); byte1=byteRead(N3,1); byte2=byteRead(N3,2); byte3=byteRead(N3,3);
Serial.print(N3); Serial.print(" = ");
Serial.print(byte3); Serial.print("*16777216 + "); Serial.print(byte2); Serial.print("*65536 + ");
Serial.print(byte1); Serial.print("*256 + "); Serial.print(byte0);
byteWrite(N3copy, 0, byte0); byteWrite(N3copy, 1, byte1); byteWrite(N3copy, 2, byte2); byteWrite(N3copy, 3, byte3);
Serial.print(" N3copy = "); Serial.println(N3copy);
float x=M_PI, xcopy;
Serial.print(x, 5);
byte0=byteRead(x,0); byte1=byteRead(x,1); byte2=byteRead(x,2); byte3=byteRead(x,3);
byteWrite(xcopy, 0, byte0); byteWrite(xcopy, 1, byte1); byteWrite(xcopy, 2, byte2); byteWrite(xcopy, 3, byte3);
Serial.print(" xcopy = "); Serial.println(xcopy, 5);
Serial.println(); delay(1000);
}