Потребовалось читать данные по нестандартному протоколу Rnet. Сварганил по-быстрому читалку. Если нужна писалка, то увы — доделывайте сами. К сожалению, читалка игнорирует описание протокола в части таймаутов и повторных попыток. Просто в боевых условиях не нужна. Короче, «чё есть — то есть», «дарёному коню» и т.д.
Пример использования:
Код:
PROGRAM PLC_PRG
VAR
Settings: COMSETTINGS;
COM1: COM_SERVICE;
rnet1: RNET;
result: POINTER TO INT;
END_VAR
IF NOT COM1.Ready THEN
Settings.Port := 1;
Settings.dwBaudRate := 19200;
Settings.byParity := 0;
Settings.dwTimeout := 0;
Settings.byStopBits := 0;
Settings.dwBufferSize := 0;
Settings.dwScan := 0;
COM1(Enable := TRUE, Settings := Settings, Task := OPEN_TSK);
ELSE
rnet1(Enable := TIME_TO_DWORD(TIME()) MOD 1000 > 500, ComHandle := Settings.Port, DevAddr := 5, ChNum := 0, RegAddr := 0);
IF rnet1.Complete THEN result := rnet1.Data; END_IF
END_IF