-> Hier kostenlos registrieren
Danke für deinen Hinweis, muss ich nochmals überdenken!In jedem Fall (wie schon von mir geschrieben) hat der eingebaute Timer derzeit keine Auswirkung - also auch keine Änderung ...
Vielleicht überdenkst du dein Konstrukt noch einmal ...
Hab mir mal folgende Logik für das Einlesen überlegt, jedoch sind noch ein paar Fehler drinnen. Wäre super wenn mir jemand weiterhelfen könnte...
Zur Logik: ich möchte Zeichen für Zeichen in einen 2ten Buffer kopieren bis ich das Stringende Zeichen erreiche. Dann werden die Daten ohne die Stringende Zeichen in einen String kopiert.
Code:
//Clear the Buffer
#Data.TempBuffer := #Data.ClearBuffer;
//Detect New Data Received and set Receive Trigger
#NdrPosEdge(CLK := #Internal.TRCV.Ndr,
Q => #Internal.RcvReq);
#Processing.Ptr := 1;
#Processing.PosOfControlChar := 0;
//Receive Trigger for new data
IF #Internal.RcvReq
THEN
#Data.RcvLen := #Internal.TRCV.RcvdLen;
#Processing.Lenght := UDINT_TO_INT(#Data.RcvLen);
FOR #i := 1 TO #Processing.Lenght
DO
#Data.TempBuffer[#Processing.Ptr] := #Data.InputBuffer[#i];
#Processing.Ptr := #Processing.Ptr + 1;
IF #Data.InputBuffer[#i] = #LineFeed
THEN
#Processing.PosOfControlChar := #i;
#Processing.Cnt1 := #Processing.Ptr - (#Processing.PosOfControlChar - 1);
#Processing.Cnt2 := INT_TO_UINT(#Processing.Cnt1);
Chars_TO_Strg(Chars := #Data.InputBuffer,
pChars := 0,
Cnt := #Processing.Cnt2,
Strg => #Data."String");
END_IF;
END_FOR;
END_IF;