I am sending data from Xbee 3 pro (router) connected to Teensy 4.0 microcontroller, to another Xbee 3 pro (coordinator). I am successfully getting data,but the data i am getting is not structured correctly as lines. Lines are mostly combined.
printed data:
Sending data from Teensy:
Getting data from C++ program:
printed data:
Code:
1.00,4096.00
,-0.21,-161,-0.79,1.03,23.13,1020.02,-0.21,-16.52,0,0,0,0,0.00,0.00,0.90,0.00,131.00,4096.00
,-190.00,-225.00,119.00,-0.51,-0.79,1.03,23.13,1020.02,-0.23,-16.52,0,0,0,0,0.00,0.0,1020.02,-0.23,-16.52,0,0,0,0,0.00,0.00,0.89,0.00,131.00,4096.00
.52,0,0,0,0,0.00,0.00,0.8932,-16.52,0,0,0,0,0.00,0.00,0.88,0.00,131.00,4096.00
020.03,-0.43,-16.52,0,0,0,0,0.00,0.00,0.87,00.79,1.03,23.15,1020.06,-0.50,-16.52,0,0,0,0,0.00,0.00,0.86,0.00,131.00,4096.00
214.00,115.00,-0.52,-0.80,1.03,23.13,10,0.06,0.26,0.98,-182.00,-214.00,115.00,-0.52,-0.80,1.03,23.13,1020.03,-0.27,-16.52,00.80,1.03,23.13,1020.03,-0.27,-16.52,0,0,0,0,0.00,0.00,0.83,0.00,131.00,4096.00
Sending data from Teensy:
C++:
void sendDataTotelemetry(){
Serial3.print(millis());
Serial3.print(",");
Serial3.print(data.Accel_X);
Serial3.print(",");
Serial3.print(data.Accel_Y);
Serial3.print(",");
Serial3.print(data.Accel_Z);
Serial3.print(",");
Serial3.print(data.Gyro_X_Raw);
Serial3.print(",");
Serial3.print(data.Gyro_Y_Raw);
Serial3.print(",");
Serial3.print(data.Gyro_Z_Raw);
Serial3.print(",");
Serial3.print(data.Gyro_Yaw);
Serial3.print(",");
Serial3.print(data.Gyro_Roll);
Serial3.print(",");
Serial3.print(data.Gyro_Pitch);
Serial3.print(",");
Serial3.print(data.Baro_Temp);
Serial3.print(",");
Serial3.print(data.Baro_Pressure);
Serial3.print(",");
Serial3.print(data.Baro_Altitude);
Serial3.print(",");
Serial3.print(data.Baro_Altitude_Error);
Serial3.print(",");
Serial3.print(data.ParachuteOn);
Serial3.print(",");
Serial3.print(data.LegsDeployed);
Serial3.print(",");
Serial3.print(data.MotorFired);
Serial3.print(",");
Serial3.print(data.RocketState);
Serial3.print(",");
Serial3.print(data.VoltageValue);
Serial3.print(",");
Serial3.print(data.Voltage);
Serial3.print(",");
Serial3.print(data.Kal_X_Pos);
Serial3.print(",");
Serial3.print(data.Kal_X_PosP);
Serial3.print(",");
Serial3.print(data.Gyro_Sens);
Serial3.print(",");
Serial3.println(data.Acc_Sens);
}
C++:
void readTelemetryData(){
data.telemetry_conn_port = serial_t_port;
serial_t.open(serial_t_port);
if (!serial_t.is_open()){
data.telemetry_conn_status = "N/A";
} else{
serial_t.ignore();
getline(serial_t,incoming_data);
data.telemetry_conn_status = "SUCCESS";
if (incoming_data.find(',') != std::string::npos){
data_seperated_t = split_data(incoming_data, ',');
data.time = data_seperated_t[0];
data.Accel_X = data_seperated_t[1];
data.Accel_Y = data_seperated_t[2];
data.Accel_Z = data_seperated_t[3];
data.Gyro_X_Raw = data_seperated_t[4];
data.Gyro_Y_Raw = data_seperated_t[5];
data.Gyro_Z_Raw = data_seperated_t[6];
data.Gyro_Yaw = data_seperated_t[7];
data.Gyro_Roll = data_seperated_t[8];
data.Gyro_Pitch = data_seperated_t[9];
data.Baro_Temp = data_seperated_t[10];
data.Baro_Pressure = data_seperated_t[11];
data.Baro_Altitude = data_seperated_t[12];
data.Baro_Altitude_Error = data_seperated_t[13];
data.ParachuteOn = data_seperated_t[14];
data.LegsDeployed = data_seperated_t[15];
data.MotorFired = data_seperated_t[16];
data.RocketState = data_seperated_t[17];
data.VoltageValue = data_seperated_t[18];
data.Voltage = data_seperated_t[19];
data.Kal_X_Pos = data_seperated_t[20];
data.Kal_X_PosP = data_seperated_t[21];
data.Gyro_Sens = data_seperated_t[22];
data.Acc_Sens = data_seperated_t[23];
} else {
data.message.push_back(incoming_data) ;
}
serial_t.close();
}
}