基于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[0..255] 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;  

注意:所有变量都是最低位在左侧,做高位再右侧。字符串的话,最左侧字符就在最左侧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Codesys_PEPSI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值