KrisKasprzak
Well-known member
Still fighting with these ESP units. I'm trying to send data from a teensy 3.2 to an ESP8266. From the teensy if I Serial3.Println("Teensy is better that ESP"); all is well. if i send a struct, data gets corrupted. I can get less corruption by changing baud rates, but....
Data types are the same size for Teensy and ESP, i have no clue why data is corrupted. Help anyone?
Code that runs on a teensy
Code that runs on a ESP8266
Data types are the same size for Teensy and ESP, i have no clue why data is corrupted. Help anyone?
Code that runs on a teensy
Code:
// code to run on and Teensy 3.2
// this Tx connects to ESP8266 Rx
// this Rx connects to ESP8266 Tx
struct Test {
uint16_t Data1;
uint16_t Data2;
uint16_t Data3;
};
Test MyData;
void setup()
{
Serial.begin(115200);
Serial3.begin(115200);
}
void loop() {
MyData.Data1 = 11;
MyData.Data2 = 22;
MyData.Data3 = 33;
Serial3.write((uint8_t*) &MyData, sizeof(MyData));
Serial3.flush();
//Serial3.println("message from Nano"); // just this line prints fine
Serial.println("sent...");
delay(1000);
}
Code that runs on a ESP8266
Code:
// code to run on and ESP8266
// this Tx connects to teensy Rx
// this Rx connects to teensy Tx
#include <SoftwareSerial.h>
struct Test {
uint16_t Data1;
uint16_t Data2;
uint16_t Data3;
};
Test MyData;
SoftwareSerial fromTeensy(4, 5); //Rx, Tx
void setup()
{
Serial.begin(115200);
fromTeensy.begin(115200);
}
void loop()
{
if (fromTeensy.available())
{
fromTeensy.readBytes((uint8_t*) &MyData, sizeof(MyData));
fromTeensy.flush();
delay(10);
// char inChar = fromTeensy.read(); //just these 2 lines prints fine
// Serial.println(inChar);
Serial.print("Data1 "); Serial.println(MyData.Data1);
Serial.print("Data2 "); Serial.println(MyData.Data2);
Serial.print("Data3 "); Serial.println(MyData.Data3);
// results
// Data1 8459
// Data2 22
// Data3 33
// Data1 5632
// Data2 8448
// Data3 33
// Data1 5632
// Data2 8448
// Data3 33
// Data1 11
// Data2 22
// Data3 33
}
}