ExTcp  - convertotori seriale wireless per ogni esigenza
    
 
Torna a: EzTcp Home Page > Articoli Divulgativi > Linea SMS Machine > HTTP > Come utilizzare la SMS Machine/HTTP con Visual Basic
Come utilizzare la SMS Machine/HTTP con Visual Basic
Data di pubblicazione: 17-10-2003 |  Applicazione Articolo applicativo  |  | Versione Italiana  | (No English Version)The English version of this article does not exists
Parole chiave: - How-To - SMS Machine -

La SMS Machine/HTTP consente di ricevere e trasmettere SMS semplicemente effettuando transazioni HTTP.
Ad esempio, supponendo che la nostra SMS Machine/HTTP risponda all'indirizzo IP 192.168.0.101, per inviare un SMS non dovremo fare altro che richiedere il seguente indirizzo http://192.168.0.101/smssend.cgi, passando in modalità POST il numero ed il testo dell'SMS che intendiamo inviare.
Analogamente per ricevere gli SMS sarà sufficente configurare la SMS Machine/HTTP perchè richiami il nostro indirizzo IP passandoci i parametri dell'SMS ricevuto.

Quello che vogliamo realizzare qui di seguito è un programma di esempio, scritto in Visual Basic 6.0, che ci consenta di trasmettere e di ricevere SMS attraverso la SMS Machine/HTTP.

Di cosa abbiamo bisogno

Per realizzare tutto questo ci servono:

  • una SMS Machine/HTTP
  • un PC con Visual Basic installato

Invio di messaggi SMS

L'applicazione di invio dei messaggi è contenuta nel file Invio.zip, scaricabile dai link in fondo a questa pagina; una volta lanciata ci consente di specificare l'indirizzo IP della SMS Machine/HTTP, e di inviare messaggi compilando le apposite caselle di testo.

Il funzionamento dell'applicazione è molto semplice: per l'invio tramite la SMS Machine/HTTP abbiamo la necessità di richiamare una pagina che si trova sul server Web interno alla SMS Machine/HTTP stessa, inviandole in POST i parametri dell'SMS da spedire.
Quindi per stabilire la connessione HTTP con la macchina faremo uso del componente Winsock, che è un OCX standard, fornito con Visual Basic. Per includerlo nel nostro progetto occorre semplicemente selezionarlo dal menu Progetto->Componenti.

Per quanto riguarda invece l'invio dei dati dovremo utilizzare un paio di funzioni scritte da noi: la prima (chiamata SendSms nel sorgente) ci consente di costruire una richiesta POST in formato HTTP standard, come farebbe il nostro browser Web:

    ' Nome host e pagina richiesta
    Host = txtIndirizzo.Text  'Indirizzo IP della SMS Machine/HTTP
    URI = "/smssend.cgi"      'Pagina da richiedere per l'invio
  
    'Coodifica in formato Url le stringhe da inviare
    ReqBody = ""
    ReqBody = "num=" + UrlEncode(numero) + "&text=" + 
          UrlEncode(testo) + "&Pwd=SMS1234&mode=" + Str$(modo)
    ContentLength = Len(ReqBody)

    'Costruisce l'header della richiesta POST
    DataToSend = "POST " + URI + " HTTP/1.1" + vbLf
    DataToSend = DataToSend + "Host: " + Host + vbLf
    DataToSend = DataToSend + "User-Agent: SMS Machine (http://www.smsmachine.it)" + vbLf
    DataToSend = DataToSend + "Content-Type: application/x-www-form-urlencoded" + vbLf
    DataToSend = DataToSend + "Content-Length: " + Str$(ContentLength) + vbLf + vbLf
    DataToSend = DataToSend + ReqBody + vbLf

Questa funzione, al suo interno, fa uso della seconda funzione che dovremo creare, chiamata UrlEncode; questa funzione non fa altro che "codificare" i caratteri non alfanumerici della stringa passata in un formato standard HTTP (un segno di '%' seguito da un numero esadecimale che rappresenta il codice ASCII del carattere da codificare): ad es il carattere "spazio" verrà tradotto con il suo equivalente "%20".

Ottenute queste due funzioni l'applicazione non necessita di altro: quando si preme il pulsante 'Invia il Messaggio' vengono controllati i dati inseriti (Numero di telefono e lunghezza del messaggio SMS) e quindi viene attivata la sequenza di invio:

  • viene chiamata la funzione che genera la richiesta POST
  • viene aperto il socket verso la SMS Machine/HTTP
  • vengono scritti i dati del POST all'interno del socket
  • si attende la risposta della SMS Machine/HTTP
  • la connessione viene chiusa

E' possibile seguire tutta la sequenza dei messaggi che vengono scambiati dal PC con la SMS Machine/HTTP nella finestra di Log, presente sulla parte destra del Form dell'applicazione.

A questo punto se tutto è andato bene dovremo vedere nella finestra di Log il messaggio di accettazione del messaggio da perte della SMS Machine/HTTP: "errno=0&desc=SMS queued&SmsIndex=1" ed il destinatario del messaggio lo vedrà arrivare sul suo telefonino.

Ricezione di un SMS

Per ricevere un SMS dobbiamo fare in modo che il nostro PC agisca come un server Web; infatti la SMS Machine/HTTP, al momento della ricezione di un SMS, esegue una richiesta HTTP verso il server da noi specificato in fase di configurazione. Questo è esattamente il comportamento del secondo programmino di esempio, che ultilizza lo stesso controllo Winsock per porsi in attesa di connessioni sulla porta 80, proprio come farebbe un server Web.

Per poter far funzionare l'esempio occore, per prima cosa, avere configurato la nostra SMS Machine/HTTP per fare in modo che, alla ricezione di un SMS, richiami il nostro indirizzo IP. Nel seguito supporremo che tale indirizzo sia 192.168.0.203.
Apriamo quindi il configuratore della SMS Machine/HTTP e scriviamo nell'apposito campo il percorso verso il nostro PC: http://192.168.0.203/index.html. Scegliamo anche la modalità con cui vogliamo che ci vengano trasmessi i parametri: nel nostro caso POST.

A questo punto possiamo lanciare il programma Ricevi.exe. Nella finestra di tale programma sono visibili: il nome del nostro PC, il suo indirizzo IP, i dati dell'ultimo SMS ricevuto ed una finestra di Log in cui possiamo vedere il traffico di rete.
Se la nostra SMS Machine/HTTP è già configurata ed è connessa alla rete dovremo vedere che, ogni 2 secondi circa, una connessione proveniente dal suo indirizzo IP viene aperta è chiusa. Questa connessione è la richiesta di PING che la SMS Machine/HTTP esegue per verificare l'effettiva presenza del server Web; infatti se noi usciamo dalla nostra applicazione Ricevi.exe, il led L2 sulla SMS Machine/HTTP comincia a lampeggiare a brevi intervalli.

Ora tutto è pronto per la ricezione: inviamo un messaggio al numero GSM della SMS Machine/HTTP è vediamo che dopo qualche secondo, nella finestra di Log, appare una connessione diversa dalle altre, contenente i dati in POST del nostro SMS.
Gli stessi dati verranno anche riportati negli appositi campi nella parte sinistra del Form.

Il funzionamento dell'applicazione è semplice: quando il controllo Winsock che ascolta sulla porta 80 riceve dei dati, richiama l'evento Rete_DataArrival. Se la connessione non contiene il POST i dati vengono scartati e si torna in ascolto. Se invece i dati contengono il POST viene eseguita la funzione ParseMessage, riportata qui sotto:

  ' Ricava la lunghezza del POST
  Pos = InStr(sData, "Content-length:")
  Fine = InStr(Pos, sData, vbLf)
  Pos = Pos + 15
  Lungh = Val(Mid$(sData, Pos + 1, Fine - Pos))
  'Ricava la stringa di POST
  Post = Mid$(sData, Fine + 2, Len(sData) - Fine + 2)
  'Ricava il numero di Telefono
  Pos = InStr(Post, "=") + 1
  Fine = InStr(Pos, Post, "&")
  Numero = Mid$(Post, Pos, Fine - Pos)
  If Numero <> "" Then
      lblNumero.Caption = Numero
  Else
      lblNumero.Caption = "(Nessun Numero)"
  End If
  'Ricava la Data del messaggio
  Pos = InStr(Fine, Post, "=") + 1
  Fine = InStr(Pos, Post, "&")
  Data = DecodeData(Mid$(Post, Pos, Fine - Pos))
  lblData.Caption = Data
  'Ricava il messaggio
  Pos = InStr(Fine, Post, "=") + 1
  Fine = InStr(Pos, Post, "&")
  Messaggio = DecodeData(Mid$(Post, Pos, Fine - Pos))
  lblMessaggio.Caption = Messaggio

Questa funzione non fa altro che esaminare la stringa ricevuta, per ricavare il valore delle variabili che la SMS Machine/HTTP ci ha passato.
Unica nota è che ogni valore viene è codificato dalla SMS Machine/HTTP secondo lo schema HTTP che abbiamo utilizzando anche noi per trasmettere, in cui ogni carattere speciale è identificato con il segno di '%' seguito dal valore esadecimale del codice ASCII del carattere stesso. Per questo motivo viene chiamata la funzione DecodeData che riconverte la stringa nel formato classico.

Da questo punto in poi i dati dell'SMS ricevuto sono disponibili nelle variabili Data, Numero e Messaggio e l'applicazione si potrebbe sviluppare in moltissimi modi, secondo le nostre esigenze. Ad esempio potremmo analizzare il messaggio alla ricerca di particolari stringhe di comandi, oppure memorizzarlo in un database di messaggi ricevuti.

Sviluppi e potenzialità del sistema

Con il metodo appena visto è possibile integrare in maniera semplice ed immediata, la messaggistica SMS nella nostra applicazione.
I due programmini di esempio presentati possono essere fusi insieme per poter trasmettere e ricevere contemporaneamente, aprendo la strada a moltissime idee di utilizzo.
Ad esempio si potrebbe creare un database che contenga informazioni rilevanti per i nostri utenti (ad esempio una rubrica telefonica) e permettere loro di interrogarlo via SMS. Per fare questo sarebbe sufficiente analizzare il messaggio in arrivo alla ricerca di comandi di interrogazione da noi definiti, effettuare le query sul database e ritornare i dati ottenuti all'utente attraverso l'SMS di risposta.
Altra applicazione interessante è la realizzazione di una stazione di allarme via SMS, che potrebbe essere interrogata anche direttamente dal nostro telefonino.
Inoltre il sistema ha notevoli doti di scalabilità: è sufficiente aggiungere sulla rete nuove SMS Machine/HTTP (fino ad esaurimento degli IP della rete!) per poter aggiungere nuovi numeri GSM per la ricezione, utilizzando la stessa applicazione per il trattamento degli SMS.

File relativi a questo articolo

Applicazione di Invio SMS
Applicazione per la Ricezione di SMS

Articoli correlati

  • SMS Machine/HTTP - Gateway SMS - HTTP
    SMS Machine/HTTP riceve e trasmette messaggi SMS e li comunica direttamente ai tuoi script web qualunque sia il linguaggio di programmazione o il sistema operativo scelto.
    Funziona con normali carte SIM di qualunque operatore telefonico alle normali tariffe commerciali.
    SMS Machine/HTTP è un prodotto professionale dedicato alle aziende che sviluppano servizi WEB e desiderano integrare le loro applicazioni con la messaggistica SMS in modo rapido, semplice ed economico!


Segnala questo articolo: 

Delicious         



Parole chiave: - How-To - SMS Machine -

Data di pubblicazione: 17-10-2003Hits: 55153
I marchi citati sono proprietà dei titolari dei relativi diritti. Le caratteristiche tecniche e i prezzi riportati sono indicativi e soggetti a variazioni senza preavviso. Le foto non hanno valore contrattuale. Nonostante accurate verifiche, il presente documento può contenere prezzi o specifiche errati. Area SX si scusa in anticipo e si impegna ad evitare tali imprecisioni.

 Area SX store
In questa sezione puoi ordinare direttamente i prodotti descritti in questo articolo
Tutti i prezzi indicati sono espressi in Euro con IVA e spese di trasporto escluse. I prezzi si riferiscono al singolo pezzo
DescrizioneCodicePrezzo
Per maggiori informazioniSMS Machine HTTP/EMAIL
Gateway per lo scambio di messaggi SMS tra rete GSM ed Applicazioni WEB.
SMS Machine HTTP riceve i tuoi SMS e li inoltra ad un server o ad una casella EMAIL e riceve chiamate HTTP o EMAIL che vengono trasformate in SMS.
Gestisce SMS concatenati (fino a 300 caratteri), notifiche di ricezione, messaggi di tipo 'attivo' WAP Push e squilli
Caratteristiche:
  • Modem Quad Band 800/900/1800/1900 MHz
  • Interfaccia di rete 10/100Mbit
  • Alimentatore a parete


Prodotto compliant RoHs
SMS-HTTP€ 449.00
€ 390.00
Per maggiori informazioniPer maggiori informazioni
 Aggiungi la quantità indicata nel carrello

Area SX s.r.l. - Via Stefano Longanesi 25, 00146 ROMA - Tel: +39.06.99.33.02.57 - Fax: +39.06.62.20.27.85 - P.IVA 06491151004