x-IMU ERROR communication via SoftwareSerials Arduino UNO

Hi there,

I tried to get the communication between x-IMU and my Arduino UNO running. So far, they communicate but the output is very disappointing:
ERROR: 12
ERROR: 12
ERROR: 12
ERROR: 12
ERROR: 12
ERROR: 12
ERROR: 12
ERROR: 12
ERROR: 12
ERROR: 12
ERROR: 12
ERROR: 12
ERROR: 12
ERROR: 12
ERROR: 12
ERROR: 12
ERROR: 12
ERROR: 12
ERROR: 12
ERROR: 12
ERROR: 12
ERROR: 12
ERROR: 12
battery = -7.00, thermometer = 36.17

This is the code i have configured:
it was written for Arduino MEGA, so i had to set the second serial to a softwareserial.
Then i connected my x-IMU Sensor with the digital PIN 10 on the Arduino UNO (which pretends now to be a RX).
Original Source: GitHub - xioTechnologies/x-BIMU-Arduino-Example

Would appreciate any suggestions!

Thanks in advance, milla

/*
    x_IMU_Arduino_Example.ino
    Author: Seb Madgwick

    Example usage of x-IMU C++ library.  Also uses the quaternion library to
    convert the received quaternion to Euler angles.

    Requires two hardware serial modules: one to receive from the x-IMU and one
    to transmit the decoded data to be displayed on computer.

    x-IMU settings:
    Auxiliary Port > Auxiliary Port Mode: "UART"
    Auxiliary Port > UART > Baud Rate: 115200
    Auxiliary Port > UART > Hardware Flow Control: Off

    Hardware connections:
    x-IMU GND -> Arduino MEGA GND
    x-IMU EXT -> Arduino MEGA 5V
    x-IMU AX2 -> Arduino MEGA RX1

    Tested with "arduino-1.0.3" and "Arduino MEGA".
*/

//------------------------------------------------------------------------------
// Includes

#include "Quaternion.h"
#include "XimuReceiver.h"
#include "SoftwareSerial.h"

//------------------------------------------------------------------------------
// Variables

XimuReceiver ximuReceiver;
SoftwareSerial mySerial(10,11);


//------------------------------------------------------------------------------
// Functions

void setup() {
    Serial.begin(115200);   // for sending data to computer
    mySerial.begin(115200);  // for receiving data from x-IMU
}

void loop() {
    ErrorCode e = ERR_NO_ERROR;

    // Process recieved data
    while(mySerial.available() > 0) {
        e = ximuReceiver.processNewChar(mySerial.read());
    }

    // Print error code (receive error)
    if(e != ERR_NO_ERROR) {
        Serial.print("ERROR: ");
        Serial.print(e);
        Serial.print("\r");
    }

    // Print battery and thermometer data
    if(ximuReceiver.isBattAndThermGetReady()) {
        BattAndThermStruct battAndThermStruct = ximuReceiver.getBattAndTherm();
        Serial.print("battery = ");
        Serial.print(battAndThermStruct.battery);
        Serial.print(", thermometer = ");
        Serial.print(battAndThermStruct.thermometer);
        Serial.print("\r");
    }

    // Print sensor data
    if(ximuReceiver.isInertialAndMagGetReady()) {
        InertialAndMagStruct inertialAndMagStruct = ximuReceiver.getInertialAndMag();
        Serial.print("gyrX = ");
        Serial.print(inertialAndMagStruct.gyrX);
        Serial.print(", gyrY = ");
        Serial.print(inertialAndMagStruct.gyrY);
        Serial.print(", gyrZ = ");
        Serial.print(inertialAndMagStruct.gyrZ);
        Serial.print(", accX = ");
        Serial.print(inertialAndMagStruct.accX);
        Serial.print(", accY = ");
        Serial.print(inertialAndMagStruct.accY);
        Serial.print(", accZ = ");
        Serial.print(inertialAndMagStruct.accZ);
        Serial.print(", magX = ");
        Serial.print(inertialAndMagStruct.magX);
        Serial.print(", magY = ");
        Serial.print(inertialAndMagStruct.magY);
        Serial.print(", magZ = ");
        Serial.print(inertialAndMagStruct.magZ);
        Serial.print("\r");
    }

    // Print quaternion data as Euler angles
    if(ximuReceiver.isQuaternionGetReady()) {
        QuaternionStruct quaternionStruct = ximuReceiver.getQuaternion();
        Quaternion quaternion = Quaternion(quaternionStruct.w, quaternionStruct.x, quaternionStruct.y, quaternionStruct.z);
        EulerAnglesStruct eulerAnglesStruct = quaternion.getEulerAngles();
        Serial.print("roll = ");
        Serial.print(eulerAnglesStruct.roll);
        Serial.print(", pitch = ");
        Serial.print(eulerAnglesStruct.pitch);
        Serial.print(", yaw = ");
        Serial.print(eulerAnglesStruct.yaw);
        Serial.print("\r");
    }
}

//------------------------------------------------------------------------------
// End of file
mySerial.begin(115200);  // for receiving data from x-IMU

You'll never get reliable results from SoftwareSerial with a baudrate that high. Usually it works up to 9600 baud, maybe 38400 baud if the other device is very tolerant. SoftwareSerial is not a real replacement for a hardware serial interface, it's a less-than-ideal solution if you have not other possibility.

BTW: where are the links to the used libraries?

hmmm... interesting! I changed the baud-rate from the SoftwareSerial to 9600 and get this:

Ï??ßÏß?ß?Ê???ß?ÿ?÷?÷?ß?ß?ß?ßÏ?ßÊß?Ïÿ????Ê÷???Ï??Ïß?÷Ï÷?ÏÏ?ϏÏÊ?ß÷?Ê??÷ߏ?ßß???Ïß?ß?Ï÷

the libraries are included at the beginning and under the link

there are all files i used - libraries included.

AND PROBLEM SOLVED somehow:
I got an answer from the x-IMU developers concerning the ERROR-MSG:
>>
You can see from the ErrorCode enum that 12 = "ERR_INVALID_NUM_BYTES_FOR_PACKET_HEADER". I expect this is because the serial port is unable to receive the data properly.
The x-IMU must be connected to a hardware UART (not software serial) because software serial is not able to receive data reliably. An Arduino MEGA was used because it has 2 hardware UARTs available: one for the x-IMU and one for reliable printing of output.
<<