Passa al contenuto principale

ModemSMSReceive, receives SMS messages

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​

Immagine FB_ModemSMSReceive

ParametroTipoDescrizione
Modem@ModemCoreIndirizzo dell’istanza FB ModemCore di gestione modem.
TCheckTIMETempo di pausa tra esecuzioni controllo ricezione messaggi.
FaultBOOLAttivo per un loop se errore gestione.
SMSRxDBOOLAttivo per un loop se messaggio ricevuto.
NumberSTRING_\[16\]Numero di telefono da cui si è ricevuto il messaggio.
SMST_Text@STRINGPointer testo messaggio ricevuto.
MessagesUDINTContatore messaggi ricevuti.
ErrorsUDINTContatore 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]