Questo blocco funzione esegue la ricezione dei messaggi SMS, per la gestione del modem si collega al FB ModemCore di cui occorre fornire l’indirizzo di istanza. In TCheck occorre definire il tempo di pausa tra le esecuzioni del controllo ricezione messaggi.
Alla ricezione di un messaggio SMS si attiva per un loop di programma l’uscita SMSRxD, su Number è ritornato il numero da cui si è ricevuto il messaggio ed in SMSText viene ritornato l’indirizzo del buffer con il messaggio ricevuto che rimane presente in uscita per un solo loop di programma.
Descrizione
Modem (@ModemCore) Indirizzo dell’istanza FB ModemCore di gestione modem.
TCheck (TIME) Tempo di pausa tra esecuzioni controllo ricezione messaggi.
Fault (BOOL) Attivo per un loop se errore gestione.
SMSRxD (BOOL) Attivo per un loop se messaggio ricevuto.
Number (STRING[16]) Numero di telefono da cui si è ricevuto il messaggio.
MSTText (@STRING) Pointer testo messaggio ricevuto.
Messages (UDINT) Contatore messaggi ricevuti.
Errors (UDINT) Contatore errori esecuzione.

Esempi
Come utilizzare gli esempi.
Nell’esempio alla ricezione di un SMS il numero ed il testo sono salvati in buffers di memoria.
LogicLab (Ptp118, ST_ModemSMSReceive
)
PROGRAM ST_ModemSMSReceive
VAR
SMSNumber : STRING[ 16 ]; (* Number of received SMS *)
SMSText : STRING[ 256 ]; (* Text of received SMS *)
TCPClient : SysTCPClient; (* TCPClient management *)
Mdm : ModemCore; (* Modem core FB *)
SMSRx : ModemSMSReceive; (* Modem SMS receive *)
END_VAR
// *****************************************************************************
// PROGRAM "ST_ModemSMSReceive"
// *****************************************************************************
// The program shows how to receive SMS.
// -----------------------------------------------------------------------------
// -------------------------------------------------------------------------
// INITIALIZATIONS
// -------------------------------------------------------------------------
// Program initializations.
IF (SysFirstLoop) THEN
// TCP Client initialization.
TCPClient.PeerAdd:=ADR('192.168.0.184'); //Peer address
TCPClient.PeerPort:=1000; //Peer port
TCPClient.LocalAdd:=ADR('0.0.0.0'); //Local address
TCPClient.LocalPort:=0; //Local port
TCPClient.FlushTm:=50; //Flush time (mS)
TCPClient.LifeTm:=60; //Life time (S)
TCPClient.RxSize:=256; //Rx buffer size
TCPClient.TxSize:=256; //Tx buffer size
// FB Modem initialization.
// TCheck must be set to a value less than TCPClient LifeTm.
// TPower must be set to the time required to modem powering on.
Mdm.Enable:=TRUE; //Enable
Mdm.SpyOn:=TRUE; //Spy On
Mdm.Type:=MODEM_TYPE#WLR220; //Modem WLink WL-R220
Mdm.TCheck:=T#30s; //Check time
Mdm.TPower:=T#60s; //Power time
// Set SMS receive parameters.
SMSRx.TCheck:=T#15s; //Check time
END_IF;
// -------------------------------------------------------------------------
// MODEM CORE MANAGEMENT
// -------------------------------------------------------------------------
// Modem core.management.
TCPClient(Connect:=Mdm.Connect); //TCPClient management
Mdm(File:=TCPClient.File); //Gestione modem core
SMSRx(Modem:=ADR(Mdm)); //Modem SMS receive
// -------------------------------------------------------------------------
// SMS RECEPTION
// -------------------------------------------------------------------------
// On a SMS reception the number and text are copied in a buffers.
IF (SMSRx.SMSRxD) THEN
SMSNumber:=SMSRx.Number; //Number of received SMS
eTO_JUNK(Sysmemmove(ADR(SMSText), SMSRx.SMSText, Sysstrlen(SMSRx.SMSText)));
END_IF;
// [End of file]