基于CODESYS平台的ANY数据类型自动生成Buffer序列
什么场景会用到Buffer序列?Buffer序列一般用在两个控制器或者2个进程之间的通讯。标准的通讯协议库会自动生成Buffer序列,想要使用自定义协议时,就需要自创建Buffer序列。
下面就是基于CODESYS平台的ANY数据类型自动生成Buffer序列源代码Function。可以利用该功能Function方便连续的生成Buffer序列。
FUNCTION FC_MakeBuffer : BOOL
VAR_INPUT
anyInput: ANY;
pInPos : POINTER TO DINT;
pInBuffer : POINTER TO ARRAY OF BYTE;
xInVariableEn : BOOL;
pInVariableCount: POINTER TO INT;
END_VAR
VAR
i : DINT;
pTemp1 : POINTER TO BYTE;
pTemp2 : POINTER TO BYTE;
VariableProperty : DataProperty1;
END_VAR
VariableProperty.diLength:= anyInput.diSize;
VariableProperty.pPostion := anyInput.pValue;
pTemp1 := VariableProperty.pPostion;
pTemp2 := pInBuffer + DINT_TO_DWORD(pInPos^);
FOR i := 0 TO VariableProperty.diLength-1 BY 1 DO
pTemp2^ := pTemp1^;
pTemp1:= pTemp1 + 1;
pTemp2:= pTemp2 + 1;
END_FOR;
pInPos^ := pInPos^ + VariableProperty.diLength;
IF xInVariableEn THEN
pInVariableCount^ := pInVariableCount^ + 1;
END_IF;注意:所有变量都是最低位在左侧,做高位再右侧。字符串的话,最左侧字符就在最左侧。
页:
[1]