Dein Problem liegt mehr darin, dass im Byte_array _RS232INBUF1 kein String mit einem Stringendezeichen (0-Byte) abgelegt wird, sondern nur einzelne Bytes. Dein
Print Gsm_rx_str
wird aber so viele Zeichen ausgeben, bis irgendwann ein Stringende gefunden wird.
Wenn du nun mit
Gsm_rx_str = ""
das erste Zeichen auf Stringende setzt und dann wieder neue Zeichen einliest, stehen dahinter immer noch die alten Zeichen. Also wird dein Print die auch wieder ausgeben. Da hilft auch das
Clear Serialin1
nicht, da es auch nur das erste Byte von _RS232INBUF1 und den Zeichen Counter _RS_BUFCOUNTR1 auf 0 setzt.
Du musst also selber das Stringende Zeichen setzen. Das geht einfach so:
_RS232INBUF1(_RS_BUFCOUNTR1 + 1) = 0
_RS232INBUF1(_RS_BUFCOUNTR1) zeigt auf das letzte gelesene Zeichen, _RS232INBUF1(_RS_BUFCOUNTR1 + 1) also auf das danach. Vorsichtig musst du noch sein, wenn tatsächlich mal 100 Zeichen eingelesen werden, dass du dann nicht das 101. mit einer 0 beschreibst.
Lesezeichen