例如:有一个扫码枪,扫码完成后的数据要求存入数组中,而后由其它指令来进行取数据,每次只能取走一个数据,而且要先存的先取走,并且随时可以再存入
1:新建一个FB块,SCL语言写,接口接口如下:
2:程序正文:
REGION 存数据
IF #启动填充 = TRUE AND #INDEX <#count THEN //#启动填充按钮为真时,
#INDEX := #INDEX + 1; //索引加1,索引的初始化值为0,
IF #INDEX <= #count THEN //索引小于等于存入的数组的最大长度
#数据数组[#INDEX] := #填充数据;//把填充的数据存入数组
END_IF;
END_IF;
#启动填充 := FALSE;//#启动填充按钮复位
END_REGION
REGION 取数据
IF #启动取出 = TRUE AND #INDEX >= 1 THEN //#启动取出按钮为真时,
#取出数据 := #数据数组[1]; //把数组的第一个元素取出
FOR #i := 1 TO #count - 1 DO //把数组内的数据向前移动一个位置
#数据数组[#i] := #数据数组[#i + 1];
END_FOR;
#数据数组[#INDEX] := -9999; // 把数组的最后一个元素给-9999,表示说明被取走一个
#INDEX := #INDEX - 1; //取走数据,把索引减1
END_IF;
#启动取出 := FALSE; //#启动取出按钮复位
END_REGION
3:开始写入数据
4:一共存入10个数据
5:开始取数据
6:取完后的数据地址写入-9999,表示数据已被取走
可以写入数据长度为10个,如果想要更长的数组,把count改为更长即可
审核编辑 :李倩
全部0条评论
快来发表一下你的评论吧 !