LinusW - 2019-08-08

Hallo zusammen,

ein Raspberry bekommt über TCP einen STRING mit Daten, die duch ein ',' getrennt sind. Die Werte würde ich gern in einem ARRAY ablegen.
Bsp.:

Folgendes hab ich mir im Internet "zusammengesucht":
Zuerst such ich nach 'GPGSA'

FUNCTION_BLOCK Message
VAR_INPUT
   sRxData: STRING(255);
   sFind: STRING(255);
END_VAR
VAR_OUTPUT
   sMessage: STRING(255);
END_VAR
VAR
   iCurPos: INT;
   iPosEnd: INT;
   sTemp: STRING(255);
END_VAR
------------------------------------------------------------------
iCurPos := FIND(sRxData, sFind);
IF iCurPos = 2 THEN
   sTemp := sRxData;
   iPosEnd := FIND(sTemp, '$L');
   sMessage := MID(sTemp, iPosEnd, 1);
END_IF

als nächstes die Werte in dem zuvor ermittelten STRING in ein ARRAY ablegen:

FUNCTION_BLOCK DATA
VAR_INPUT
   sInput: STRING(255);
END_VAR
VAR_OUTPUT
   DATA: ARRAY [1..50] OF STRING;
END_VAR
VAR
   i: INT;
   sTemp: STRING(255);
   iPos: INT;
   iLenght: INT;      
END_VAR
------------------------------------------------------------------
sTemp := sInput;
FOR i:= 1 TO 45 DO
   iPos := FIND(sTemp, ',');
   DATA[i] := LEFT(sTemp, iPos -1);
   IF (iPos = 0) THEN
      DATA[i] := sTemp;
      sTemp := '';
   END_IF
   sTemp := RIGHT(sTemp, LEN(sTemp) -iPos);
END_FOR

Bei GPGSA funktionier es, bei BESTPOSA bekomm ich immer einen Ausnahmefehler, dass die CPU Load über 95% ist..
Was mach ich falsch? Gibt es eine bessere Möglichkeit?

Vielen Dank vorab!