Meteo Italia v. 3.0 Programma di monitoraggio meteorologico Piani Ivan Rosafio Alessandro

Pagina creata da Emma Spina
 
CONTINUA A LEGGERE
Meteo Italia v. 3.0 Programma di monitoraggio meteorologico Piani Ivan Rosafio Alessandro
ITIS Enea Mattei

            Esame di stato 2010/2011

                     Tesina

 Meteo Italia v. 3.0
Programma di monitoraggio meteorologico

                                               Piani Ivan
                                       Rosafio Alessandro

                 Classe 5^ E
Meteo Italia v. 3.0 Programma di monitoraggio meteorologico Piani Ivan Rosafio Alessandro
Indice
Introduzione_____________________________________1
Caricamento del programma________________________1
Presentazione dell’ interfaccia grafica_________________2
Menu a scomparsa________________________________2
Home__________________________________________3
Gestione della connessione_________________________4
Immagini nel pannello Home_______________________5
Bollettino meteo nel pannello Home__________________5
TG Meteo_______________________________________7
Webcam________________________________________9
Earth_________________________________________11
Sms / Mail_____________________________________11
Approfondimento sulla tecnologia GSM _____________12
E-mail________________________________________14
Rilevazione locale_______________________________16
Dispositivo di rilevazione della temperatura___________17
Stampa della tabella______________________________20
Fonti e documentazioni___________________________23
                                                      1
Meteo Italia v. 3.0 Programma di monitoraggio meteorologico Piani Ivan Rosafio Alessandro
Introduzione
Meteo Italia è nato dopo vari tentativi ed idee che hanno contribuito a farne un progetto
sempre più ampio ed evoluto.

Il programma raggruppa il maggior numero di informazioni possibili per offrire all’ utente un
vasto margine di valutazione per il meteo in Italia e nella propria zona di residenza.

L’ intero progetto è stato scritto in linguaggio di programmazione .NET C# utilizzando il noto
ambiente di sviluppo Microsoft Visual Studio 2010.

Sono state sviluppate quattro versioni del programma: 1.0, 2.0, 2.1 e l’ ultima versione 3.0, la
più completa, efficiente e affidabile.

Ogni versione, eccetto la 2.1, è stata completamente riscritta partendo da un nuovo progetto
risparmiando circa 300 righe di codice ogni volta, ciò contribuisce ad una notevole leggerezza
dell’ intero programma.

Questo lavoro intende valorizzare le conoscenze acquisite durante i tre anni di studio all’
interno della scuola e i notevoli stimoli, interessi nati e sviluppati studiando in modo
individuale nel tempo libero.

Sono state utilizzate conoscenze in ambito informatico per la maggior parte, tramite
linguaggio C#, S.Q.L. ed HTML, oltre a conoscenze di elettronica digitale e trasmissione di
dati in GSM riguardante la materia di sistemi.

                         Caricamento del programma
Il programma verrà caricato dal sistema operativo tramite la seguente parte di codice:

                                                                     “isloading” è un oggetto
                                                                     timer che è stato
                                                                     precedentemente aggiunto
                                                                     al progetto e provvederà a
                                                                     far apparire l’ immagine
                                                                     iniziale del programma,
                                                                     una volta che il parametro
                                                                     opacity sarà al valore
                                                                     massimo (1) l’ immagine
di caricamento scomparirà lasciando spazio all’ interfaccia grafica di Meteo Italia v3.0.

                                                                                              2
Meteo Italia v. 3.0 Programma di monitoraggio meteorologico Piani Ivan Rosafio Alessandro
Presentazione dell’ interfaccia grafica
Una volta eseguito il caricamento
apparirà la seguente finestra,
contenente una barra nella parte alta
con due pulsanti per la chiusura del
programma e la riduzione ad icona, un
menu a scomparsa nella parte sinistra,
il titolo della sezione visualizzata e
nella restante parte le informazioni
utili all’utente finale per prevedere il
meteo dei successivi giorni.

Scorrendo i pulsanti del menu
potremo ottenere informazioni quali
immagini da satellite della situazione
italiana ed europea, video con la funzione di presentare il meteo per il giorno corrente e
successivo, webcam dell’ intera Lombardia, Earth , il pulsante “Sms / Mail” che ci consente di
inviare il meteo ad amici oppure a clienti nel caso di un’ azienda, ed infine “Locale” con il
quale potremo monitorare la temperatura dell’ ambiente nel quale ci troviamo attraverso il
dispositivo USB realizzato.

                                 Menu a scomparsa
Il menu a scomparsa è stato realizzato ingrandendo un pannello laterale alla pressione del
pulsante sul lato sinistro, attivando la seguente parte di codice:

Una volta premuto il pulsante verrà
attivato il timer “menu” che a seconda
dello stato del menu (stato_menu=0 se
chiuso e stato_menu=1 se aperto) aprirà
o chiuderà il menu.

                                                                                             3
Meteo Italia v. 3.0 Programma di monitoraggio meteorologico Piani Ivan Rosafio Alessandro
Il pannello verrà ingrandito ad ogni “Tick” del timer, e di conseguenza verrà spostato anche il
bottone necessario per aprire il menu.

Una volta che il menu ha raggiunto la dimensione prestabilita il timer sarà disattivato tramite il
comando: “menu.enabled=false;”
                                            Home
                                                                     Nel primo pannello
                                                                     visualizzato, Home, dopo
                                                                     aver premuto il tasto
                                                                     “connetti” visualizzeremo
                                                                     la velocità della nostra
                                                                     connessione verso l’
                                                                     esterno, troveremo due
                                                                     immagini della situazione
                                                                     attuale o al massimo di un’
                                                                     ora precedente, e un
                                                                     bollettino meteo che ci
                                                                     descriverà accuratamente il
                                                                     tempo e i principali futuri
                                                                     cambiamenti.

                                                                                              4
Meteo Italia v. 3.0 Programma di monitoraggio meteorologico Piani Ivan Rosafio Alessandro
Gestione della connessione

Una volta premuto il tasto “connetti” il programma eseguirà la seguente parte di codice:

                                                       Una volta premuto il pulsante
                                                       (macButton1) verrà eseguita la
                                                       funzione “testa_connessione”.

Tramite questa
funzione verrà
generato un
tentativo di
connessione verso
i server Google.it,
e in caso positivo
verrà determinata
la velocità di
connessione ed il programma sarà pronto per essere utilizzato, in caso negativo il programma
non visualizzerà nulla.

*Per poter utilizzare le classi Ping, PingReply ed IPStatus è necessario aggiungere la
reference: “using System.Net”.

                                                                                           5
Meteo Italia v. 3.0 Programma di monitoraggio meteorologico Piani Ivan Rosafio Alessandro
Immagini nel pannello Home
Le due immagini di presentazione vengono scaricate ed inserite nel seguente modo:

Nel caso in cui si presentasse un errore di connessione o le immagini non fossero
momentaneamente disponibili verrà visualizzato un messaggio di errore all’ interno di esse
“Impossibile contattare il server per la ricezione dell’ immagine da satellite”.

                    Bollettino meteo nel pannello Home
Il bollettino meteo è invece frutto di una procedura molto più complessa, la quale
connettendosi ad una pagina web del sito internet www.meteo.it scaricherà il relativo codice
HTML all’ interno e tramite una ricerca dovrà trovare il bollettino meteo giornaliero.

Una volta rintracciato il bollettino all’ interno del codice html della pagina verrà inserito all’
interno di un oggetto webbrowser nel form principale.

                                                                                                6
Meteo Italia v. 3.0 Programma di monitoraggio meteorologico Piani Ivan Rosafio Alessandro
Il codice per eseguire la ricerca è il seguente:

Vengono dichiarate e inizializzate due stringhe, inizio e fine, le quali contengono le parole
sempre iniziali e finali del bollettino, l’ algoritmo ricercherà queste due stringhe all’ interno
del codice HTML, una volta individuate sarà in grado di rilevare l’ intero bollettino per
inserirlo nella stringa tempString ed infine nel codice HTML dell’ oggetto webbrowser1.

In caso ci fossero problemi di connessione o eventuali problemi di ricerca, il programma
visualizzerà un errore tramite il seguente codice:

                                                                                                7
Meteo Italia v. 3.0 Programma di monitoraggio meteorologico Piani Ivan Rosafio Alessandro
TG Meteo
                                                                         Premendo il secondo
                                                                         pulsante all’ interno
                                                                         del menu si aprirà la
                                                                         scheda TG Meteo,
                                                                         attraverso la quale
                                                                         potremo visualizzare
                                                                         i video relativi al
                                                                         meteo per il giorno
                                                                         successivo e per il
                                                                         weekend.

                                                                         Le previsioni sono
                                                                         disponibili sia per l’
                                                                         Italia che per l’
                                                                         Europa.

Per prima cosa è necessario scaricare le quattro immagini relative ai video e posizionarle
correttamente all’ interno delle quattro picture-box che sono state inizializzate.

Esempio relativo all’ immagine del video “Italia”:

In caso di errore o di immagini momentaneamente non disponibili verrà inserita un’ immagine
di errore (Proprieties.Resources.error).

                                                                                             8
Meteo Italia v. 3.0 Programma di monitoraggio meteorologico Piani Ivan Rosafio Alessandro
Quando verrà cliccata l’ immagine “video_italia” verrà attivato un timer che aprirà in modo
graduale una finestra per poter visualizzare il video:

Nella stringa “video” verrà inserito un file di testo contenente il relativo codice necessario per
visualizzare il video, il link al lettore multimediale “Mediaplayer” di Microsoft e il link al
video in formato MP4.

La funzione “apertura_video_tick” che viene eseguita con un intervallo di 1 millisecondo da
parte del timer esegue le linee di codice al suo interno.

Ogni millisecondo viene cosi ingrandito di 10 pixels il pannello che dovrà contenere il video.
Inoltre viene aggiunto un bottone (chiudi_web) in modo che l’ utente possa chiudere il video
in un qualsiasi momento desiderato.

Terminata la procedura inizierà la riproduzione del video, la velocità di esso potrebbe
dipendere dalla connessione ad internet.

                                                                                               9
Webcam
Tramite questa opzione sarà possibile per l’ utente visualizzare alcune webcam della
Lombardia.

Inizialmente, come per i video, verranno scaricate tutte le immagini, successivamente, nel
momento in cui un utente desiderasse una webcam in particolare, alla pressione dell’
immagine verrà visualizzata la webcam ingrandita.

Esempio di caricamento immagine relativa alla webcam in Aprica:

                                                                                         10
Per esempio, cliccando sull’ immagine collegata alla webcam in Aprica verrà aperta l’
immagine ingrandita sfruttando il seguente codice:

All’ evento “click” viene richiamata la funzione “apri_box_webcam()” la quale posiziona e
formatta il pannello contenente l’ immagine, inoltre aggiunge ad esso il bottone “chiudi_cam”
che permette all’ utente di chiudere l’ immagine.

                                                                               Bottone “chiudi_cam”
                                                                               necessario per la
                                                                               chiusura

                                                                                         11
Earth
In questa sezione l’ utente avrà la possibilità di sfruttare il servizio “earth” offerto da Google e
implementato in Meteo Italia.

Per poter utilizzare il servizio è necessario aver installato nel pc il plugin di Google earth,
scaricabile gratuitamente del sito Google.

Earth è viene caricato nel seguente modo:

Così viene inserito in un oggetto webbrowser il codice html che permette ad esso di collegarsi
a Google e visualizzare il servizio earth.

                                         Sms / Mail

                                                                                              12
Sono stati implementati i servizi di sms e mail per poter inviare il meteo giornaliero.

I dati relativi a chi voglia ricevere il servizio vengono salvati in file, recuperati ed inseriti in
due datagridview ogni volta che il programma viene aperto.

Sms
Per l’ invio di sms, Meteo Italia utilizza un generico modem telefonico GSM. Per questioni
economiche abbiamo scelto di utilizzare il modem implementato in un telefono cellulare, ma
funzionerebbe con qualsiasi modem collegato via USB con gli appositi driver installati.

Approfondimento sulla tecnologia GSM
Il GSM è uno standard europeo per la comunicazione in telefonia mobile di seconda
generazione (2G), ormai non è più molto utilizzato poiché sono stati introdotti nuovi standard
come GPRS (che consente la commutazione di pacchetto), EDGE, UMTS (il quale aggiunge
la possibilità di effettuare videochiamate e incrementa la velocità di comunicazione).

Tuttavia per l’ invio di semplici SMS lo standard GSM offre tutto il necessario ed è di più
facile implementazione.

La velocità che raggiunge un modem GSM è di 9,6 Kbit/s, questo stabilisce una connessione
permanente con il punto di arrivo finché questa connessione non viene terminata.

Il GSM sfrutta canali da 200KHz con 8 time slot per canale, per la trasmissione voce sfrutta le
tecnologie:

TDMA: Time Division Multiple Access, codifica e comprime la voce per consentire più
conversazioni contemporanee utilizzando la stessa frequenza ma in un tempo diverso.

CDMA: Code Division Multiple Access, tecnica digitale che permette di condividere lo stesso
canale di frequenza in quanto ogni voce è distinta tramite uno pseudo-codice casuale.

Il GSM si basa interamente sul sistema cellulare, un insieme di antenne che coprono una
determinata area disposte secondo uno schema ad esagoni, e tutti confinanti l'uno con l'altro.

Questo sistema comporta una serie di vantaggi, primo tra tutti, la possibilità di ridurre la
potenza dei terminali. I costruttori hanno così cominciato a ridurre le dimensioni dei terminali
mobili, perché meno potenza in uscita significa meno fabbisogno energetico e quindi batterie
più piccole.

                                                                                                 13
A conferma di questi vantaggi è sufficiente considerare che se i primi terminali avevano
potenze in uscita nell'ordine dei 25 watt, oggi i terminali mobili hanno potenze oscillanti tra
gli 0.6 ed i 3 watt. Le reti cellulari hanno anche consentito di aumentare il numero delle
conversazioni disponibili contemporaneamente. Con il vecchio sistema se ne poteva svolgere
non più di una, adesso sono molte di più. I gestori telefonici, al fine di evitare interferenze tra
le conversazioni, assegnano frequenze leggermente differenti alle varie celle confinanti.

Accendendo un semplice telefono cellulare ci connettiamo alla cella dedicata all'area dove ci
troviamo in quel momento, la quale è collegata al "Mobile Telephone Switching Office"
(MTSO), che poi a sua volta è collegato al sistema telefonico della compagnia di telefonia
mobile.

Per inviare un singolo sms viene utilizzata la seguente funzione “invio_s(string numero, string
messaggio)” che, ricevendo in ingresso il numero del destinatario e il messaggio, provvederà
ad inviare l’ sms:

Per iniziare viene assegnata all’ oggetto serialport “thePort” il numero di porta che l’ utente ha
selezionato nella comboBox2.

                                                                                              14
Una volta che la porta è stata aperta correttamente senza generare eccezioni vengono
modificati alcuni parametri:

   • thePort.NewLine stabilisce quali caratteri verranno utilizzati per iniziare una nuova riga;
   • thePort.WriteTimeout stabilisce il tempo in millisecondi entro il quale la porta deve
     rispondere, altrimenti verrà interrotta la comunicazione;
   • thePort.DtrEnable = true stabilisce che la porta può utilizzare il comando per segnalare
     al pc la fine della comunicazione, è utilizzato quasi esclusivamente per i modem.
   • thePort.Handshake= Handshake.RequestToSend stabilisce quale dei protocolli verrà
     utilizzato per comunicare tra porta e pc;
   • thePort.ReceivedBytesThreshold stabilisce la dimensione del buffer di input in bytes;
   • thePort.DiscardInBuffer() pulisce il buffer di input in caso fossero rimasti dei dati;
   • thePort.DiscardOutBuffer() pulisce il buffer di output in caso fossero rimasti dei dati;
   • thePort.WriteLine("AT+CMGF=1") invia un comando AT al modem, settando il
     modem in modalità di text;
      *Il linguaggio di comunicazione AT è utilizzato per inviare istruzioni ai modem.
   • thePort.WriteLine("AT+CMGS=\"" + ind_numero.Text + "\"") Comunica al modem il
     numero di telefono del destinatario dell’ sms;
   • thePort.WriteLine(messaggio + " \x1A ") Comunica al modem l’ intero testo del
     messaggio e con la stringa “\x1A” termina le operazioni, inviando il messaggio;
   • thePort.Write("\r\n") Termina la riga precedente e inizializza una nuova riga;
   • thePort.BaseStream.Flush() Pulisce i buffer usati per il flusso di dati precedente e invia i
     dati che erano nei buffer al dispositivo collegato;
   • sms_close() richiama una funzione creata che chiude la porta e rilascia tutte le risorse
     utilizzate per la comunicazione.

E-Mail
Oltre all’ invio di sms è possibile inviare anche le e-mail, che vengono processate e inviate più
velocemente degli sms. Si pensi che un modem GSM impiega circa 6/7 secondi per l’ invio di
un sms mentre una e-mail se la connessione ad internet è ottimale viene inviata in 2 secondi.

Sarebbe inoltre possibile inviare oltre al meteo giornaliero anche immagini della situazione
meteorologica e immagini dal satellite.

                                                                                           15
La funzione sfruttata per l’ invio delle e-mail è la seguente:

Vengono dichiarati due oggetti di tipo “MailAddress” che si riferiranno agli indirizzi del
mittente e del destinatario, e inizializzati.

Nella stringa “oggetto” viene inserito l’ oggetto/argomento della mail che sarà poi visualizzato
dal destinatario.

Nella stringa “msg” viene inserito il testo del messaggio, variabile a seconda del meteo
selezionato (nord ovest, nord est, centro o sud). Le variabili nord_ovest, nord_est, centro e sud
vengono inizializzate quando si effettua la connessione e contengono il meteo.

Successivamente viene creato un oggetto “MailMessage” chiamato MyMail, al quale vengono
assegnati gli oggetti di tipo MailAddress precedentemente creati. Vengono poi attribuite le
stringhe oggetto e msg all’ oggetto MyMail.

Con il comando SmtpClient s = new SmtpClient(“out.virgilio.it”) viene definito quale server
verrà utilizzato per inviare le e-mail, qualsiasi altro gestore di posta sarebbe stato valido alla
condizione di aver precedentemente creato un account sul server.

Infine s.Send(MyMail) invia la mail, nel caso in cui, per un qualsiasi motivo non fosse
possibile inviarlo, verrebbe generata un’ eccezione gestita poi dalla “catch” che mostrerebbe il
messaggio di errore “Errore nell’ invio del messaggio”.

Sia per l’ invio di sms che di e-mail verso più persone vengono semplicemente
richiamate le funzioni di invio tante volte quante sono le persone.

                                                                                              16
Rilevazione locale
                                                                        L’ interfaccia di
                                                                        rilevazione locale ha
                                                                        varie funzionalità,
                                                                        prima di rilevare la
                                                                        temperatura l’ utente
                                                                        dovrà selezionare la
                                                                        porta alla quale è
                                                                        connesso il termometro
                                                                        digitale. Dopo aver
                                                                        selezionato la porta,
                                                                        cliccando il bottone
                                                                        rileva temperatura e
                                                                        aspettando alcuni
                                                                        secondi, verrà
                                                                        visualizzata la
                                                                        temperatura.

Avendo avviato il termometro e la rilevazione della temperatura sarà poi possibile rilevare la
singola temperatura oppure avviare una scansione ogni n secondi desiderati.

Tutte le temperature raccolte dal programma verranno memorizzate nella dataGridView che
riporterà la data e l’ ora di acquisizione e il rispettivo valore.

Quando i dati saranno sufficienti avremo la possibilità di salvare la tabella in due formati,
come tabella in formato Microsoft Excel oppure come una tabella SQL, importabile poi su
programmi di gestione di database o su programmi mysql per mettere a disposizione le
rilevazioni online.

È possibile anche stampare l’ intera tabella tramite il tasto “stampa” oppure cancellare la
tabella con il tasto “reset”.

Selezione della porta COM
Le porte COM all’ interno di Meteo Italia vengono utilizzate nel collegamento con il modem
GSM e nel collegamento con il termometro, per ricercare le porte disponibili viene utilizzata
la seguente funzione:

                                                                                              17
Quando il programma viene aperto,
                                                    esso ricerca tutte le porte COM
                                                    disponibili, inoltre ad ogni click
                                                    sulla comboBox viene eseguita
                                                    nuovamente la funzione trovaporte()
                                                    poiché un dispositivo potrebbe
                                                    essere stato collegato al pc
                                                    successivamente all’ avvio del
                                                    programma.

                                                    Viene creato un vettore di stringhe
                                                    tramite la funzione
                                                    SerialPort.GetPortNames() e tramite
                                                    due cicli for viene ordinato.

                                                    Per ultima cosa vengono copiati i
                                                    valori nelle stringhe all’ interno
                                                    della items collection.

Dispositivo di rilevazione della temperatura
                                        Per la realizzazione del termometro digitale è
                                        stato utilizzato un modulo DLP-IO8 con 8 canali
                                        di comunicazione input / output collegato tramite
                                        porta USB al pc.

                                        Ad un canale del modulo è a sua volta collegato
                                        un sensore di temperatura Dallas DS18B20 che
                                        rileva la temperatura e la comunica tramite
                                        comunicazione “1-wire” al modulo USB, questo
Modulo USB DLP-IO8 by DLP DESIGN
                                        a sua volta trasmetterà al pc i caratteri ASCII
                                        della temperatura attuale.

Sensore di temperature Dallas DS18B20

                                                                                   18
Il sensore è stato collegato al modulo USB con il seguente schema:

La resistenza di pull-up R ha un valore di 4,7KΩ, il connettore n°1 del modulo porta una
tensione di 5V ed è collegato al pin 3 del dallas, il connettore n°10 corrisponde alla massa ed è
collegato al pin 1 del sensore, mentre il connettore n°8 verrà usato per trasferire i dati.

Rilevazione della temperatura tramite termometro
Alla pressione del bottone “Rileva temperatura” viene eseguita la funzione che si connette al
termometro e lo interroga per ricevere la temperatura attuale.

La funzione è la seguente:

                                               La funzione rilevatemp() apre la porta serialPort1
                                               alla quale è collegato il termometro, poi
                                               scrivendo sulla porta i caratteri ‘ ; ’ e ‘ ` ’ ,
                                               rispettivamente 59 e 96 in codice ASCII, viene
                                               settato il termometro in modo che restituisca la
                                               temperatura in gradi centigradi e sotto forma di
                                               caratteri ASCII.

                                                Successivamente scrivendo il carattere ‘ [ ‘ sulla
                                                porta richiediamo al termometro di comunicarci
                                                la temperatura, opportunamente letta tramite la
                                                riga “temp=serialPort1.ReatTo(“?C”)” che
inserisce poi la temperatura rilevata nella stringa temp. Dopo aver letto la temperatura viene
visualizzata nella label15 e viene chiusa la porta.

                                                                                             19
Aggiornamento della dataGridView ad ogni rilevazione

Viene salvata la data attuale nella stringa “data” poi viene aggiunta una riga alla dataGridView
con la data e la temperatura attuale.

Salvataggio della tabella in formato Microsoft Excel
Attraverso la funzione crea_file() vengono presi tutti i record della dataGridView e inseriti in
un foglio excel all’ interno di un file excel denominato con l’ orario della creazione.

Vengono stabilite sia la path (root del programma) che la data, dopodiché vengono creati tre
oggetti, un oggetto Excel application, un oggetto cartella di Excel e un oggetto foglio di lavoro
di Excel, al quale viene poi assegnato il primo foglio della cartella Excel.

                                                                                            20
Con un ciclo for ripetuto tante volte quanto il numero di righe nella dataGridView inserisce
tutti i dati nel foglio Excel, al termine salva il documento, chiude l’ applicazione ed esegue la
funzione releaseObject() su tutti gli oggetti prima creati, richiamando il garbage collector che
pulirà la memoria RAM dai dati non più riconducibili a processi attualmente attivi.

Salvataggio della tabella in formato SQL
Il salvataggio di un file *.SQL, che servirà poi per importare le tabelle delle rilevazioni in
programmi che utilizzano dati SQL, viene eseguito così:

Con un semplice StreamWriter viene creato un file salvato con la data e ora attuale all’ interno
del quale scrive l’ intero comando SQL per la creazione di una tabella e con le “INSERT
INTO” necessarie alla compilazione della tabella. Al termine della scrittura viene chiuso lo
StreamWriter.

Stampa della tabella
Per stampare la tabella viene utilizzato un oggetto di tipo “printDocument” e di tipo
“printPreviewDialog” con il seguente codice:

La funzione intestazione(Graphics g, ref int y) crea due nuovi Font (bold e titolo) e scrive
il titolo all’ inizio del documento in colore rosso, dopodiché disegna l’ intestazione
della tabella con i nomi delle colonne “data” e “temperatura”.

                                                                                             21
Dopo aver disegnato l’ intestazione è necessario disegnare l’ intera tabella sfruttando la
funzione contenuto(Graphics g, int y), la quale disegna all’ interno del foglio una riga alla
volta sfruttando il ciclo for che si ripete tante volte quanto il numero delle righe nella
dataGridView:

Tutti i numeri contenuti nella funzione intestazione e contenuto sono numeri necessari alla
formattazione della pagina per far si che la tabella disegnata in fase di stampa sia il più
possibile centrata all’ interno del foglio.

Alla pressione del bottone relativo alla stampa verrà aperta l’ anteprima di stampa da cui l’
utente poi potrà avviare la stampa.

L’oggetto printPreviewDialog1 è direttamente collegato tramite le proprietà impostabili dalla
finestra grafica con l’oggetto printDocument1 dal quale vengono richiamate le due funzioni
descritte in
precedenza.

                                                                                            22
Controllo continuo della connessione
È stato implementato un controllo continuo della connessione che inizia non appena l’ utente
effettua la connessione.

Questo controllo, implementato in un thread per non rallentare le funzionalità del programma
esegue un comando di ping verso un sito web, è stato scelto Google per comodità e perché
sempre online e raggiungibile se vi è una connessione ad internet.

Il thread, chiamato anche “backgroundWorker” nell’ ambiente di sviluppo Microsoft Visual
Studio viene avviato nel form_load del programma Meteo Italia con la seguente riga:

*L’ oggetto “Controlla_connessione” è un oggetto della classe backgroundWorker.

La funzione continuamente eseguita dal thread che è stato creato è Controlla_connessione_DoWork:

Questa funzione esegue il codice contenuto nel ciclo “while” finché non rileva che la connessione al sito web
“www.google.it” è fallita, quindi imposta la variabile stato = 0 (questa variabile è una variabile visibile nell’ intero
programma che indica se la connessione è attiva oppure no) ed esegue la funzione blocca_tutto(true) la quale blocca tutti
i comandi e/o bottoni che non possono essere premuti in caso di connessione assente.

Quando l’ utente si accorgerà che la connessione non è più attiva provvederà a rendere nuovamente la connessione
disponibile e premerà il pulsante connetti nella home del programma.

                                                                                                                  23
Fonti e documentazioni

L’ intero programma e il suo intero codice sono stati sviluppati autonomamente limitando il più possibile aiuti e fonti
esterne per poter sollecitare e incrementare le nostre potenzialità, tuttavia sono stati utilizzati alcuni siti web riguardo a
campi e/o funzioni a noi completamente sconosciute.

 •      http://msdn.microsoft.com : descrizione e guide per specifici aspetti della programmazione .NET C#

 •      http://www.control.com.sg : guida verso i comandi AT con i quali gestire i modem GSM

 •      http://freedatalogging.wordpress.com : documentazione sul sensore di temperatura DS18B20

 •      http://www.digikey.it/ : negozio americano online attraverso il quale abbiamo potuto acquistare il modulo USB

 •      Libro scolastico “Sistemi di elaborazione e trasmissione delle informazioni” : alcuni concetti riguardanti il GSM

                                                                                                                        24
Puoi anche leggere