Try this new loop():
#define BUFFER_SIZE 80
void loop() {
char buffer[BUFFER_SIZE];
uint8_t pos = 0;
while(Serial.available() > 0 && pos < BUFFER_SIZE) {
buffer[pos++] = Serial.read(); //Take a character from serial port and check what it is
}
if (pos > 0) {
Thermal.write(buffer, pos);
pos = 0;
}
}
This way you collect the characters while the serial buffer has some available and write them out all in one step. This way the probability that the SoftwareSerial is interrupted by the reception of a byte on the hardware serial is lowered, the timing exactness is increased and you may be successful.