#include <HardwareSerial.h>
// This example made serial2 the sender and serial1 the receiver
// example struct
struct joystick_data {
byte x1, x2, x3, x4;
} sender, receiver;
void sendData() {
byte dataSend[sizeof(sender)];
memcpy(dataSend, &sender, sizeof(sender));
Serial2.write(dataSend, sizeof(dataSend));
}
void setup() {
Serial.begin(115200);
Serial2.begin(115200);
for (int i = 0; i < 10; i++) {
// sending
sender.x1 = 10+i;
sender.x2 = 20+i;
sender.x3 = 30+i;
sender.x4 = 40+i;
sendData();
}
}
void loop() {
// trying to receive
if (Serial.available() >= sizeof(receiver)) {
// receive byte + decode
byte dataReceive[sizeof(receiver)];
Serial.readBytes(dataReceive, sizeof(dataReceive));
memcpy(&receiver, dataReceive, sizeof(dataReceive));
// print result
Serial.println(receiver.x1);
Serial.println(receiver.x2);
Serial.println(receiver.x3);
Serial.println(receiver.x4);
}
delay(10);
}