-> Hier kostenlos registrieren
Hey Leute ich weis zwar nich ob ich das darf aber ich Poste euch mal den FB wie ich ihn bisher jetz soweit geschrieben habe.
So mein Problem is das er in der For Schleife nich auf die Bytes wartet sondern das ganze einfach überspringt. und ins LastReceiveByte Array nix reinschreibt. Kann mir da wer helfen?
Mfg
COOLT
Code:
CASE SchrittNr OF
0: i:=0;
FOR i:=0 TO 4 BY 1 DO
LastReceivedByte[i]:=0;
END_FOR;
i:=0;
ReceivedByte:=0;
ReceiveCounter:=0;
SchrittNr:=1;
READDone:=FALSE;
1: Receive(
RXbuffer:= RxBuffer2,
Error=> ReceiveErrorID, );
IF Receive.ByteReceived (*Byte Received*)THEN
ReceivedByte:=Receive.ReceivedByte;
END_IF;
IF ReceivedByte=2 THEN
SchrittNr:=5;
END_IF;
5: FOR i:=0 TO 4 BY 1 DO
Receive(
RXbuffer:= RxBuffer2,
Error=> ReceiveErrorID, );
IF Receive.ByteReceived (*Byte Received*) AND LastReceivedByte[ReceiveCounter] = 0 THEN
ReceivedByte:=Receive.ReceivedByte;
IF ReceivedByte>127 THEN
ReceivedByte:=ReceivedByte-128;
END_IF;
LastReceivedByte[ReceiveCounter] := ReceivedByte;
ReceiveCounter := ReceiveCounter + 1;
END_IF
END_FOR;
SchrittNr:=10;
10: Receive(
RXbuffer:= RxBuffer2,
Error=> ReceiveErrorID, );
IF Receive.ByteReceived(*Byte Received*)THEN
ReceivedByte:=Receive.ReceivedByte;
END_IF;
IF ReceivedByte = 3 THEN
SchrittNr:=15;
END_IF;
15: Receive(
RXbuffer:= RxBuffer2,
Error=> ReceiveErrorID, );
IF Receive.ByteReceived(*Byte Received*)THEN
ReceivedByte:=Receive.ReceivedByte;
END_IF;
IF ReceivedByte = 24 THEN
ReadDone:=TRUE;
END_IF;
END_CASE;
IF ReceiveCounter>=4 THEN
ReceiveCounter:=0;
END_IF;
Mfg
COOLT