IF di0 THEN
closeComPort:=SysComClose(opencomport);
do0:=FALSE;
do1:=FALSE;
do2:=FALSE;
do3:=FALSE;
i1:=4.1;
ELSE
IF beg THEN
IF openComPort=INVALID_HANDLE THEN
bufold:=0;
comPort:=0;(*RS-485*)
openComPort:=SysComOpen(comPort);
END_IF;
IF openComPort=INVALID_HANDLE(*( ( (255*256+255)*256+255)*256 + 255 )*) THEN
i1:=5.1;
closeComPort:=SysComClose(comPort);
popytka:=(popytka+1) MOD 500;
IF popytka=0 THEN
do0:=NOT do0;
END_IF;
ELSE
i1:=10.1;
ComSet.dwBaudRate:=115200;(*9600;*)
ComSet.byParity:=0;
ComSet.byStopBits:=0; (*1 stop bit*)
ComSet.dwBufferSize:=4;
ComSet.dwScan:=0;
ComSet.dwTimeout :=10;
ComSet.Port:=comPort;
ok:=SysComSetSettings(openComPort,ADR(ComSet));
IF ok THEN
do3:=TRUE;
vI:=0.001;
beg:=FALSE;
do0:=FALSE;
ELSE
popytka:=(popytka+1) MOD 1000;
IF popytka=0 THEN
do0:=NOT do0;
END_IF;
END_IF;
END_IF;
ELSE
bytesread:=SysComRead(opencomport,ADR(buf),4,300);
IF (bytesread=4) OR (bytesread=1) THEN
I1:=buf;
I2:=4;
bufold:=buf;
END_IF;
IF bytesread>0 THEN
do0:=((bytesread MOD 2)=1);
do1:=(((bytesread/2) MOD 2)=1);
do2:=(((bytesread/4) MOD 2)=1);
END_IF;
END_IF; (* IF beg ELSE*)
END_IF; (*IF di0 ELSE*)