Questa funzione permette di inviare dati alla console di spionaggio (Accessibile da Telnet con il comando SpyData). É possibile definire sia il modo di visualizzazione dei dati spiati Mode che abbinare una etichetta nella stringa spiata Label. Il parametro Length limita la lunghezza dei caratteri in spionaggio.
Con il parametro TFlags è possibile definire un pattern di 32 bits che viene usato come trigger per la visualizzazione dei dati spiati nella console di spionaggio Telnet. La funzione ritorna una varaibile (BOOL), TRUE se vi è spazio per salvare il record spiato e FALSE se la console è occupata.
Sostituisce SysSpyData
Sostituisce la funzione SysSpyData, è stato aggiunto il parametro Length per limitare la lunghezza della stringa di spionaggio. Nel caso si voglia limitare la lunghezza, sono stati definiti i modi SPY_ASCII_L, SPY_ASCHEX_L. Definito modo SPY_CHECK per eseguire il test sullo spazio nel buffer di spionaggio. La precedente dichiarazione:
i:=SysSpyData(SPY_ASCII, 16#80000000, ADR('Er'), ADR('Error text'));
Diventa
i:=SysWrSpyData(SPY_ASCII, 0, 16#80000000, ADR('Er'), ADR('Error text'));
Mode (SPY_MODE) Definisce il modo di visualizzazione dei dati spiati (Definizione).
Length (UDINT) Lunghezza a cui troncare la stringa, si utilizza con i modi SPY_ASCII_L, SPY_ASCHEX_L, SPY_BINARY.
TFlags (DWORD) Definisce i bits di trigger per la visualizzazione dei dati spiati.
Label (@STRING) Etichetta riportata nella stringa spiata.
DPtr (PVOID) Puntatore alla stringa dati da spiare.
La funzione ritorna un (BOOL) FALSE se console di spionaggio occupata, TRUE se funzione eseguita correttamente

Record di spy
Nei sistemi basati su processori ARM il record visualizzato nella console di spionaggio ha lunghezza totale di 80 caratteri, negli altri sistemi non vi è un limite sulla lunghezza a meno che non sia definito nel parametro Length. Tipicamente è un record del tipo:
20:17:30.446022|Label|Spy data string--------------------------------------------
Il record inizia con un campo ora, seguito dal tempo intercorso dal record precedente (in S), i primi due campi hanno lunghezza costante (15 Caratteri), a seguire racchiuso tra i caratteri | vi è la stringa indicata nel parametro Label, a seguire i dati di spionaggio. Nel caso in cui vengano persi records di spionaggio al posto del tempo intercorso verrà visualizzato (—-).
Esempi
Come utilizzare gli esempi.
Ogni secondo sono inviati 3 messaggi alla console di spionaggio. Ogni messaggio ha Mode diverso ed è contraddistinto da una etichetta che lo identifica. Ecco il risultato visibile dalla console di spionaggio.
11:19:28|Sp 1|Hello!..
11:19:28|Sp 2|Hello![0D][0A]
11:19:28|Sp 3|48 65 6C 6C 6F 21 0D 0A
LogicLab (Ptp116, ST_SysWrSpyData)
PROGRAM ST_SysWrSpyData
VAR
CaseNr : USINT; (* Program case *)
TimeBf : UDINT; (* Time buffer (mS) *)
TString : STRING[ 32 ]; (* Text string *)
END_VAR
// *****************************************************************************
// PROGRAM "ST_SysWrSpyData"
// *****************************************************************************
// Sends to spy console 3 data records.
// -----------------------------------------------------------------------------
// -------------------------------------------------------------------------
// PROGRAM INIT
// -------------------------------------------------------------------------
// Program init.
IF (SysFirstLoop) THEN
TString:='Hello!$r$n'; //Text string
TimeBf:=SysTimeGetMs(); //Time buffer (mS)
END_IF;
// -------------------------------------------------------------------------
// SEND SPY DATA RECORDS
// -------------------------------------------------------------------------
// Wait 1 second.
IF ((SysTimeGetMs()-TimeBf) < TO_UDINT(T#1s)) THEN RETURN; END_IF;
TimeBf:=SysTimeGetMs(); //Time buffer (mS)
// Change the program case.
CaseNr:=CaseNr+1; //Program case
IF (CaseNr > 2) THEN CaseNr:=0; END_IF;
// Send spy message.
CASE (CaseNr) OF
0: eTO_JUNK(SysWrSpyData(SPY_ASCII, 0, 16#00000001, ADR('Sp 1'), ADR(TString))); //Ascii mode
1: eTO_JUNK(SysWrSpyData(SPY_ASCHEX, 0, 16#00000010, ADR('Sp 2'), ADR(TString))); //Extended ascii mode
2: eTO_JUNK(SysWrSpyData(SPY_BINARY, 8, 16#00000100, ADR('Sp 3'), ADR(TString))); //Binary mode
END_CASE;
// [End of file]