wait for response for x time, send a message by x time, or when response receive

while( s0 != '|' || s1 != '|' ){//terminates if '|' is received

This will only stop the loop when you receive "||", not a single "|" as the comment suggests. So one of the two is wrong and needs to be corrected.

if(HWSERIAL.available() == 0 && millis() - Timer > 1){

You should also seriously look into why the message gets lost, as that shouldn't happen to begin with. I bet that device of yours will have some kind of serial buffer.