Connessione al database con Visual Basic NET? Lo trovi su Opentraining.it Visual Basic Italia
PRINCIPALE > COMUNICAZIONE SERIALE: PRIMA PARTE

Eseguire una ricerca veloce nell' archivio delle risorse di Visual Basic Italia®: 

Preso dall'archivio...

Premere il pulsante sotto per accedere direttamente ad un articolo o ad un esempio preso in modo casuale dall'archivio.



Ultimo e-book pubblicato:

"INTRODUZIONE AI CSS"

Lo scopo del CSS language è quello di controllare lo stile dei vari elementi che concorrono a formare un
documento HTML.
Si può operare in tre modi collegamento ad un foglio di stile esterno;definizione degli stili all'inizio
del documento utilizzo della proprietà style all'interno di un Tag HTML (embedded style). Questo e-book introduttivo
servirà per apprendere tali nozioni fondametali dei fogli di stile.

Prezzo: € 0.0.
Presentazione:
REAL SOFTWARE RILASCIA LA VERSIONE 5.0 di REALbasic per Windows






Gorizia, 5 maggio 2003 - Active, distributore in esclusiva di REALSoftware, Austin, Tx, annuncia la disponibilità di REALbasic 5.0 per Windows, uno strumento per lo sviluppo semplice da usare che permette agli utenti Windows di tutti i livelli di creare applicazioni personalizzate e di compilarle sia per la piattaforma Windows che per quella Macintosh.
[>>]

http://www.active-software.com

 

Contatti. Utilizzare l'email generica per domande relative al sito:
Porre domande relative al sito
oppure scrivere ad un responsabile di area.
Responsabile del sito: >Andrea Martelli
Responsabile area "Corso di VB":
> Giorgio Abraini

Comunicazione seriale (prima parte)

Questa lezione, consultata da 13667 utenti, è stata giudicata di ottimi contenuti , con un'esposizione perfettamente comprensibile e con un livello di approfondimento ottimo da 67 votanti.


Le basi della comunicazione seriale

In questa serie di articoli si vedranno innanzitutto i principi che stanno alla base della comunicazione seriale e tutte le definizioni necessarie per comprendere l'argomento. Una volta chiariti i concetti base si passerà ad analizzare le funzioni di Windows che permettono la gestione della comunicazione seriale e solo in un secondo momento verranno mostrate le caratteristiche del controllo MSComm Questo perchè l'utilizzo delle funzioni di Windows può rivelarsi molto più utile del semplice impiego di MSComm per due motivi. Innanzitutto per la maggiore flessibilità nell'utilizzo di una serie di funzioni altamente personalizzabili piuttosto che un blocco unico costituito dal controllo.
In secondo luogo per comprendere come avviene la comunicazione seriale e dunque comprendere come si comporta l'oggetto MSComm, ossia quali API utilizza quando viene utilizzato nel progetto.
In terzo luogo perchè può accadere che le caratteristiche del controllo MSComm non siano sufficienti per raggiungere determinati scopi in modo efficiente.

In breve diciamo che la comunicazione seriale consente la trasmissione e la ricezione di dati tramite una porta seriale. Tale comunicazione avviene attraverso lo scambio di blocchi di bit ad una determinata velocità lungo i cavi seriali che raggiungono porte di ogni tipo in base naturalmente alle periferiche installate sul computer.
Le porte più comuni sono quelle della tastiera, del mouse, del video, del modem, della stampante, la porta USB e così via.
Vediamo brevemente i principi della comunicazione seriale.
Come già detto le porte seriali connettono fisicamente una periferica al computer e ne permettono una comunicazione asincrona. Per comunicazione asincrona s'intende un metodo di trasferimento dati ad intervalli regolari: l'invio di ogni carattere alla porta (tipo RS-232) viene preceduto dall'invio un bit che indica l'inizio della comunicazione, e seguito dall'invio di un secondo bit che indica la chiusura (temporanea) della comunicazione.
E naturalmente si definisce invece comunicazione sincrona il trasferimento dati computer/porta parallela come flusso continuo di bit.

Qual'è la differenza tra una comunicazione seriale ed una parallela? Nel caso di comunicazione parallela il trasferimento dei dati avviene attraverso otto pin (ossia in pratica otto contatti) per trasmettere gli otto bit che costituiscono un carattere (ad esempio la lettera 'a'). Una volta arrivati alla porta questi bit si combinano per creare il carattere.
Ad esempio vediamo come il carattere 'a' viene inviato ad una stampante nel caso di porta parallela:

Come si capisce dal grafico, questo tipo di comunicazione è definita parallela perchè tutti i bit vengono spediti alla periferica contemporaneamente ossia in parallelo (utilizzando cioè un metodo di trasferimento sincrono).
Nel caso di comunicazione seriale invece viene utilizzato un singolo pin in modo sequenziale. I bit che compongono il carattere (ad esempio 'a') vengono trasferiti uno dietro l'altro in serie. In realtà la sequenza dei passaggi è questa: quando il computer deve trasferire il carattere 'a' ad una periferica, trasformati i bit (che sono in parallelo) in una sequenza di bit che, una volta raggiunta la periferica, vengono nuovamente riportati in parallelo.
La figura sotto dovrebbe chiarire meglio il concetto:

Il problema che nasce in questo caso è che la periferica non capisce quando terminano i bit relativi ad un carattere e comincia il flusso di bit relativi ad un altro carattere. Questo non accade per la comunicazione parallela perchè nel primo istante la periferica riceve tutti i bit di un carattere, nell'istante successivo quelli del carattere seguente e così via.
Ecco perchè la comunicaizone seriale dev'essere sincronizzata.

Sincronizzare una comunicazione vuol dire impostare i tempi (o meglio, il tipo di flusso: continuo oppure ad intervalli) nei quali avviene il trasferimento dei dati per permettere ai due estremi comunicanti di identificare in modo corretto il flusso di informazioni.
Come già visto poco fa i principali sistemi per sincronizzare una comunicazione sono l'utilizzo di una comunicazione sincrona o asincrona. Vediamoli ora nel dettaglio.
La comunicazione sincrona che come già detto consente flusso continuo di bit è molto efficiente nel caso di trasferimento di grosse quantità di dati. La velocità alla quale i dati vengono trasferiti dipende naturalmente dal blocco di informazioni che si desidera trasportare da un estremo all'altro della comunicazione.
Il trasferimento avviene attraverso il raggruppamento di blocchi di dati che vengono inviati ad intervalli regolari, preceduti da caratteri speciali (denominati syn o synchronous idle characters).
Ad esempio:

dove naturalmente il termine 'dati' non si riferisce a singoli bit ma a pacchetti (o blocchi) di bit.
Una volta che i caratteri syn sono ricevuti dalla periferica vengono decodificati ed usati per sincronizzare il trasferimento dei dati. La comunicazione asincrona invece prevede l'invio di bit all'inizio ed alla fine del flusso in modo da indicare l'inizio ed il termine di un carattere.
L'esempio grafico è il seguente:

Lo stato della comunicazione è dato dal bit 1 (1 binario). Quando però la periferica riceve uno 0 binario, allora si mette in ascolto della serie di dati che vengono dopo. Ecco perchè il bit d'inizio carattere è sempre uno 0 binario e quello di fine carattere è sempre un 1 binario.

Come abbiamo potuto vedere la comunicazione seriale è un argomento molto tecnico. Per questa ragione conviene introdurre altri concetti ancor prima di iniziare a lavorare su un qualsiasi codice.
Cominciamo con la serie di parametri che intervengono nel trasferimento di dati.
Si definisce bpc (bits per character) il numero di caratteri utilizzato per rappresentare un unico carattere durante una comunicazione seriale (ad esempio 7 bit oppure 8 bit).
Che differenza c'è tra un carattere espresso in 7 bit rispetto ad uno espresso in 8? Nel primo caso è possibile inviare solamente i primi 127 caratteri del set ASCII (nella guida MSDN di Microsoft se ne trova la tabella sotto la voce ASCII->Set di caratteri).
Nel secondo caso al contrario vengono inviati i caratteri da 127 a 255. La spiegazione di tutto questo è semplicemente che i primi (0-127) caratteri sono normalmente rappresentabili attraverso 7 bit e i secondi (127-255) attraverso 8 bit.
Altro parametro, senza dubbio più diffuso del primo è bps ossia bits per second. che rappresenta un'unità di misura della velocità di trasferimento dei dati. Viene così calcolato il numero di bit che raggiunge la destinazione (la periferica) entro un secondo.
Andando avanti troviamo bd ossia baud rate che corrisponde al numero di volte in cui il segnale della connessione modifica la frequenza o il livello di voltaggio. Nel caso in cui il segnale cambi ad ogni bit allora il baud rate coincide con il bps.

Il bit di parità invece, al contrario dei bit d'inizio e fine carattere è opzionale nel processo di trasferimento dati.
Esso ha l'unico scopo di determinare se il carattere inviato ad una periferica è stato ricevuto in modo corretto ed è applicabile solo alla comunicazione seriale e naturalmente non a quella parallela.
Quindi si parla di parità nel senso di corrispondenza (=pari numero) di dati che escono dal sistema che li invia e che vengono ricevuti dal sistema che li riceve.
Le specifiche del bit di parità sono le seguenti:

none
indica che la connessione seriale non utilizza il bit di parità per i dati trasmessi e che quindi il sistema ricevente non controllerà la parità per i dati ricevuti.
even
specifica che il totale della somme degli 1 binari che formano un singolo carattere è un numero pari. In questo caso il bit di parità sarà impostato su 0, in caso contrario su 1.
Ad esempio nell'invio del carattere 'a' (codice binario 1100001), il totale degli 1 è il numero dispari 3. Il bit di parità sarà quindi impostato su 1. Se invece si invia il carattere 'A' (codice binario 1000001), il bit di parità sarà impostato su 0.
odd
simile a even solo che questa volta il bit di parità assume valore 0 se la somma degli 1 binari è dispari e 1 se è pari.
space
indica che il bit di parità sarà in ogni caso 0. Questo può essere utile in caso di controllo di errori: se il bit di parità è diverso da 0 allora si è verificato un errore.
mark
simile a space solo che questa volta il bit di parità assume il valore predefinito 1.

In realtà gran parte dei modem seriali in circolazione utilizzano la trasmissione di caratteri a 10 bit: uno rappresentato dal bit di inizio carattere, 7 o 8 per il carattere, 1 o 0 rappresentato dal bit di parità e 1 o 2 per la fine del carattere.

Adesso che è stato dato uno sguardo generale alla teoria della comunicazione seriale si può introdurre, cosa che faremo nel prossimo articolo il primo elemento di codice che è rappresentato dalla funzione CreateFile per l'apertura della connessione ad una periferica.


Approfondimenti

» "Serial comunication general concepts"