Bavilo:
Like I said, Serial1 and Serial2 will NOT be sending data at the same time.
From the code in your Original Post
while (Serial1.available() > 0) {
raw_serial_data = Serial1.readStringUntil('!');
I got the distinct impression that you are trying to RECEIVE data.
Am I wrong?
If you do want to receive data then the code in my examples is simple. reliable and non-blocking.
...R