Vai al contenuto

ModemSMSReceive, receives SMS messages

Vai all indice del manuale di programmazione
Tipo: Blocco funzione
Libreria LogicLab: eLLabModemLib
Libreria Codesys: Non disponibile

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.

Immagine FB_ModemSMSReceive

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]
Was this article helpful?