BaseSystemLib hinzugefügt
This commit is contained in:
@@ -0,0 +1,8 @@
|
||||
LibraryType:
|
||||
Guid: 7462bbc8-2811-4b0d-bdf1-031a6aa286ee
|
||||
LibraryVersion:
|
||||
VersionNumber: 0.0.6
|
||||
Author: e.yueksel
|
||||
IsDefault: true
|
||||
Comment:
|
||||
de-DE: Inkonsistenz bereinigen
|
||||
@@ -0,0 +1,9 @@
|
||||
DocumentHash:
|
||||
- FileName: FC_ParseCheckForEnd.scl
|
||||
Hash: 9/ZVb2UiTOhclEguONKnCzWJfK1tn9Z9sOJsqztg35M=
|
||||
LibraryMetaFileHash: l4eOdmK051pj+qL8jJiaNVxTNzEGtoXFkqzf7GlEhpQ=
|
||||
LibraryVersion:
|
||||
Guid: c0b69439-324f-4624-bfa7-02fc724e52f7
|
||||
DependsOn:
|
||||
- TypeName: UDT_TelegramDefinition
|
||||
VersionNumber: 0.0.5
|
||||
@@ -0,0 +1,44 @@
|
||||
FUNCTION "FC_ParseCheckForEnd" : Bool
|
||||
TITLE = FC_ParseCheckForEnd
|
||||
{ S7_Optimized_Access := 'TRUE' }
|
||||
AUTHOR : 'e.yueksel'
|
||||
FAMILY : Parser
|
||||
VERSION : 0.1
|
||||
//Diese Baustein überprüft neue Telegramme auf Endekennung entsprechend der Telegrammdefinition.
|
||||
VAR_INPUT
|
||||
bInNewData : Byte; // The byte we compare to the end marker
|
||||
arInBuffer : Array[*] of Byte; // The buffer (Array of bytes) we are currently parsing
|
||||
nInBufferLen : DInt; // Length of the buffer
|
||||
stInTelegramDefinition : "UDT_TelegramDefinition"; // The definition of the telegram (Parameters)
|
||||
END_VAR
|
||||
|
||||
VAR_TEMP
|
||||
j : DInt; // Loop variable
|
||||
END_VAR
|
||||
|
||||
|
||||
BEGIN
|
||||
IF (#stInTelegramDefinition.nEndMarkerLen > 0) THEN
|
||||
IF (#bInNewData = #stInTelegramDefinition.sEndMarker[#stInTelegramDefinition.nEndMarkerLen] AND
|
||||
#nInBufferLen >= UDINT_TO_DINT(#stInTelegramDefinition.nStartMarkerLen + #stInTelegramDefinition.nEndMarkerLen)) THEN
|
||||
FOR #j := 0 TO UDINT_TO_DINT(#stInTelegramDefinition.nEndMarkerLen - 1) DO
|
||||
IF (#arInBuffer[#nInBufferLen - 1 - #j] <> #stInTelegramDefinition.sEndMarker[UDINT_TO_DINT(#stInTelegramDefinition.nEndMarkerLen) - #j]) THEN
|
||||
#FC_ParseCheckForEnd := FALSE;
|
||||
RETURN;
|
||||
END_IF;
|
||||
END_FOR;
|
||||
|
||||
IF (#stInTelegramDefinition.nLength > 0) THEN
|
||||
#FC_ParseCheckForEnd := (#nInBufferLen = UDINT_TO_DINT(#stInTelegramDefinition.nLength));
|
||||
ELSE
|
||||
#FC_ParseCheckForEnd := TRUE;
|
||||
END_IF;
|
||||
ELSE
|
||||
#FC_ParseCheckForEnd := FALSE;
|
||||
END_IF;
|
||||
ELSE
|
||||
#FC_ParseCheckForEnd := (#nInBufferLen = UDINT_TO_DINT(#stInTelegramDefinition.nLength));
|
||||
END_IF;
|
||||
|
||||
END_FUNCTION
|
||||
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
LibraryType:
|
||||
Guid: 9058dc9e-b9e7-4405-8e1d-e48b9273bd5f
|
||||
LibraryVersion:
|
||||
VersionNumber: 0.0.6
|
||||
Author: e.yueksel
|
||||
IsDefault: true
|
||||
Comment:
|
||||
de-DE: Inkonsistenz bereinigen
|
||||
@@ -0,0 +1,9 @@
|
||||
DocumentHash:
|
||||
- FileName: FC_ParseCheckForStart.scl
|
||||
Hash: 9k9Nch0mhI2FlPOZygpnN+PfrnpwH9iV2hqhIx8frpQ=
|
||||
LibraryMetaFileHash: RvU2tTT+yCMb2ZwWGKDCVMASSZnGv/yIPXb59NkUwLY=
|
||||
LibraryVersion:
|
||||
Guid: 592d2c58-e2fc-4ba6-a0b2-d15ffd39706c
|
||||
DependsOn:
|
||||
- TypeName: UDT_TelegramDefinition
|
||||
VersionNumber: 0.0.5
|
||||
@@ -0,0 +1,39 @@
|
||||
FUNCTION "FC_ParseCheckForStart" : Bool
|
||||
TITLE = FC_ParseCheckForStart
|
||||
{ S7_Optimized_Access := 'TRUE' }
|
||||
AUTHOR : 'e.yueksel'
|
||||
FAMILY : Parser
|
||||
VERSION : 0.1
|
||||
//Diese Baustein überprüft neue Telegramme auf Anfangskennung entsprechend der Telegrammdefinition.
|
||||
VAR_INPUT
|
||||
bInNewData : Byte; // The byte we compare to the Start marker
|
||||
arInBuffer : Array[*] of Byte; // The buffer (Array of bytes) we are parsing
|
||||
nInBufferLen : DInt; // Length of the buffer
|
||||
stInTelegramDefinition : "UDT_TelegramDefinition"; // The definition of the telegram (Parameters)
|
||||
END_VAR
|
||||
|
||||
VAR_TEMP
|
||||
j : DInt; // Loop variable
|
||||
END_VAR
|
||||
|
||||
|
||||
BEGIN
|
||||
IF (#stInTelegramDefinition.nStartMarkerLen > 0) THEN
|
||||
IF (#bInNewData = #stInTelegramDefinition.sStartMarker[#stInTelegramDefinition.nStartMarkerLen] AND
|
||||
(#nInBufferLen >= UDINT_TO_DINT(#stInTelegramDefinition.nStartMarkerLen))) THEN
|
||||
FOR #j := 0 TO UDINT_TO_DINT(#stInTelegramDefinition.nStartMarkerLen - 1) DO
|
||||
IF (#arInBuffer[#nInBufferLen -1 - #j] <> #stInTelegramDefinition.sStartMarker[UDINT_TO_DINT(#stInTelegramDefinition.nStartMarkerLen)-#j]) THEN
|
||||
#FC_ParseCheckForStart := FALSE;
|
||||
RETURN;
|
||||
END_IF;
|
||||
END_FOR;
|
||||
|
||||
#FC_ParseCheckForStart := TRUE;
|
||||
ELSE
|
||||
#FC_ParseCheckForStart := FALSE;
|
||||
END_IF;
|
||||
ELSE
|
||||
#FC_ParseCheckForStart := FALSE; // In case there is no start pattern specified, the parser state machine recognizes the telegram start itself regarding to its state.
|
||||
END_IF;
|
||||
END_FUNCTION
|
||||
|
||||
Reference in New Issue
Block a user