Per verificare il corretto funzionamento del codice si è implementato lo standard di comunicazione seriale RS232c: ciò significa che i bit di informazione verranno inviati uno alla volta attraverso una connessione seriale implementata attraverso i cavi DB9.
I numero 9 sta a indicare il numero di pin presenti nella parte finale del cavo; i pin sono collegati a fili di rame presenti nel corpo del cavo, ognuno dei quali ha una specifica funzione: trasmissione, ricezione, massa, handshake (protocollo di sincronia che garantisce che i dati trasmessi non vadano persi), ecc.
Lo standard RS232c si basa sulla comunicazione asincrona, cioè trasmettitore e ricevitore non sono sincronizzati durante la trasmissione/ricezione. Ogni carattere inviato è codificato con un certo numero di bit a seconda della codifica utilizzata.
Ogni serie di bit è preceduta da un bit di start e seguita da uno o più bit di stop e uno di parità (controllo di errore).
Ovviamente la comunicazione può essere attuata solo se si dispone di una porta seriale sul pc oppure si possono utilizzare programmi di virtualizzazione come Com0com.
Esistono inoltre dei parametri che permettono di gestire la connessione quali:
Il codice incluso indica come l'inizializzazione delle porte Rs232 è gestita in Crypthat.
Il metodo utilizzato è infatti "InizializzaPorta" dove viene specificato a che persona (Identity) attribuire un porta Rs232.
Come prima cosa si inizializza la proprietà Identity.serialPort ad un nuovo oggetto SerialPort con il nome specificato nei parametri del metodo.
Seguono poi i settaggi dei parametri della porta, in questo caso sono stati utilizzati:
Durante lo sviluppo della classe di gestione di Rs232 abbiamo riscontrato un problema inaspettato che ha ritardato il progetto.
Crypthat, infatti, utilizza la porta Rs232 ad eventi, ovvero ogni volta che un dato viene ricevuto, viene chiamato l'evento Data_Received della porta che restituisce la porta Rs232 di origine ed i dati letti (presenti nel buffer di ricezione). Nella fase di testing, però, il gruppo ha scoperto che l'evento veniva chiamato alla ricezione di un certo numero di bit, non necessariamente alla fine del messaggio.
E' stato quindi necessario modificare i metodi di comunicazione, inserendo alla fine di ogni messaggio un carattere di escape (nel nostro caso ~) ed in ricezzione usando il metodo dell'oggetto SerialPort, "ReadTo(char carattere)" che legge il buffer corrente fino ad un determinato carattere e cancella solo i byte letti.
Sottoscriviti a questo Blog via RSS.
Sito 1
Programmazione (2) Organizzazione (1) Connessioni (2) Interfaccia (1) Crittografia (3) Sito (1)