sistema per la casa intelligente - elettromoretto · il segnale è abilitato quando l’interfaccia...

44
Sistema per la casa intelligente Relatori: Alessandro Enriotti 5 a BZ & Michele Sivalli 5 a AZ Anno Scolastico 2000/2001 Docenti: prof. Cleto Azzani, prof. Roberto Pollione, prof. Vitonofrio Detrizio IPSIA Moretto di Brescia Corso per Tecnici delle Industrie Elettroniche

Upload: others

Post on 22-Jun-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Sistema per la casa intelligente - elettromoretto · Il segnale è abilitato quando l’interfaccia è alimentata; può essere utilizzato per determinare se l’interfaccia è collegata

Sistema per la casa intelligente

Relatori: Alessandro Enriotti 5a BZ & Michele Sivalli 5a AZ

Anno Scolastico 2000/2001

Docenti: prof. Cleto Azzani, prof. Roberto Pollione, prof. Vitonofrio Detrizio

IPSIA Moretto di Brescia

Corso per Tecnici delle Industrie Elettroniche

Page 2: Sistema per la casa intelligente - elettromoretto · Il segnale è abilitato quando l’interfaccia è alimentata; può essere utilizzato per determinare se l’interfaccia è collegata

Home of Dreams 2

Indice

Indice .......................................................................................................................................................2

Premessa ..............................................................................................................................................3Introduzione .........................................................................................................................................4Architettura del sistema ........................................................................................................................5

Il sistema AveBUS ...........................................................................................................................6Il sistema MID Coban.......................................................................................................................7

Interfacciamento...................................................................................................................................7Lo standard seriale EIA RS232C. .....................................................................................................8Interfaccia BatiBUS/RS232 ............................................................................................................10Interfaccia MID (Coban).................................................................................................................12

Il Software..........................................................................................................................................14Il Compilatore ................................................................................................................................14

Generalità sui linguaggi di programmazione .............................................................................14Cos’è Delphi ...............................................................................................................................17Ambiente di sviluppo integrato : .................................................................................................17Drag and drop design ..................................................................................................................18Strumenti bidirezionali................................................................................................................18Compilatore in codice nativo ......................................................................................................18Connessione ai database integrata ...............................................................................................18Cronologia dei prodotti Borland..................................................................................................18I principali componenti della VCL di Delphi...............................................................................27Gestione del testo........................................................................................................................27Componenti Delphi non visuali ...................................................................................................31Componenti Delphi dedicati all’accesso ai Database ...................................................................34Componenti "Data-bound" ..........................................................................................................37

Manuale d’uso ................................................................................................................................39Il Termostato ..............................................................................................................................40Programmazione Luci Esterne e Impianto Irrigazione .................................................................41Le Liste Movimenti ....................................................................................................................41Il BackUp ...................................................................................................................................42Setup ..........................................................................................................................................42

Conclusioni ........................................................................................................................................43Allegati...............................................................................................................................................44

Page 3: Sistema per la casa intelligente - elettromoretto · Il segnale è abilitato quando l’interfaccia è alimentata; può essere utilizzato per determinare se l’interfaccia è collegata

Home of Dreams 3

Premessa

Il nostro progetto nasce dalla voglia di non vivere il futuro da spettatori ma da protagonisti.

Guardandoci un po’ intorno cercavamo progetti che ci avrebbero fatto crescere sia dal punto di

vista scolastico, ma anche che ci dessero un futuro nel mondo del lavoro, la ricerca è stata

lunga anche se la risposta era lì vicina a noi, infatti, chi non torna a casa la sera ? chi non

desidera tornando a casa di trovare un bel bagno caldo, una bella musica rilassante e magari la

cena che si sta cocendo nel forno, tutto questo con un solo click ? Partendo dalla nostra idea di

costruire una casa cosiddetta intelligente ci siamo guardati un po’ intorno e abbiamo notato che

non eravamo stati i primi ad avere questa idea, sia sul territorio nazionale che su quello

bresciano, infatti alcune aziende della nostra città stavano già lavorando a progetti analoghi. A

questo punto ci siamo trovati davanti ad un bivio, costruire tutti i dispositivi per la gestione delle

luci e dei carichi o utilizzare qualcosa di già fatto ? Abbiamo preferito impiegare dispositivi già

esistenti per poter continuare in futuro, magari in ambito lavorativo, lo sviluppo del nostro

progetto. Concentrando le nostre energie nella progettazione di un sistema capace di gestire

dispositivi di architettura diversa presentiamo la nostra casa intelligente denominata “ HOME

OF DREAMS”.

Page 4: Sistema per la casa intelligente - elettromoretto · Il segnale è abilitato quando l’interfaccia è alimentata; può essere utilizzato per determinare se l’interfaccia è collegata

Home of Dreams 4

Introduzione

Con “casa intelligente” si intende l’integrazione e la gestione di vari dispositivi per il controllo

automatico di apparati domestici (es. attuatori per il movimento di porte e finestre, attivazione di

elettrodomestici, ecc…), di sensori dello stato ambientale (es. rivelatori di fumo o gas), di

funzioni intelligenti di supporto (es. agenda domestica) e di sistemi per la telecomunicazione

con centri servizi per l’assistenza a distanza (es. tele-soccorso, tele-assistenza).

L’ambiente domestico così attrezzato ed integrato potrà essere gestito e controllato tramite una

opportuna interfaccia utente (ad esempio telecomando, tastiera, ecc.) che realizza il colloquio

con un sistema intelligente basato in genere su un microcomputer. I componenti della "casa

intelligente" sono connessi tra di loro attraverso mezzi di comunicazione quali onde radio, onde

convogliate, rete locale domestica.

Una "casa intelligente" deve essere caratterizzata da un’estrema modularità, flessibilità,

adattabilità e semplicità delle soluzioni tecnologiche utilizzate. Infatti, le esigenze di

automazione e gestione dell’ambiente domestico possono essere molto diverse per differenti

individui, così come possono essere molto diverse le modalità con cui l’utente può interagire e

colloquiare con il sistema.

Sul mercato italiano sono attualmente disponibili diverse soluzioni e dispositivi per

l’automazione, la sicurezza domestica, il tele-soccorso e la tele-assistenza. Sono stati inoltre

realizzati a livello europeo vari progetti di ricerca per la realizzazione di "case intelligenti" con

funzionalità avanzate.

Page 5: Sistema per la casa intelligente - elettromoretto · Il segnale è abilitato quando l’interfaccia è alimentata; può essere utilizzato per determinare se l’interfaccia è collegata

Home of Dreams 5

Architettura del sistema

Il prototipo del sistema “Home of Dreams” è costituito da un applicativo eseguibile su PC

nell’ambiente Windows, che permette di configurare e di visualizzare il comportamento

dell’ambiente domestico.

Nel nostro progetto prendiamo in considerazione sensori di rivelazione eventi (sistema anti

intrusione), sistema d’irrigazione, di riscaldamento e condizionamento, temporizzazione di luci,

gestione di elettrodomestici e altri automatismi domotici (simulati attraverso una scheda a

microcontrollore commerciale) e controllo luci attraverso dispositivi a Bus di campo (BatiBUS).

I dispositivi sono controllati dal sistema d’interfaccia “Home of Dreams” che ne verifica lo stato

di funzionamento e che, al verificarsi di un evento previsto nella procedura di controllo, avvia le

operazioni legate allo stesso definite in fase di progettazione.

Il nostro progetto costituisce un sistema integrato di controllo adattabile e personalizzabile alle

specifiche esigenze della persona che utilizzerà il nostro sistema.

Attualmente esistono numerosi standard utilizzati nel campo dell’automazione domestica, ed è

questo uno dei fattori che contribuisce a rallentare la crescita di questo settore.

Tra i principali abbiamo:

• Associazione EIBA Italia

• Associazione Konnex

• EIB (European Installation Bus)

• BatiBus Club International (Al quale aderisce anche l’AVE)

• X-10

Page 6: Sistema per la casa intelligente - elettromoretto · Il segnale è abilitato quando l’interfaccia è alimentata; può essere utilizzato per determinare se l’interfaccia è collegata

Home of Dreams 6

Il sistema AveBUS

Il sistema AveBUS è uno strumento capace di sfruttare le caratteristiche di un Personal

Computer per centralizzare e sorvegliare le funzioni più comunemente richieste all’impianto

elettrico, di sicurezza dell’ambiente domestico e similare.

Si basa sull’impiego di un PC, di un’interfaccia BatiBUS/RS232 e di un sistema BUS che

collega in modo bidirezionale trasmettitori e ricevitori che vengono identificati attraverso l’utilizzo

di codici di riconoscimento.

Accendere uno o più punti luce dislocati in locali diversi e lontani tra di loro in un edificio

commerciale, oppure comandare gli impianti di sicurezza, i sistemi di riscaldamento e

condizionamento risulta semplice.

Per impianto o sistema BatiBUS si intende l’impianto costituito dai ricevitori ed i trasmettitori

BatiBUS collegati a loro volta agli attuatori (relè) ed ai sensori (pulsanti, contatti di sensori ecc.)

(figura 1).

Interfaccia RS232/BatiBUS Personal Computer di

Casa

Tx Rx Tx Rx Tx Rx Tx Rx

Funzionamento Centralizzato Funzionamento Trasversale

Normale

S S A A S S A A S S A A S S A A

I m p i a n t o B a t i B U S

Figura 1

Nel nostro sistema il dispositivo AveBUS viene utilizzato per la gestione delle luci.

Page 7: Sistema per la casa intelligente - elettromoretto · Il segnale è abilitato quando l’interfaccia è alimentata; può essere utilizzato per determinare se l’interfaccia è collegata

Home of Dreams 7

Il sistema MID Coban

Il sistema MID Coban è utilizzato per monitorare e comandare automatismi industriali.

É composto da due unità: Cpu di collegamento con il Pc (interfacciato attraverso un

collegamento seriale RS485) e da un modulo misto composto da 16 input digitali e 8 output a

rele'.

Le uscite vengono utilizzate dal nostro sistema per gestire l’irrigazione, le luci esterne, il

riscaldamento e condizionamento, il comando del cancello, la sirena dell’allarme, gli

elettrodomestici e l’apertura del tetto del plastico.

Gli ingressi vengono utilizzati per il controllo dello stato delle luci, per l’allarme e il campanello.

Interfacciamento

Con la definizione d’interfacciamento si indica l’insieme delle caratteristiche dei segnali, dei cavi

e dei connettori, che si devono adeguare, sia dal punto di vista elettrico che fisico, i dispositivi di

collegamento.

Gli elementi di standardizzazione sono definiti e certificati da alcune associazioni come ad

esempio l’EIA1 che definisce lo standard RS232C utilizzato da noi per comunicare con i nostri

dispositivi esterni.

1 Electronic Industries Association (Associazione delle industrie USA).

Page 8: Sistema per la casa intelligente - elettromoretto · Il segnale è abilitato quando l’interfaccia è alimentata; può essere utilizzato per determinare se l’interfaccia è collegata

Home of Dreams 8

Lo standard seriale EIA RS232C.

Lo standard EIA RS232C definisce:

• Le condizioni di adattamento del segnale di uscita dall’ interfaccia seriale (USART) di un

sistema trasmittente, all’ingresso di un modem per la trasmissione a distanza e,

parallelamente, quelle di adattamento modem – unità ricevente;

• Controlli per la trasmissione seriale in genere.

Le caratteristiche dello standard RS232C sono:

a. Livelli dei segnali.

• Livello «1» o MARK: tipico – 12V, con campo – 3 ÷ – 15V;

• Livello «0» o SPACE: tipico + 12V, con campo + 3 ÷ + 15V ;

• Controllo attivo (ON): tipico + 12V;

• Controllo non attivo (OFF): tipico – 12V.

Per Adattare i livelli dei segnali (e controlli) dello standard RS232C a quelli delle

interfacce commerciali, che sono normalmente di tipo TTL, sono disponibili in

commercio integrati adattatori.

b. Formato e velocità di trasmissione.

Il formato della parola in collegamento asincrono è normalmente di 11 Bit:

_ 1 bit di start;

_ 8 bit di parola;

_ 1 bit di parità;

_ 1 di stop (può essere anche 2 bit).

Page 9: Sistema per la casa intelligente - elettromoretto · Il segnale è abilitato quando l’interfaccia è alimentata; può essere utilizzato per determinare se l’interfaccia è collegata

Home of Dreams 9

Le velocità imposte dagli standard per la trasmissione seriale sono le seguenti:

c. Disposizione dei pin e funzione dei segnali.

Figura 2

Figura 3

Nella figura 2 è riportato il connettore standard a 25 pin con le rispettive funzioni.

Nei Pc si è diffuso l’impiego del connettore «ridotto» a 9 pin (Figura 3), che contiene

tutti i collegamenti essenziali. L’utilizzo del connettore a 9 pin è giustificato dal fatto

che, per il collegamento base RS232 sono sufficienti al più 7 linee di collegamento.

Page 10: Sistema per la casa intelligente - elettromoretto · Il segnale è abilitato quando l’interfaccia è alimentata; può essere utilizzato per determinare se l’interfaccia è collegata

Home of Dreams 10

Indirizzamelo porte seriali:

Interfaccia BatiBUS/RS232

La porta seriale deve essere configurata nel seguente modo:

_ Velocità di trasferimento: 4800 baud;

_ Bit di start: 1 bit;

_ Bit dati: 8 data-bit;

_ Parità: Dispari;

_ Bit di stop: 1 bit;

Connessioni

L’interfaccia BSA232 possiede un connettore standard BatiBUS polarizzato maschio che

consente il collegamento con il BUS e un connettore a 9 poli standard RS232 per la

connessione ad un personal computer. Per la connessione con un Pc è necessario un cavo

seriale “diritto”.

Di seguito è riportata una tabella contenente la spiegazione dell’utilizzo della porta seriale RS-232 a 9-pin :

Page 11: Sistema per la casa intelligente - elettromoretto · Il segnale è abilitato quando l’interfaccia è alimentata; può essere utilizzato per determinare se l’interfaccia è collegata

Home of Dreams 11

Pin Funzione Utilizzo

1 DCDIl segnale è abilitato quando l’interfaccia è alimentata; può essere utilizzatoper determinare se l’interfaccia è collegata al PC.

2 RD E’ il segnale di ricezione, messaggio dal Bus verso il PC.3 TD E’ il segnale di trasmissione, messaggio dal PC verso il Bus.

4 DTR Il segnale deve essere abilitato per un breve periodo ( almeno 1 ms ) persbloccare il meccanismo di risoluzione delle collisioni.

5 GND Ground.

6 DSRIl segnale è abilitato quando l’interfaccia rivela una collisione, cioè quando ilPC ha tentato di trasmettere mentre il Bus era occupato da un’altratrasmissione in corso.

7 RTS Non utilizzato dall’interfaccia.

8 CTSIl segnale è abilitato quando la linea è libera; è utile per stabilire quando ilPC può iniziare la trasmissione e per determinare se l’interfaccia è collegataal sistema BatiBUS.

9 RI Non utilizzato dall’interfaccia.

Operazioni da effettuare per la trasmissione:

Prima di iniziare la trasmissione di un frame il PC deve controllare che la linea sia libera tramite

la linea CTS (pin 8).

Se la linea è libera può trasmettere il primo byte e controllare, tramite la linea DSR (pin 6), se la

trasmissione ha provocato una collisione.

In caso di collisione è NECESSARIO inviare nuovamente l’intero frame.

NOTA: Anche se il PC può controllare che la linea sia libera prima di iniziare una trasmissione,

può generarsi una collisione nel caso il PC e un trasmettitore posto sul Bus inizino la

trasmissione contemporaneamente. Se succede ciò, la trasmissione sarà per entrambi valida

finché i due trasmettitori ( il PC e l’altro trasmettitore ) continueranno a trasmettere lo stesso

frame; alla prima diversità, continua la trasmissione di colui che in quel momento sta

trasmettendo un livello fisico basso mentre quello che trasmette un livello fisico alto, rilevando

una collisione, si autoesclude e potrà ritrasmettere il messaggio quando il bus sarà nuovamente

libero.

Page 12: Sistema per la casa intelligente - elettromoretto · Il segnale è abilitato quando l’interfaccia è alimentata; può essere utilizzato per determinare se l’interfaccia è collegata

Home of Dreams 12

Descrizione Frame:

Il frame è composto da una stringa di caratteri nel formato standard della trasmissione

asincrona. Di ogni carattere viene trasmessa prima la parte meno significativa.

Struttura del frame:

1° Byte 2° Byte 3° Byte 4° Byte 5° Byte 6° Byte 6° Byte 6° Byte

Messaggio LunghezzaIndirizzo

Destinatario

Indirizzo

Emettitore

Tipo

Destinatario

Tipo

EmettitoreComando CheckSUM CheckSUM

Messaggio: Tipo messaggio (1 Byte)

Lunghezza: Lunghezza del Frame senza messaggio

Indirizzo Destinatario: Codice identificativo del modulo di ricezione AVE

Tipo Destinatario: Codice identificativo del modulo di trasmissione AVE

Comando: È l’ordine che viene impartito dal trasmettitore o dal PC verso il ricevitore.

CheckSUM: Il complemento della somma complementata in 16 bit di tutti i byte precedenti.

Interfaccia MID (Coban)

La porta seriale deve essere configurata nel seguente modo:

_ Velocità di trasferimento: 19200 baud;

_ Bit di start: 1 bit;

_ Bit dati: 8 data-bit;

_ Parità: Nessuna;

_ Bit di stop: 1 bit;

Connessioni:

Il colloquio tra PC e MID, avviene tramite linea seriale RS485, che permette il collegamento di

unità anche molto distanti tra loro.

Page 13: Sistema per la casa intelligente - elettromoretto · Il segnale è abilitato quando l’interfaccia è alimentata; può essere utilizzato per determinare se l’interfaccia è collegata

Home of Dreams 13

Per comodità abbiamo adottato un convertitore RS232/RS485 per poter utilizzare una comune

porta seriale del PC.

Il protocollo di comunicazione si basa sullo scambio di pacchetti in codice ASCII.

Tutte le informazioni quindi vengono trasformate in caratteri stampabili e quindi trasmesse.

Questo vale anche per la trasmissione dello stato degli In – Out, per cui ogni gruppo di 8

ingressi o uscite, vengono espressi in esadecimale, e poi inviati come 2 caratteri indipendenti.

Quindi i dati verranno convertiti nei corrispondenti caratteri ASCII in questo modo:

[ hex 23 ] → [ “2” ] [ “3” ]

e spediti in uscita inviando prima la parte bassa ( “3” ) e poi la parte alta ( “2” ).

Quanto sopra vale anche per il checksum, che essendo un byte binario ( da 0 a 255) viene

scomposto in 2 caratteri ASCII ( da [ “0”] [ “0” ] a [ “F” ] [ “F” ]).

A differenza degl’ingressi o delle uscite, per il checksum, il primo valore da spedire corrisponde

alla parte alta del byte e non a quella bassa.

Il protocollo di trasmissione del MID è così strutturato:

PC Descrizione MID

[@] → → Carattere inizio comunicazione (1 Byte) → →

[id-cpu] → → Identificativo della CPU (Valori che vanno da

“a” ÷ “p”) (1 Byte) → →

[pacchetto-output] → → Pacchetto dati (1 Byte) → →

[checksum 2 car] → → ExOr di tutti i Byte precedenti (2 Byte) → →

Page 14: Sistema per la casa intelligente - elettromoretto · Il segnale è abilitato quando l’interfaccia è alimentata; può essere utilizzato per determinare se l’interfaccia è collegata

Home of Dreams 14

Il protocollo di ricezione del MID è così strutturato:

MID Descrizione PC

[#] → → Carattere inizio risposta (1 Byte) → →

[id-cpu] → → Identificativo della CPU (Valori che vanno da

“a” ÷ “p”) (1 Byte) → →

[pacchetto-output] → → Pacchetto dati (2 Byte) → →

[checksum 2 car] → → ExOr di tutti i Byte precedenti (2 Byte) → →

La comunicazione inizia sempre con una trasmissione, da PC verso il MID, del settaggio delle

uscite solo dopo questa operazione il MID risponde con lo stato degli ingressi.

Il dispositivo mantiene lo stato delle uscite solo per 2 secondi per questo motivo dobbiamo

ritrasmettere il frame di dati entro tale tempo.

Il Software

Il Compilatore

Generalità sui linguaggi di programmazione

La programmazione degli elaboratori può essere attuata facendo uso del linguaggio macchina

oppure di linguaggi di programmazione detti ad alto livello.

Il linguaggio macchina è un linguaggio specifico di una determinata CPU e quindi presuppone

una “perfetta conoscenza” del set di istruzioni del modo di indirizzamento, delle modalità di

esecuzione delle istruzioni da parte della CPU e dell'architettura del sistema utilizzato.

Page 15: Sistema per la casa intelligente - elettromoretto · Il segnale è abilitato quando l’interfaccia è alimentata; può essere utilizzato per determinare se l’interfaccia è collegata

Home of Dreams 15

I linguaggi ad “alto livello” tendono ad essere indipendenti dal tipo di CPU su cui operano, sono

molto più aderenti al modo di esprimersi di un essere umano e non richiedono una conoscenza

specifica dell'architettura del sistema su cui viene redatto un determinato programma.

Tra i linguaggi ad alto livello storicamente affermatisi ricordiamo :

- FORTRAN (FORmulae TRANslator) nato per la risoluzione di problemi di tipo scientifico.

- COBOL (COmmon Business Oriented Language) nato per la risoluzione di problematiche di

tipo commerciale.

- BASIC (Beginner's All-purpose Symbolic Instruction Code) linguaggio adatto per un primo

impatto con la realtà del calcolatore: risolve sia problemi di tipo scientifico che problemi di

carattere commerciale; molto semplice da imparare ma non strutturato

-PASCAL linguaggio adatto a risolvere sia problemi di tipo scientifico che problemi di altro

genere. Nato per l’insegnamento dei principi fondamentali della programmazione strutturata.

-C linguaggio nato con l’obiettivo di essere utilizzato in modo efficiente nella scrittura di sistemi

operativi o di strumenti software;

Il programma scritto dal programmatore detto programma SORGENTE (SOURCE-

PROGRAM); quello materialmente eseguito dalla CPU e perciò tradotto in linguaggio

macchina viene denominato programma OGGETTO (OBJECT-PROGRAM). Si rende

necessario disporre di un traduttore che partendo da istruzioni redatte in linguaggio ad alto

livello le trasformi in equivalenti istruzioni in linguaggio macchina.

Ogni linguaggio dispone quindi di un traduttore in linguaggio macchina.

Un generico linguaggio ad alto livello può essere strutturato per funzionare in modo

INTERPRETE o in modo COMPILATORE.

Nel modo INTERPRETE il programma sorgente si trova in memoria RAM e viene introdotto

attraverso una tastiera che opera in codice ASCII (American Standard Code for Information

Interchange); quando viene attivata la esecuzione del programma l'interprete per ciascuna riga

di programma effettua le seguenti operazioni:

Page 16: Sistema per la casa intelligente - elettromoretto · Il segnale è abilitato quando l’interfaccia è alimentata; può essere utilizzato per determinare se l’interfaccia è collegata

Home of Dreams 16

1)- Controllo sintattico sulla riga di programma.

2)- Traduzione della riga di programma in linguaggio macchina.

3)- Esecuzione di quella riga di programma.

Nel modo COMPILATORE il programma sorgente si trova di solito su disco sotto forma di "file"

(archivio di informazioni su disco); la preparazione del sorgente su disco avviene attraverso

l'uso di un apposito "strumento software" denominato EDITORE.

Il compilatore fa una analisi sintattica di tutto il programma sorgente fornendo eventuali

segnalazioni di errore che servono al programmatore per correggere il programma. In caso il

controllo sintattico abbia dato esito positivo, viene effettuata la traduzione in linguaggio mac-

china del programma sorgente, traduzione che viene registrata su disco sotto forma di "file

binario".

Il programma oggetto così prodotto dal compilatore in genere non è ancora eseguibile in

quanto privo delle necessarie informazioni base per eseguire operazioni matematiche più o

meno complesse o operazioni di Input Output. Si rende necessaria un'ultima operazione

denominata operazione di LINK delle librerie che viene attuata per mezzo di un altro

"strumento software" chiamato LINKING-LOADER. Il programma oggetto prodotto dal

compilatore, "linkato" con le routine di libreria è quindi in grado di funzionare autonomamente;

anch'esso viene salvato su disco e costituisce il prodotto finale e conclusivo della

compilazione.

Gli ambienti TURBO-PASCAL, TURBO-C, TURBO-BASIC della Borland; QUICK-C, QUICK-

BASIC della Microsoft sono ambienti integrati in cui si può operare sia in modo Interprete che

in modo Compilatore. In ambiente TURBO-PASCAL i "files-sorgenti" redatti in linguaggio

PASCAL sono files di testo con estensione PAS per distinguerli dai "files-eseguibili" contenenti

il codice macchina 8088-8086 che hanno estensione EXE .

Il FORTRAN è nato ed ha conservato la sua iniziale struttura di linguaggio Compilatore; il

BASIC invece è nato come linguaggio Interprete e solo in tempi relativamente recenti sono

state rilasciate edizioni di Compilatori BASIC .

Page 17: Sistema per la casa intelligente - elettromoretto · Il segnale è abilitato quando l’interfaccia è alimentata; può essere utilizzato per determinare se l’interfaccia è collegata

Home of Dreams 17

Con lo sviluppo di CPU sempre più veloci e complesse, con l’abbandono da parte di Microsoft

del DOS e con l’avvento e la diffusione di Windows 3.1 prima e successivamente di Windows

95 e poi 98 e contemporaneamente di NT, si è reso necessario cambiare l’approccio

tradizionalmente usato nel mondo della programmazione sono così nati i linguaggi visuali fra i

quali Visual Basic di Microsoft e Visual Pascal o meglio Delphi in casa Borland.

Cos’è Delphi

Delphi è un ambiente di programmazione visuale ad oggetti per lo sviluppo rapido di

applicazioni (RAD / Rapid Application Development) a carattere generale e di applicazioni

client/server per Windows 95 e 98 e Windows NT.

Con Delphi è possibile creare applicazioni Windows altamente efficienti riducendo al minimo i

tempi di programmazione.

Delphi comprende una libreria di componenti riutilizzabili VCL e un insieme di strumenti di

progettazione RAD, tra cui i modelli di applicazioni standard e di schede expert di

programmazione. Con questi strumenti e con il compilatore Delphi a 32 bit è possibile creare

rapidamente e testare prototipi, trasformandoli in robuste applicazioni perfettamente in linea con

le moderne esigenze.

Delphi può essere utilizzato per sviluppare qualsiasi tipo di applicazione, dalle utility di analisi e

test dei PC, fino ai più sofisticati strumenti di accesso ai database.

Gli strumenti di gestione dei database e i componenti di gestione dei dati previsti in Delphi

permettono di sviluppare strumenti di gestione dati e applicazioni client/server in tempi

notevolmente ridotti.

Con i controlli di gestione dei dati di Delphi, i dati vengono visualizzati direttamente durante la

creazione dell’applicazione, consentendo una immediata verifica del risultato delle

interrogazioni al database e delle modifiche all’interfaccia dell’applicazione.

Ambiente di sviluppo integrato :L’ambiente di sviluppo integrato di Delphi IDE (Integrated, Development,Enviroment) mantiene

sviluppo, verifica e gestione delle applicazioni in un unico ambiente. E’ possibile creare o

modificare una applicazione compreso schede di inserimento dati, report, menu, finestre di

dialogo, database e definizioni di file, moduli dati, componenti, senza uscire das Delphi.

Page 18: Sistema per la casa intelligente - elettromoretto · Il segnale è abilitato quando l’interfaccia è alimentata; può essere utilizzato per determinare se l’interfaccia è collegata

Home of Dreams 18

Drag and drop designDelphi aumenta la produttività automatizzando le operazioni di programmazione ripetitive. E’

possibile creare applicazioni semplicemente trascinando pochi componenti dalla Component

Palette in una scheda chiamata form creando l’architettura dell’applicazione velocemente e

facilmente, con il minimo di programmazione.

Strumenti bidirezionaliProcedendo con la selezione e la modifica delle proprietà dei componenti e delle schede, i

risultati vengono aggiornati automaticamente nel codice sorgente, e viceversa. Modificando il

codice sorgente direttamente con un editor di testo, come il Code Editor incorporato, le

modifiche vengono immediatamente riflesse negli strumenti visuali.

Compilatore in codice nativoIl compilatore Delphi 32-bit, sviluppato per ottimizzare il codice nativo produce applicazioni “self-

contained”, in codice nativo eseguibile .EXE. Oltre ad avere migliorato le prestazioni degli

eseguibili compilati (in confronto ai linguaggi interpretati) la natura self-contained di

un’applicazione Delphi consente l’indipendenza dalle librerie runtime .DLL.

Connessione ai database integrataIl Borland Database Engine BDE, inserito in Delphi permette di sviluppare applicazioni in grado

di accedere ai database Paradox, dBase, e InterBase. Attraverso SQL Links, l’applicazione può

accedere anche a server SQL, tra cui InterBase, Oracle, Sybase, e Microsoft SQL. Inoltre, il

flessibile motore di gestione di database di Delphi facilita il passaggio da applicazioni locali ad

applicazioni client/server.

Cronologia dei prodotti BorlandLa Borland dopo avere distribuito Turbo Pascal 6.0 per DOS ha introdotto sul mercato un

prodotto per Windows 3.1 e lo ha chiamato Borland Pascal 7.0 (versione Windows di Turbo

Pascal 7.0). Successivamente ha completamente rivisto la struttura dei suoi compilatori e

strumenti di sviluppo accessori introducendo la famiglia Delphi.

A tutt’oggi sono state rilasciate ben 6 edizioni di Delphi :

Delphi 1 per lo sviluppo di applicativi a 16 bit in ambiente Windows 3.1 e 3.11

Nell’ordine si sono poi succedute le versioni di Delphi 2 , Delphi 3, Delphi 4, Delphi 5, Delphi 6

(da pochi giorni) per lo sviluppo di applicazioni a 32 bit per Windows 9x e Windows NT. I

compilatori Borland sono generalmente disponibili in tre versioni :

Page 19: Sistema per la casa intelligente - elettromoretto · Il segnale è abilitato quando l’interfaccia è alimentata; può essere utilizzato per determinare se l’interfaccia è collegata

Home of Dreams 19

a) versione desktop (a basso costo)

b) versione professional

c) versione client/server o enterprise

La versione desktop pur costando poche centinaia di migliaia di lire è una versione completa

ma priva di oggetti VCL particolari o di driver nativi per database particolari (opzioni richieste da

un programmatore che sviluppi applicativi professionali) è comunque generalmente adatta per

sviluppare applicazioni di tipo stand-alone.

Recentemente è stata introdotta sul mercato pure una versione di Delphi che opera in ambiente

Linux (denominata Kylix) ciò consentirà di trasferire in questo nuovo ambiente, applicazioni

native sviluppate per l’ambiente Windows.

Il linguaggio PascalIl linguaggio di programmazione di Delphi è basato sul Pascal, introdotto da Niklaus Wirth

(università di Ginevra) appositamente come mezzo di insegnamento della programmazione

strutturata. Per questo motivo tale linguaggio risulta essere assai elegante e leggibile,

soprattutto se lo confrontiamo con linguaggi analoghi come C/C++, più strutturalmente vicino al

linguaggio macchina oppure al Basic, che solo in tempi recenti ha subito una profonda

riadattamento ai canoni della programmazione strutturata.

La facilità di lettura si accompagna simmetricamente alla facilità di scrittura: Se si tiene conto

del fatto che Delphi è un compilatore velocissimo, scrivere programmi in Pascal per Windows

significa, beneficiare di un ottimo compromesso tra velocità degli eseguibili prodotti e facilità di

scrittura del codice.

Pascal è un linguaggio procedurale, dotato di tipizzazione forte. Questo sta a significare che per

ogni variabile utilizzata all'interno di programmi Pascal deve essere esplicitamente dichiarato un

tipo (ad esempio integer, variabile numerica intera; real, variabile numerica reale, ecc.). Ad ogni

variabile, salvo qualche eccezione per i valori numerici, deve essere assegnato un valore del

tipo corrispondente, pena errori in fase di compilazione. Senza questi vincoli, il compilatore

non potrebbe risultare altamente ottimizzante e si correrebbe il rischio di errori a run-time dovuti

ad assegnamenti “misti” non voluti dal programmatore (bug) e non intercettati dal compilatore

che non sarebbe più in grado di effettuare controlli approfonditi sulla validità formale degli

assegnamenti.

Page 20: Sistema per la casa intelligente - elettromoretto · Il segnale è abilitato quando l’interfaccia è alimentata; può essere utilizzato per determinare se l’interfaccia è collegata

Home of Dreams 20

Dalla versione 2 di Delphi è stato introdotto un nuovo tipo di dato, chiamato Variant, in

grado di agire da contenitore per qualsiasi tipo di dato fondamentale di Delphi. Nel caso

si utilizzino variabili di tale tipo, non è possibile ottimizzare il codice e catturare a tempo

di compilazione errori nella codifica. Se ad esempio, una variabile di tipo Variant contiene

una stringa ed un'altra un numero intero, il compilatore non segnala errore se applico ad

esse l'operatore di somma. Otterrò un errore in fase di esecuzione (“run-time”),

certamente più difficile da scoprire.

Il linguaggio Pascal rende disponibile al programmatore un set completo di tipi di dato di base,

che spaziano dai numeri interi (integer) fino ad arrivare a stringhe (string) la cui gestione in

memoria è trasparente al programmatore, passando per il tipo boolean, che è in grado di

esprimere i valori di verità true e false, definiti come costanti del linguaggio.

Viene offerta anche una completa gestione di puntatori ed allocazione dinamica di memoria,

cosa che permette di creare a run-time nuove entità le cui dimensioni non devono essere

decise a tempo di codifica. Questo si traduce in un'ottimizzazione dello sfruttamento delle

risorse della macchina su cui si sta lavorando. Combinando i meccanismi di allocazione

dinamica alla possibilità di derivazione di nuovi tipi di dato strutturati a partire dal costrutto

record, inoltre, è possibile costruire e gestire con relativa facilità tipi di dato ricorsivi come “liste”

e gli “alberi”.

Altra caratteristica importante del linguaggio Pascal è quella di essere case-insensitive, ovvero

il compilatore non distinguerà in alcun punto del programma (tranne che all'interno delle

stringhe...) tra lettere maiuscole e minuscole. Saranno quindi considerati identici nomi di

variabili e funzioni come MiaVariabile e miavariabile, a differenza di quanto accade in linguaggi

come C/C++, ed in analogia con il Basic.

L'operatore di assegnamento utilizzato dal Pascal è :=, a differenza della stragrande

maggioranza dei linguaggi procedurali. Pur essendo più corretto dal punto di vista matematico,

questo potrebbe essere disorientante per chi proviene da altri linguaggi.

E’ possibile inglobare blocchi di codice all'interno delle strutture di controllo, usando la keyword

di apertura begin e quella di chiusura end.

Page 21: Sistema per la casa intelligente - elettromoretto · Il segnale è abilitato quando l’interfaccia è alimentata; può essere utilizzato per determinare se l’interfaccia è collegata

Home of Dreams 21

Ogni istruzione deve essere terminata da un punto e virgola “;”.

I commenti sono porzioni dei sorgenti racchiusi tra parentesi graffe { commento } oppure dalla

combinazione di parentesi tonda ed asterisco (* commento *)

Pascal distingue tra funzioni e procedure: le prime, dichiarate utilizzando la keyword function,

restituiscono un valore, mentre le seconde no. Ad esempio, le linee di sorgente appena

mostrate definiscono il codice di una procedura (si noti la keyword procedure prima della

definizione del nome).

Le variabili locali dichiarate all’interno di procedure oppure quelle globali (visibili da tutte le

procedure appartenenti al programma) devono essere dichiarate all'interno di sezioni separate,

diversamente da quanto previsto in altri linguaggi (esempio, in C/C++).

Object Pascal : il Pascal secondo Borland...Fin dai tempi del Turbo Pascal, Borland ha proposto estensioni al Pascal standard. A parte

l'introduzione delle caratteristiche object-oriented, una delle più importanti è stata quella delle

unit, costrutto che permette una programmazione modulare.

Attraverso la struttura delle unit è possibile creare programmi accostando diversi moduli di

codice visibili solo tramite un'interfaccia data dalle dichiarazioni delle funzioni in esse contenute.

Con le unit Borland fornisce la possibilità di costruire entità contenenti codice nelle quali si può

restringere l'accesso dall'esterno a particolari funzioni dichiarate in una sezione di interfaccia.

Le unit sono molto utilizzate in Delphi, visto che ad ogni finestra del proprio programma viene

associata una unit che ne contiene la definizione.

Rispetto alle versioni precedenti dei compilatori Pascal di Borland, Delphi introduce alcune

interessanti innovazioni, tra le quali spiccano un nuovo modello di oggetti, la variabile Result di

ritorno di una funzione ecc. ecc.

La nuova variabile Result permette di restituire oggetti o record tramite funzioniPer quanto riguarda le innovazioni nella restituzione di valori nelle funzioni, ora con Delphi è

possibile restituire qualsiasi tipo di dato, che sia semplice o strutturato, con poche eccezioni.

All'interno delle funzioni, per specificare il valore da restituire, si fa riferimento alla variabile

Page 22: Sistema per la casa intelligente - elettromoretto · Il segnale è abilitato quando l’interfaccia è alimentata; può essere utilizzato per determinare se l’interfaccia è collegata

Home of Dreams 22

speciale Result, mediante la quale si è in grado di inizializzare differenti componenti di eventuali

tipi strutturati.

Il nuovo modello di Oggetti.Arriviamo ora alla novità più importante: Delphi introduce un nuovo modello di oggetti. Innanzi

tutto sparisce la parola chiave object dalla definizione di classe, per far posto alla più usuale

class (anche se la prima viene mantenuta per compatibilità verso l'indietro).

Delphi ora permette di definire parti protette, ovvero visibili dai soli discendenti della classe

(oltre che dall'interno della classe stessa). Questo in aggiunta alle parti pubbliche, visibili

dall'esterno della classe, e private, invisibili totalmente dall'esterno, e accessibili quindi dalle

sole funzioni appartenenti alla classe.

Ora ogni classe deriva da un unico super-oggetto, chiamato TObject. Questo è un oggetto

astratto, nel senso che non può essere creata un'istanza di TObject, anche se ci si può riferire

ad esso come parametro di funzione se si vuole che ad una funzione possa essere passato

qualsiasi oggetto.

Le Proprietà.I componenti che si disegnano sul video nell'ambiente di sviluppo hanno una serie di proprietà

che determinano il loro comportamento a run-time. Le proprietà sembrerebbero coincidere,

quali contenitori di dati legati ad un'istanza di classe, con le variabili membro. Internamente,

però, a livello di codifica, offrono un meccanismo di gestione differenziata delle operazioni di

lettura e scrittura. Una proprietà, infatti, può essere collegata a due funzioni a seconda che ne

venga letto il valore (operazione di read) oppure ne venga aggiornato il contenuto (operazione

di write).

Perché Delphi si appoggia a Object Pascal?Molta della semplicità di scrittura e manutenzione di codice Object Pascal è dovuta alla

possibilità, da parte dei progettisti Borland, di inventare e sfruttare estensioni proprietarie del

linguaggio: è un dato di fatto, ormai, che Pascal è uno standard Borland e che quindi quello che

Borland decide diventa standard de facto. Questo non può accadere con C++, dove ad

occuparsi delle caratteristiche del linguaggio è un comitato di standardizzazione, che

sicuramente non sta a modificare le caratteristiche di un linguaggio solo perché in ambiente

Page 23: Sistema per la casa intelligente - elettromoretto · Il segnale è abilitato quando l’interfaccia è alimentata; può essere utilizzato per determinare se l’interfaccia è collegata

Home of Dreams 23

DOS/Windows c'è qualcuno che potrebbe trarre vantaggi nella costruzione di un tool di

programmazione visuale!

Componenti - la via della riusabilità.Delphi risulta essere un ottimo tool di creazione di programmi che richiedono la gestione di

interfacce con l'utente assai complesse. Questo è principalmente dovuto alla capacità di poter

disporre in modo visuale un gran numero di elementi di interfaccia all'interno di finestre e dialog-

box. Guardando all'interno della component palette

subito sotto alla linea del menu, nella parte destra dello schermo, si

possono trovare praticamente tutti gli elementi di interfaccia cui

siamo abituati utilizzando Windows: si va dai più usuali bottoni, edit-

box e list-box, fino ad arrivare a sofisticati controlli tipo tabbed

notebook, passando dagli speedbutton (bottoni generalmente

utilizzati con sole bitmap, in grado di gestire comportamenti di

mutua esclusione tipici delle toolbar) e dalle griglie di stringhe

(TStringGrid). Tutti questi componenti possono essere piazzati con

un semplice click all'interno dei nostri programmi. Una volta collocati

sulla form, è possibile selezionarli e cambiarne le proprietà a

design-time, attraverso l'Object Inspector, mostrato di seguito. E'

così possibile definire le scelte possibili in un gruppo di radio button,

il tipo di font in una edit-box o il colore di una linea di testo statico (TLabel), il tutto senza

passare attraverso la scrittura di alcuna riga di codice!

Mano a mano che si aggiungono componenti all'interno di una form, Delphi tiene aggiornati i

sorgenti della propria applicazione. Di seguito viene mostrata una form piena di componenti

Page 24: Sistema per la casa intelligente - elettromoretto · Il segnale è abilitato quando l’interfaccia è alimentata; può essere utilizzato per determinare se l’interfaccia è collegata

Home of Dreams 24

Se andiamo ad osservare i sorgenti creati automaticamente in risposta alle azioni che hanno

portato a realizzare tale form, (premendo F12 in modalità IDE) abbiamo un'idea della mole di

codice che Delphi ci ha

risparmiato di scrivere e,

soprattutto, di mantenere ad

ogni aggiornamento degli

elementi di interfaccia .

Ognuno dei componenti forniti

con Delphi altro non è che una

classe Object Pascal, scritta

rispettando alcune regole di

scrittura dei componenti e,

generalmente, derivata da un

tipo di dato presente in Delphi

che permette di ereditare i

comportamenti tipici di ogni

componente.

Diversamente da quanto

accade con altri ambienti di sviluppo visuali in ambiente Windows, come ad esempio Visual

Basic, la scrittura dei componenti in Delphi passa attraverso Delphi stesso! Questo permette di

raggiungere un duplice obiettivo: primo, non è necessario conoscere altri linguaggi per essere

in grado di estendere l'ambiente di sviluppo con nuovi componenti scritti ad hoc; secondo, è

possibile seguire, nello sviluppo di nuovi componenti, una tecnica incrementale. Nel momento in

cui ci si accorge che una serie di modifiche ad elementi di interfaccia già esistenti hanno portato

alla creazione de facto di un nuovo elemento di interfaccia, è possibile promuovere questo

elemento, con un minimo sforzo di codifica, a far parte della Component Palette, pronto per

essere riutilizzato in altri progetti.

Page 25: Sistema per la casa intelligente - elettromoretto · Il segnale è abilitato quando l’interfaccia è alimentata; può essere utilizzato per determinare se l’interfaccia è collegata

Home of Dreams 25

Introduzione ai Componenti VisualiI componenti di Delphi si possono suddividere in tre grandi gruppi, più precisamente Visual,

Non-Visual e Data-Bound Components.

Andiamo per ordine e cominciamo con i primi: come si può capire dalla denominazione, si tratta

di componenti che hanno la caratteristica di apparire a design-time (fase di progetto) con lo

stesso aspetto con cui appariranno a run-time.

Il primo gruppo dei componenti Visual è quello dei controlli dedicati alla gestione del testo,

attraverso i quali è possibile interagire con l'utente per mezzo della tastiera o, comunque,

visualizzare messaggi sotto forma testuale.

Per primo incontriamo TLabel, attraverso il quale è possibile piazzare all'interno delle finestre

una o più linee di testo. Si tratta di un componente atto solo alla visualizzazione, non quindi

all'accettazione di input da tastiera. Al contrario, TEdit permette all'utente di inserire testo, dopo

aver selezionato il componente con il mouse, oppure esserci spostati con il tasto Tab. Di TEdit

esiste una versione specializzata per l'input formattato, che prende il nome di TMaskEdit.

Entrambi accettano una sola linea di input, diversamente da quanto accade per il componente

TMemo.

Chiudono l'elenco dei controlli legati al testo TComboBox e TListBox, metafore di combo-box e

list-box, rispettivamente, le cui funzionalità dovrebbero essere note a tutti gli utilizzatori di

Windows.

Passando ai bottoni, tre sono le classi offerte da Delphi che impersonano differenti tipi di

pulsanti: TButton, TBitBtn e TSpeedButton. Il primo è il classico bottone di Windows, senza

alcun elemento grafico - solo testo e bordo, che può essere scelto con lo stile di Windows 3.1

oppure di Windows 95!. TBitBtn, a differenza del precedente, può includere un glyph (piccolo

elemento grafico) al suo interno, in modo da poter identificare più rapidamente l'azione

associata. L'ultima classe, invece, è metafora di pulsanti appositamente creati per poter

lavorare in gruppo ed essere dotati di sola grafica, adatti quindi a creare toolbar.

TCheckBox e TRadioButton, se qualcuno non l'avesse ancora capito dal nome, impersonano

rispettivamente check-box e radio-button.

Il componente TStringGrid, permette di gestire una griglia di stringhe, con una serie di proprietà

assai complete che vanno dalla possibilità di tenere fisse ed evidenziate un numero a piacere di

colonne e righe, fino alla definizione del numero di righe e colonne nella griglia e una gestione

automatica delle scroll-bar nel caso l'area di visualizzazione fosse insufficiente. Questo

Page 26: Sistema per la casa intelligente - elettromoretto · Il segnale è abilitato quando l’interfaccia è alimentata; può essere utilizzato per determinare se l’interfaccia è collegata

Home of Dreams 26

componente presenta una miriade di usi possibili: dalla possibilità di farne la base di uno

spreadsheet, fino alla gestione delle tessere del gioco del quindici, o dei numeri di un tastierino

numerico! Tale componente supporta anche funzioni di data-entry e di navigazione all'interno

della griglia utilizzando il tasto Tab. Ovviamente tutti questi comportamenti sono parametrizzati

e liberamente modificabili a design-time.

TGroupBox e TPanel permettono di raggruppare visivamente altri componenti, attraverso la

visualizzazione di bordi rettangolari con titoli oppure riquadri con effetti tridimensionali. Se

utilizzati con intelligenza, questi elementi di interfaccia permettono di migliorare sostanzialmente

la leggibilità dei dati presenti nelle form delle proprie applicazioni.

Con TRadioGroup è possibile costruire una combinazione di TGroupBox (riquadro con titolo) ed

una serie di radio-button. La gestione delle relazioni di mutua esclusione fra i bottoni è delegata

al componente. Alla selezione di uno dei bottoni nel gruppo corrisponde un annullamento

automatico della precedente scelta. E' possibile raggruppare i bottoni su una o più colonne,

impostando semplicemente il valore di una proprietà (Columns).

TTabSet e TNoteBook permettono di costruire in modo assai semplice ed immediato tutta

quella serie di controlli che simulano il comportamento dei catalogatori, costituiti da una serie di

pagine sovrapposte e selezionabili attraverso il clic del mouse su un'area sempre visibile

contenente il titolo della pagina. In alternativa è possibile utilizzare TTabbedNotebook, un

controllo che in pratica offre i primi due già combinati.

Con TImage è possibile visualizzare immagini bmp, wmf ed ico all'interno di una porzione

rettangolare della propria finestra, semplicemente impostando una proprietà con il nome del file

appropriato. Attraverso TPaintBox si è in grado di offrire al proprio programma un'area

rettangolare limitata su cui effettuare operazioni grafiche. TShape, invece, permette di inserire

nelle proprie form, a design-time, alcuni elementi grafici, come ellissi, cerchi e rettangoli, con

motivi e colori di riempimento e bordo definibili a piacere.

Tornando alle griglie, troviamo altri due interessanti componenti: TColorGrid e TDrawGrid. Il

primo permette di far selezionare all'utente colori con combinazione di background e foreground

(ad esempio per offrire la possibilità di impostare a run-time i colori degli elementi della nostra

applicazione). Il secondo, invece, è una griglia entro la quale è possibile effettuare operazioni

grafiche.

Utilizzando TGauge è possibile visualizzare graficamente lo stato di avanzamento di

elaborazioni dalla durata non breve. TSpinEdit e TSpinButton permettono di creare controlli di

tipo spin, con frecce che permettono di incrementare e decrementare valori numerici: il primo,

Page 27: Sistema per la casa intelligente - elettromoretto · Il segnale è abilitato quando l’interfaccia è alimentata; può essere utilizzato per determinare se l’interfaccia è collegata

Home of Dreams 27

diversamente da TSpinButton, è collegato ad un campo di testo aggiornabile nel modo usuale,

ovvero con mouse e tastiera.

Infine, molto utili in alcune applicazioni si potrebbero rivelare TCalendar, un calendario mensile

con indicazione del giorno della settimana, e TDirectoryOutline, componente che effettua una

rappresentazione ad albero della struttura delle directory.

I principali componenti della VCL di DelphiE’ utile effettuare una suddivisione all'interno di tale gruppo di componenti, fra controlli dedicati

alla gestione del testo, bottoni, componenti grafici, griglie e componenti di accesso a directory.

Gestione del testo.A questo gruppo appartengono tutti quegli elementi di interfaccia in grado di gestire informazioni

sotto forma testuale, sia che si tratti di semplice visualizzazione di stringhe di caratteri, oppure

dell'insieme di funzionalità offerte da un text editor.

I componenti fondamentali per la gestione del testo sono TLabel e

TEdit, rispettivamente in grado di gestire output ed input/output di righe

di testo.

Conclude la rassegna dedicata ai componenti relativi alla

gestione del testo la classe TMemo, in grado di manipolare

input multilinea

Se il testo in un componente di tipo TLabel è contenuto

all'interno della proprietà caption e per uno di tipo TEdit è

contenuto nella proprietà text, entrambe di tipo string, per gli

oggetti appartenenti a TMemo si ricorre ad una struttura dati

differente, in quanto si deve gestire un campo multilinea. La struttura dati utilizzata per la

memorizzazione è un array di stringhe, appartenente alla classe TStrings.

All'interno della documentazione Borland si fa riferimento a tale oggetto chiamandolo lista di

stringhe. L’accesso alle singole stringhe ivi contenute avviene allo stesso modo di un array,

ovvero specificando il valore di un indice, mi sembra più corretto riferirsi alle TStrings

chiamandole array (anche se non hanno un dimensionamento definito a compile-time, come i

normali array di Object Pascal). La variabile membro di tipo TStrings che esprime il contenuto di

un campo memo prende il nome di Lines. Le operazioni di base per agire sul contenuto di un

campo TMemo sono sostanzialmente tre e fanno riferimento tutte ad operazioni sulle TStrings.

Page 28: Sistema per la casa intelligente - elettromoretto · Il segnale è abilitato quando l’interfaccia è alimentata; può essere utilizzato per determinare se l’interfaccia è collegata

Home of Dreams 28

Più precisamente si tratta di add - aggiunta di una stringa in fondo all'array; delete - operazione

che cancella una particolare riga e clear - operazione in grado di cancellare l'intero contenuto

del campo memo.

ListBox e ComboBox.Anche se relative alla manipolazione di testo, le classi che

rappresentano list-box e combo-box vanno considerate un po' a

parte, dato che generalmente questi controlli vengono utilizzati

nella loro modalità read-only, per mettere l'utente in condizione di

poter scegliere fra una serie di alternative.

Le stringhe contenute in tali elementi possono essere definite sia a

design-time che a run-time, agendo sulla proprietà Items, che è di

tipo TStrings (similmente a quanto accadeva con la proprietà Lines degli oggetti TMemo).

Ovviamente su questa proprietà è possibile applicare i metodi visti per i campi memo (add,

insert, clear ecc.).

Nel nostro esempio, essendo l'insieme di stringhe noto a priori e fisso, questo è stato inserito a

design-time utilizzando il property editor custom per liste di stringhe

Per quanto riguarda la list-box, non è necessario impostare

particolari proprietà in quanto, per definizione, una list-box è read-

only, mentre una combo-box potrebbe avere input da tastiera da

parte dell'utente.

Per rilevare i cambiamenti selezionati dall'utente a run-time, al solito

si imposta la risposta all'evento OnChange dei due elementi di

interfaccia. All'interno del codice di risposta si va a rilevare l'indice di

linea evidenziato dall'utente, utilizzando la proprietà ItemIndex.

Page 29: Sistema per la casa intelligente - elettromoretto · Il segnale è abilitato quando l’interfaccia è alimentata; può essere utilizzato per determinare se l’interfaccia è collegata

Home of Dreams 29

RadioButton e CheckBox.Le classi TRadioButton o, meglio, TRadioGroup, e TCheckBox, sono gli oggetti che

rappresentano un gruppo di radio button e di check-box, si prestano per

consentire la scelta di opzioni all’interno di un programma.

Il gruppo di radio button esprime sempre una serie di scelte in

alternativa fra loro; mentre nel caso della CheckBox le scelte non sono

non sono più mutualmente esclusive.

La funzione di risposta attraverso la quale è possibile rilevare l'evento di

cambiamento dello stato degli oggetti di interfaccia non è più di tipo

OnChange, bensì OnClick. proprietà chiave!

GriglieUna grande famiglia di componenti di Delphi, sia per numero che per importanza, è quella delle

griglie: la prima è l’oggetto TStringGrid, che servono da base per tutta quella serie di

applicazioni che necessitano di input/output di dati in formato tabellare.

TStringGrid, che altro non è che un array bidimensionale di stringhe, con righe e colonne

numerate a partire dallo zero.

Una proprietà chiave da impostare a design-time è quella del numero di righe e colonne di titolo

da tenere fisse (e che verranno evidenziate con l'effetto tridimensionale citato sopra),

rispettivamente denominate fixedCols e fixedRow. Nell'esempio sono impostate entrambe al

valore 1.

Page 30: Sistema per la casa intelligente - elettromoretto · Il segnale è abilitato quando l’interfaccia è alimentata; può essere utilizzato per determinare se l’interfaccia è collegata

Home of Dreams 30

Appartenente alla famiglia delle stringhe, ed ai componenti è anche la classe TDrawGrid che, a

differenza di TStringGrid che permette di memorizzare all'interno delle celle solo testo, è in

grado di gestire in generale informazioni di tipo grafico.

Button e SpeedButton.Tra i componenti visuali non potevano mancare i bottoni, elementi

principe dell'interazione uomo/macchina nelle moderne interfacce GUI

(Graphic User Interface).

In Delphi i bottoni "classici", quelli per intenderci senza grafica e con un

solo stato (non possono, ad esempio, risultare Fondamentalmente

l'interazione del programmatore con oggetti appartenenti a questa

classe si limita, oltre alla definizione di elementi a design-time come

caption, dimensioni e posizione, alla risposta all'evento OnClick.

Esistono altre due classi di pulsanti in Delphi, una, chiamata TBitBtn (da bitmap button), che in

pratica aggiunge ai semplici bottoni la possibilità di inserire, oltre alla caption (la "scritta") anche

un glyph, un elemento grafico in grado di far riconoscere al primo colpo d'occhio le funzionalità

associate all'elemento.

Le particolarità di questo tipo di pulsanti, comunque, sono principalmente legate all'introduzione

della grafica: per quanto riguarda le modalità di utilizzo, risultano perfettamente analoghe a

quelle dei "semplici" TButton.

Diversamente, la terza classe di pulsanti, TSpeedButton, oltre ad essere personalizzabile con

elemento grafico deciso dall’utente, ha la peculiarità di essere gestita in gruppo per creare

toolbar, toolbox e comunque permette di gestire due stati (bottone premuto, bottone alzato),

cosa che amplia enormemente gli ambiti di applicazione.

Page 31: Sistema per la casa intelligente - elettromoretto · Il segnale è abilitato quando l’interfaccia è alimentata; può essere utilizzato per determinare se l’interfaccia è collegata

Home of Dreams 31

NotebookL'insieme di controlli resi disponibili da Delphi è veramente ampio, tanto da includere due

versioni distinte dello stesso controllo, ovvero gli ormai classici notebook. Tre sono le classi

deputate alla gestione di tale elemento di interfaccia: TTabSet, TNotebook e

TTabbedNotebook. Ad essere precisi le prime due non gestiscono un notebook completo, al

contrario di quanto accade con la seconda.

Componenti Delphi non visualiMolti degli oggetti della VCL appartengono alla categoria di elementi che hanno aspetto a run-

time profondamente differente da quello a design-time. In generale questi componenti da soli

non portano a termine compiti particolari. Rimangono invisibili e collegati alla form che li

contiene, ma senza alcuna codifica aggiuntiva non hanno alcun effetto sull'interfaccia con

l'utente.

I Componenti non visuali rappresentano una serie di elementi di interfaccia utilissimi nello

sviluppo di applicazioni. Si va dai menu, sia di tipo tradizionale che di tipo “pop-up”, passando

dai timer in grado di far effettuare alle nostre applicazioni operazioni periodiche ed asincrone

rispetto al normale flusso di eventi gestito dal programma.

Per la maggior parte degli ambiti di utilizzo, lo sfruttamento di tali componenti da parte del

programmatore avviene in modo tradizionale, invocando metodi ad essi associati e

modificandone le proprietà a run-time, oppure scrivendo routine di gestione degli eventi. Alcuni

di questi componenti hanno a disposizione custom property editor per poter impostare le

proprietà di default.

Page 32: Sistema per la casa intelligente - elettromoretto · Il segnale è abilitato quando l’interfaccia è alimentata; può essere utilizzato per determinare se l’interfaccia è collegata

Home of Dreams 32

La classe TMainMenu, per esempio, offre un menu builder di tutto rispetto, ma neppure in

questo caso il programmatore può esimersi dallo scrivere, in ultima istanza, codice di

collegamento con altri oggetti scrivendo nei sorgenti "alla vecchia maniera".

Attraverso TPanel, infatti, osserveremo le fasi di creazione e gestione di una status-bar

collegata alle informazioni della proprietà Hint delle singole voci di menu.

Grazie all'estrema ortogonalità della libreria di classi di Delphi ci si renderà conto di come una

serie di problemi concettualmente simili (dalla visualizzazione degli Hint nella status bar, alla

gestione contemporanea di voci di menu pop-up e normali) vengano risolti con blocchi costitutivi

comuni, fatto che semplifica di molto le attività di programmazione.

I Menu.Aggiungere menu alle proprie applicazioni è cosa assai immediata e

passa attraverso l'utilizzazione di oggetti della classe TMainMenu, che

si possono trovare all'interno della component palette nella sezione

Standard.

Così come visivamente ogni menu è formato da voci, raggruppate

eventualmente a formare sottomenu, un oggetto appartenente alla

classe TMainMenu contiene una lista di voci di menu, rappresentate

da oggetti TMenuItem.

Il processo di creazione di un menu si svolge mediante un custom property editor, chiamato

Menu Designer.

E' sufficiente un doppio click sulla proprietà items per invocare tale editor di menu, attraverso il

quale è possibile inserire nuove voci, spostare ed eliminare voci già esistenti e costruire

visivamente gerarchie di sottomenu.

Ogniqualvolta si crea una nuova voce, all'interno del sorgente viene creato un nuovo oggetto di

tipo TMenuItem, con le seguenti proprietà chiave:

• Caption - stringa contenente il testo visualizzato nella voce di menu. E' possibile definire

acceleratori facendo precedere dal carattere "&" una delle lettere della stringa, alla pari di

quanto mostrato per i componenti di tipo TLabel nella puntata precedente.

• Checked - proprietà di tipo boolean che indica, se impostata a true, la presenza davanti

al testo della voce di menu di un checkmark (termine spesso tradotto con una locuzione

che prende a prestito un termine del gergo commerciale, ovvero "segno di spunta").

Page 33: Sistema per la casa intelligente - elettromoretto · Il segnale è abilitato quando l’interfaccia è alimentata; può essere utilizzato per determinare se l’interfaccia è collegata

Home of Dreams 33

• Enabled - proprietà di tipo boolean che, se impostata a false, rende inattiva una voce di

menu, seppure ancora visibile e generalmente impostata da Windows ad un colore poco

contrastato, di solito sul tono del grigio.

• Visible - proprietà di tipo boolean che, se impostata a false, rende la voce invisibile e, di

conseguenza, inattiva.

Associato ad ogni oggetto di tale classe vi è un unico evento accessibile dal property editor,

ovvero OnClick. La funzione di risposta a tale evento viene richiamata ogniqualvolta l'utente

seleziona la voce di menu relativa.

Menu e status-bar.Nelle applicazioni professionali spesso si utilizza una status-bar per fornire utili informazioni

fondamentali di aiuto all'utente.

La costruzione di una status-bar passa attraverso il componente TPanel, un particolare oggetto

in grado di occupare un'area rettangolare, eventualmente evidenziata da bordo ed effetti

tridimensionali di rilievo o incavo e collocata nella parte inferiore di una Form.

Menu pop-up.La selezione di voci di menu può risultare in alcuni casi scomoda, ad

esempio quando si lavora su parti della finestra lontane dalla barra di

menu. E' utile allora poter legare al tasto destro del mouse l'attivazione

di un menu locale, intendendo con tale parola sia una vicinanza

geometrica della posizione del menu rispetto a quella del puntatore del

mouse, sia un comportamento personalizzato delle opzioni visualizzate

a seconda dell'oggetto su cui si clicca il tasto del mouse. Tali menu

vengono detti pop-up e la classe VCL che ne incapsula proprietà,

metodi ed eventi è la TPopUpMenu.

I menu pop-up hanno molto in comune ai menu standard della classe TMainMenu: condividono

lo stesso menu designer, contengono entrambi una lista di TMenuItem e condividono la logica

di attivazione delle funzioni associate alle singole voci. La grossa differenza è che, per rendere

disponibile un menu pop-up, è necessario associarlo ad un qualche controllo, attraverso la

proprietà PopupMenu.

Page 34: Sistema per la casa intelligente - elettromoretto · Il segnale è abilitato quando l’interfaccia è alimentata; può essere utilizzato per determinare se l’interfaccia è collegata

Home of Dreams 34

Eventi periodici: la classe TTimerGli oggetti TTimer causano un evento OnTimer con cadenza periodica. La

durata del periodo è specificata nella proprietà interval, espressa in millisecondi.

All'interno della funzione associata a tale evento è quindi possibile compiere

operazioni ripetute ad intervalli di tempo regolari.

La proprietà chiave Enabled, di tipo boolean, permette di abilitare o disabilitare

temporaneamente il lancio degli eventi OnTimer. La si può sfruttare, ad esempio, per realizzare

un timer di tipo one-shot, ovvero che scatta una sola volta e non con cadenza periodica.

Common DialogDelphi offre supporto alla maggior parte delle caselle comuni di dialogo fornite dai sistemi

operativi con interfaccia grafica di Microsoft. Nella VCL esistono classi che rappresentano le

caselle di apertura e salvataggio di file, di selezione dei font e della stampante di default, di

gestione delle operazioni di ricerca e sostituzione all'interno di testo.

Oggetto OpenDialog (Apertura File)

Componenti Delphi dedicati all’accesso ai DatabaseUna delle peculiarità di Delphi è la presenza di un nutrito insieme di Oggetti di accesso ai

database. Gran parte degli Oggetti della VCL, infatti, sfruttando il Borland Database Engine

(BDE) fornisce al programmatore un facile mezzo di accesso a basi di dati sia locali, in formato

Paradox o dBase, che remote, gestite da server SQL.

BDE è lo strato di middleware, in pratica un insieme di API contenute all'interno di una serie di

Page 35: Sistema per la casa intelligente - elettromoretto · Il segnale è abilitato quando l’interfaccia è alimentata; può essere utilizzato per determinare se l’interfaccia è collegata

Home of Dreams 35

DLL, che permette di accedere in modo uniforme a basi di dati, indipendentemente sia dalla

loro rappresentazione, sia dalla loro dislocazione.

Una volta configurato correttamente il motore di database, il programmatore non si deve curare

minimamente dei dettagli di connessione alle tabelle che compongono l'insieme dei dati da

utilizzare: le procedure di accesso, infatti, non variano.

Un paragone efficace, sicuramente ben conosciuto da tutti, è quello del meccanismo di driver

per stampanti oppure per schede video utilizzato in Windows: gli stessi programmi, con le

chiamate alle stesse API della GDI, funzionano senza cambiamenti sia sulle schede video VGA

che sull'ultima generazione di schede acceleratrici.

Ovviamente i risultati in termini di prestazioni sono enormemente differenti: quello che è

importante, però, è l'aver raggiunto un ottimo grado di indipendenza dall'hardware, o comunque

dalle particolari rappresentazioni interne, astraendo i concetti comuni a tutta una serie di

dispositivi.

Così è per i database, grazie ad invenzioni come ODBC di Microsoft, e BDE di Borland:

l'importante è rendere i propri programmi virtualmente in grado di girare su qualsiasi base di dati

per cui sia disponibile un driver. E' ovvio che attraverso i driver si ha accesso ad una serie di

funzionalità comuni e di base, ma comunque sufficientemente ampie per i comuni compiti di

sviluppo. Nel momento in cui si necessita di velocità o di funzioni peculiari, BDE non chiude la

porta e permette, ad esempio, di sfruttare particolarità di alcuni server SQL. Ovviamente,

qualora si vada a sfruttare peculiarità, si perde qualcosa in termini di portabilità: passando ad

altro server, sarà necessario effettuare cambiamenti alle parti di software che implicano lo

sfruttamento delle caratteristiche legate al particolare gestore di data-base.

I componenti dedicati all'accesso ai dati.Centrale è l'oggetto TDataSet, che altro non è che l'astrazione di un insieme ordinato di righe di

dati (record), suddivise ognuna secondo un insieme ordinato di colonne, ognuna delle quali

identifica un campo all'interno del record. Generalmente non si utilizza direttamente tale classe,

ma si ricorre ad uno dei discendenti TTable, TQuery oppure TStoredProc. Questi componenti

discendono tutti dalla classe TDBDataSet, la quale discende a sua volta da TDataSet.

Page 36: Sistema per la casa intelligente - elettromoretto · Il segnale è abilitato quando l’interfaccia è alimentata; può essere utilizzato per determinare se l’interfaccia è collegata

Home of Dreams 36

Come già si può intuire dalle denominazioni, TTable rappresenta una tabella di database, sia

dal punto di vista della sua struttura (metainformazioni sulla tabella, ovvero informazioni sulle

informazioni contenute nel database), sia dei record veri e propri in essa memorizzati.

Normalmente, si tratta dell'astrazione relativa ad un file che contiene record fisicamente

immagazzinati su di un disco. TQuery, invece, è rappresentazione dell'insieme di dati restituiti

da una query SQL, ovvero una ricerca su una o più tabelle di un database espressa utilizzando

un linguaggio sviluppato ad hoc per tali compiti (Structured Query Language). Il risultato di una

query SQL, generalmente, non ha controparte diretta su disco, nel senso che i record risultanti

possono essere pensati solo come insieme temporaneo, tanto da poterlo immaginare

conservato nella sola memoria centrale del computer.

All'interno delle tabelle è possibile definire una serie di indici, grazie ai quali è possibile

mantenere ordinate, secondo il contenuto di uno o più campi, le righe delle tabelle. Non esiste

alcuna classe VCL in grado di rappresentare indici: in generale le funzioni per lo sfruttamento

ed il mantenimento di tali strutture di ordinamento vengono fornite direttamente dalla classe

TTable. Essendo per natura tabelle temporanee, le query SQL non possono fornire indici per la

consultazione. Vedremo comunque come sia possibile richiedere ordinamenti sull'insieme di

record di risposta in sede di definizione della query stessa.

TTable.La classe TTable incapsula le funzionalità proprie delle tabelle di database. Ogni volta che si ha

bisogno di accedere ad una specifica tabella o ad un insieme di tabelle di database si fa

riferimento ad una o più oggetti di questa classe. Per configurare correttamente le proprietà di

un oggetto TTable, dopo averlo posizionato sulla form, occorre impostare il contenuto di alcune

proprietà fondamentali, elencate di seguito.

Per accedere ad un database, nel nostro caso locale e quindi corrispondente ad una directory

che contiene un insieme di file in formato dBase oppure Paradox, si deve per prima cosa

impostare la proprietà DatabaseName immettendo o la directory in questione, oppure un alias

definito nel Borland Database Engine. Non è necessario, una volta configurato BDE, ricordarsi i

nomi degli alias disponibili: facendo click alla destra del campo che permette l'immissione della

proprietà, Delphi provvede a riempire una combo-box con i nomi di tutti gli alias disponibili.

La seconda proprietà da impostare è TableName, ovvero il nome della tabella cui si vuole avere

accesso tramite l'oggetto TTable. Nell'esempio, tale proprietà è stata impostata a libri1.db.

Come per DatabaseName è sufficiente cliccare alla destra della proprietà per avere una lista

delle tabelle disponibili all'interno del database selezionato.

Page 37: Sistema per la casa intelligente - elettromoretto · Il segnale è abilitato quando l’interfaccia è alimentata; può essere utilizzato per determinare se l’interfaccia è collegata

Home of Dreams 37

Queste sono le uniche proprietà che si devono impostare obbligatoriamente per avere accesso

ad una tabella: per le altre sono normalmente sufficienti le impostazioni di default. Altre

proprietà utili sono la ReadOnly che, se impostata a valore logico vero (true), fa in modo che

qualsiasi tentativo di cambiare i dati contenuti nella tabella fallisca: non si potrà quindi né

variare il contenuto di alcun campo, né effettuare cancellazioni o inserimenti di record. La

proprietà Exclusive, impostata a true, fa guadagnare accesso esclusivo alla tabella,

assicurandoci quindi che nessun altro utente, ma anche nessun altro oggetto TTable, o

comunque un Dataset, all'interno della propria applicazione, possa accedere alla tabella.

Questa proprietà si applica solo a tabelle locali, quindi non nel caso di accesso a tabelle gestite

da server SQL.

Componenti "Data-bound"I componenti più utilizzati per l'accesso a campi di database: TDBGrid - griglia in grado di

gestire visualizzazione, editing, inserimenti e cancellazione di record all'interno di dataset;

TDBEdit - campo di edit su di una singola colonna di tabella di database e TDBNavigator -

insieme di speedbutton in grado di comandare la navigazione e le operazioni di editing,

inserimento e cancellazione su dataset.

Nel caso si volessero solamente visualizzare i dati contenuti all'interno di uno o più record, non

offrendo quindi alcuna capacità di editing all'utente, si potrebbe ricorrere alla disabilitazione dei

controlli TDBGrid e TDBEdit, impostando la proprietà Enabled al valore logico false.

Per gestire campi memo, ovvero campi di testo dalla lunghezza non definita a priori dallo

schema di database, è possibile fare riferimento alla classe TDBMemo, in grado di fornire

accesso a dati suddivisi anche su più linee grazie alla proprietà Items di tipo TStrings. Essendo

l'analogo data-aware di TMemo, è quasi superfluo affermare che TDBMemo condivide un largo

insieme di funzioni di base con tale classe. Una proprietà interessante è la AutoDisplay: se

Page 38: Sistema per la casa intelligente - elettromoretto · Il segnale è abilitato quando l’interfaccia è alimentata; può essere utilizzato per determinare se l’interfaccia è collegata

Home of Dreams 38

impostata a valore logico vero, ogniqualvolta il record corrente cambia, viene visualizzato anche

il contenuto del campo memo; in caso contrario, l'aggiornamento della visualizzazione avviene

solo se si effettua un doppio click sul campo. In quest'ultimo caso, dato che, per definizione, nei

campi memo vi è solitamente una grande quantità di informazione, si può godere di sostanziali

benefici in termini di incremento di velocità nelle operazioni di browse interattive sul database.

Page 39: Sistema per la casa intelligente - elettromoretto · Il segnale è abilitato quando l’interfaccia è alimentata; può essere utilizzato per determinare se l’interfaccia è collegata

Home of Dreams 39

Manuale d’uso

Figura 4

La figura 4 mostra la Form principale del programma, evidenziandone le parti fondamentali.

Figura 5 Figura 6 Figura 7

Luci Spente Luci Accese Stanza selezionata

La piantina della casa semplifica l’interfaccia con l’utente aiutandolo ad orientarsi nel sistema

ed ad avere sempre in vista il cambiamento degli stati dei dispositivi, cambiando il colore delle

singole stanze in base allo stato delle luci (figura 5 – 6 - 7).

Page 40: Sistema per la casa intelligente - elettromoretto · Il segnale è abilitato quando l’interfaccia è alimentata; può essere utilizzato per determinare se l’interfaccia è collegata

Home of Dreams 40

La Barra denominata Comandi Luci serve per accendere e spegnere le luci in alternativa alla

“click” sulle stanze. E’ inoltre possibile accendere le luci esterne indipendentemente dalla

programmazione del temporizzatore.

I Pulsanti di scelta rapida rendono accessibili dalla finestra principale i dispositivi ausiliari

(gestione cancello, visualizzazione finestra comandi, impostazione dell’irrigazione, luci esterne

e riscaldamento / condizionamento) senza l’utilizzo dei menù.

La Barra dei menù, nel formato standard di Windows, viene utilizzata per accedere alla

gestione di tutti i dispositivi e alle funzioni aggiuntive del programma ( liste movimenti, Backup,

settaggio porte seriali, visualizzazione impianti, informazioni sul programma).

La Data e l’ora di sistema agevolano l’utente nella programmazione dei dispositivi

temporizzati.

Nel nostro sistema abbiamo integrato anche dei dispositivi che solitamente sono sparsi per la

casa, in modo da centralizzare e gestire tutto da un unico punto (nel nostro caso da un PC).

Il Termostato

Simile ad un termostato da parete svolge le stesse funzioni ossia gestisce una programmazione

settimanale ora per ora o manuale dell’impianto di riscaldamento e di condizionamento.

Page 41: Sistema per la casa intelligente - elettromoretto · Il segnale è abilitato quando l’interfaccia è alimentata; può essere utilizzato per determinare se l’interfaccia è collegata

Home of Dreams 41

Programmazione Luci Esterne e Impianto Irrigazione

Simili tra loro questi sono i temporizzatori che gestiscono gli impianti di illuminazione esterna e

d’irrigazione.

La programmazione è molto semplice: dopo aver impostato l’ora di attivazione del sistema

(Scroll Bar denominato con ON) e l’ora di disattivazione (Scroll Bar denominato con OFF), viene

registrata attraverso il pulsante “Regista” l’impostazione in un file di gestione, richiamandola

giornalmente senza il bisogno di reimpostarla. Attraverso il pulsante “Programma” è possibile

visualizzare ed eliminare le impostazioni precedentemente inserite.

Le Liste Movimenti

Ogni dispositivo qualora venga attivato o

disattivato genera un evento, che viene

memorizzato in un file. In questo modo noi

possiamo verificare il corretto funzionamento

del sistema. Questo trova la massima utilità nel

sistema d’allarme, che in caso d’intrusione

mostra il movimento del presunto ladro nei

nostri locali.

Page 42: Sistema per la casa intelligente - elettromoretto · Il segnale è abilitato quando l’interfaccia è alimentata; può essere utilizzato per determinare se l’interfaccia è collegata

Home of Dreams 42

Il BackUpNel nostro programma è stata prevista anche la funziona di BackUp, in modo da poter

archiviare anche giornalmente le impostazioni dei dispositivi e le liste movimenti.

Questo può essere utile per controllare i consumi energetici nella nostra casa e in caso di

BlackOut recuperare le impostazioni dei dispositivi.

Setup

In questa finestra vengono settate le impostazioni e attivate le connessioni delle porte relative

ai dispositivi impiegati e visualizzato il loro stato.

Page 43: Sistema per la casa intelligente - elettromoretto · Il segnale è abilitato quando l’interfaccia è alimentata; può essere utilizzato per determinare se l’interfaccia è collegata

Home of Dreams 43

Conclusioni

In questi anni la scuola attenta alla richiesta del mondo del lavoro e della informatizzazione di

tutto quello che è elettronico ha proposto dei corsi di Delphi un programma che viene utilizzato

per la creazione di software, prendendo al volo questa opportunità abbiamo deciso di utilizzarlo

per la realizzazione del programma che avrebbe gestito la nostra casa, rimboccandoci un po’ le

maniche abbiamo iniziato a studiarlo passo per passo, infatti la scuola ci ha dato solo l’input e le

basi per incominciare, poi siamo stati noi, con la nostra voglia di sapere, sempre di più a

portarci ad un livello che ci avrebbe permesso la costruzione del software per la gestione della

casa. Il lavoro è iniziato ad ottobre con lo studio del protocollo del sistema MID, questo lavoro è

stato abbastanza complesso perché le specifiche dateci dalla casa costruttrice non erano

sufficienti, quindi abbiamo dovuto studiare da zero il protocollo. Dopo aver trovato il protocollo

da inviare al sistema MID abbiamo realizzato il primo prototipo di programma che sarebbe

servito all’open day come lavoro di presentazione delle attività svolte all’interno della scuola,

visto il grande successo raccolto siamo ripartiti con la voglia di fare qualcosa di veramente bello

e funzionale. Sotto la guida del professor Azzani ci siamo rivolti alla Ave una ditta presente nel

bresciano che studia oltre che agli interruttori normali anche dei dispositivi intelligenti e sono

proprio questi che noi abbiamo utilizzato per la costruzione della nostra “Casa”, il rapporto con

la Ave è stato a dir poco fantastico infatti siamo sempre stati accolti e aiutati per la soluzione a

qualsiasi problema. Con lo studio del protocollo dei dispositivi Ave è iniziata la creazione del

vero e proprio software che per la sua realizzazione ci ha richiesto circa 500 ore di lavoro solo

nell’ambito scolastico senza contare le ore passate davanti al computer nelle nostre case. Visto

il software crescere abbiamo pensato se non era il caso di costruire qualcosa che ci avrebbe

permesso una miglior esposizione del nostro lavoro e così nasce l’idea di realizzare un plastico,

la sua costruzione è stata lunga e molto laboriosa sia dal punto di vista progettuale che da

quello manuale ma alla fine è una soddisfazione vederlo funzionare. Uno degli ultimi passi è

stato quello di incassare gli interruttori intelligenti della Ave in una finta parete che ci avrebbe

permesso di mostrare a tutti che il lavoro da noi svolto è realizzabile all’interno di qualsiasi

abitazione reale, dopo aver fatto questo c’è stata la fase di test. Dopo averla collaudata ci siamo

fermati ad ammirare il funzionamento della nostra casa denominata “ HOME OF DREAMS” .

Alessandro Enriotti e Michele Sivalli

Page 44: Sistema per la casa intelligente - elettromoretto · Il segnale è abilitato quando l’interfaccia è alimentata; può essere utilizzato per determinare se l’interfaccia è collegata

Home of Dreams 44

Allegati

Allegato A : Sorgenti programma Home of DREAMS

Allegato B : Manuali AVE