День добрый!
ПЛК-73, читаю из порта данные от прибора - посылка 20 байт, примерно 30 раз в секунду. При чтении периодически пропадают куски данных.
Вот код чтения:
Код:
buf: ARRAY[0..511] OF BYTE;
bufc: INT;
IF XferPortCheck() THEN
REPEAT
c := DWORD_TO_INT(SysComRead(acom.Settings.Port, ADR(rxbuf), SIZEOF(rxbuf), 0));
FOR i := 0 TO c - 1 DO
buf[bufc] := rxbuf[i];
bufc := bufc + 1;
IF bufc >= SIZEOF(buf) THEN bufc := 0; END_IF
END_FOR
UNTIL c = 0
END_REPEAT
END_IF
вот функция проверки порта:
Код:
IF NOT acom.ready THEN
p.settings.Port := 0;
p.settings.dwBaudRate := 115200;
p.settings.byParity := 0;
p.settings.dwTimeout := 0;
p.settings.byStopBits := 0;
p.settings.dwBufferSize := 0;
p.settings.dwScan := 0;
acom(Enable:=TRUE, Settings:=p.settings, Task:=OPEN_TSK);
END_IF
XferPortCheck := acom.ready;
Цикл 10мс, приемный буфер rxbuf 127 байт.
Что криминального в коде, почему теряются данные?