﻿<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.12">
  <POU Name="FB_Scanner" Id="{273e8a6f-03ec-4ed5-8396-3902742809cb}" SpecialFunc="None">
    <Declaration><![CDATA[FUNCTION_BLOCK FB_Scanner
VAR_INPUT
	nState					: UINT;
END_VAR
VAR_OUTPUT
	sCode					: STRING(255);
	bError					: BOOL;
	bNewCode				: BOOl;
END_VAR
VAR_IN_OUT
	stControl				: ST_Control;
	stStatus				: ST_Status;
END_VAR
VAR
	bNewData				: BOOL;
	aStringData				: ARRAY [0..479] OF STRING(1);
	rtNewData				: R_TRIG;
	i						: UINT;
	j						: UINT;
	k						: UINT;
	iEnd					: UINT;
	aOldResultData			: ARRAY [0..479] OF BYTE;
END_VAR
]]></Declaration>
    <Implementation>
      <ST><![CDATA[FOR i:=0 TO 479 DO
	IF stStatus.aResultData[i]<>aOldResultData[i] THEN
		bNewData:=TRUE;
	EXIT;
	ELSE
		bNewData:=FALSE;
	END_IF
END_FOR

rtNewData(CLK:=bNewData);
	
IF rtNewData.Q THEN
	IF ststatus.uStatusBits.stStatusBits.JobPass THEN
		FOR i:=0 TO 479 DO
			aStringData[i]:=F_ToChr(stStatus.aResultData[i]);
		END_FOR
		FOR j:=42 TO 479 DO
			IF aStringData[j]='' THEN
				iEnd:=j;
			EXIT;
			END_IF
		END_FOR
		sCode:='';
		FOR k:=42 TO iEnd-1 DO
			sCode:=CONCAT(sCode,aStringData[k]);
		END_FOR
	ELSE
		sCode:='';
	END_IF
END_IF

bNewCode:=bNewData AND (sCode<>'');
aOldResultData:=stStatus.aResultData;

bError:=nState<>0 OR stStatus.uStatusBits.stStatusBits.JobFail; // OR stStatus.uStatusBits.stStatusBits.ErrorAvailable;



]]></ST>
    </Implementation>
  </POU>
</TcPlcObject>