Questa funzione da eseguire in task Back, esegue la lettura di un numero definito di stringhe di lunghezza definita dal terminale di I/O (Stream) indicato dal parametro File, precedentemente aperto dalla relativa funzione di apertura risorsa.
La funzione ritorna il numero di caratteri letti, se nello stream non ci sono abbastanza caratteri da soddisfare i parametri, viene ritornato un numero rispetto al valore definito in (Size*Count). Per essere certi che vi siano sufficienti caratteri nello stream è possibile utilizzare la funzione SysFGetIChars che ne ritorna il numero.
Descrizione
Buf (PVOID) Indirizzo del buffer dove trasferire le stringhe lette.
Size (INT) Lunghezza in caratteri delle stringhe da leggere.
Count (INT)) Numero di stringhe da leggere.
File (eFILEP) Terminale di I/O (Stream) ritornato dalla funzione di apertura risorsa.
La funzione ritorna un (INT) con il numero di caratteri letti, se il valore ritornato è minore di Size*Count, significa che non vi erano abbastanza dati nello stream.

Esempi
Come utilizzare gli esempi.
Al primo loop di esecuzione viene istanziato un server TCP in ascolto sulla porta 3000. Collegandosi al server con un client Telnet ed inviando dati ad ogni 5 caratteri ricevuti ne verrà eseguito l’echo.
LogicLab (Ptp116, ST_Sysfread)
PROGRAM ST_Sysfread
VAR
Fp : eFILEP; (* File pointer *)
RxChars : DINT; (* Received characters *)
TxChars : DINT; (* Transmitted characters *)
RxString : STRING[ 10 ]; (* Received string *)
TCPServer : SysTCPServer; (* TCP server *)
END_VAR
// *****************************************************************************
// PROGRAM "ST_Sysfread"
// *****************************************************************************
// Opens a TCP server on port 3000 and echoes the received characters.
// -----------------------------------------------------------------------------
// -------------------------------------------------------------------------
// INITIALIZATION
// -------------------------------------------------------------------------
// TCPServer initialization.
IF (SysFirstLoop) THEN
TCPServer.FilesArr:=ADR(Fp); //Files array
TCPServer.LocalAdd:=ADR('0.0.0.0'); //Local address
TCPServer.LocalPort:=3000; //Local port
TCPServer.MaxConn:=1; //Accepted connections
TCPServer.FlushTm:=50; //Flush time (mS)
TCPServer.LifeTm:=30; //Life time (S)
TCPServer.RxSize:=128; //Rx buffer size
TCPServer.TxSize:=128; //Tx buffer size
END_IF;
// Manage the TCP server.
TCPServer(Enable:=TRUE); //TCPServer management
// -------------------------------------------------------------------------
// ECHO CHARACTERS
// -------------------------------------------------------------------------
// Check if a client is been connected.
IF NOT(SysFIsOpen(Fp)) THEN RETURN; END_IF;
// Wait until at least 5 chars are received and echoes them.
IF ((SysFGetOSpace(Fp) >= 5) AND (SysFGetIChars(Fp) >= 5)) THEN
RxChars:=Sysfread(ADR(RxString), 5, 1, Fp); //Received characters
TxChars:=Sysfwrite(ADR(RxString), 1, 5, Fp); //Transmitted characters
eTO_JUNK(SysFOBfFlush(Fp)); //Flush output characters
END_IF;
// [End of file]