There must be a more fundamental problem with SoftwareSerial.
I made the tightest possible loop to see how much could be received flawlessly.
This code
while (1==1) {
while (mySerial.available()) Serial.write(mySerial.read());
while (Serial.available()) mySerial.write(Serial.read());
};
is better than this code:
while (1==1) {
if (mySerial.available()) Serial.write(mySerial.read());
if (Serial.available()) mySerial.write(Serial.read());
};
Errors begin after approximately 175 characters.
For example:
$0 = 200.000 (steps/mm x)
$1 = 200.000 (steps/mm y)
$2 = 200.000 (steps/mm z)
$3 = 50 (microseconds step pulse)
$4 = 250.000 (mm/min default feed rate)
$5 = 250.000 (mm/min default ee rae)
$ =0.00(m/ac sgmnt
7 20 stp or ivet msk bnay 10000)
8 1.00 acelraioni m/se^2
9 005 (orerig untin evaton n m)
$x=ale'tose praete o jst'$ t dmpcuren sttng
k
Here the errors start at the line beginning with $5.