Introduzione
Avvertenze per l'uso corretto della comunicazione SERIALE da applicazioni R3:
•Utilizzare l'istruzione ser_con o il comando dev_con per impostare i parametri del canale seriale (baud rate, etc...)
•Utilizzare l'istruzione ser_mod per stabilire la modalità di lavoro del canale seriale
Modo 0 stringhe terminate
In questa modalità e necessario che il canale sia configurato in modo ascii (comando PSER ASCII).
In questa modalità le stringhe in arrivo sul buffer in ricezione possono seguire due strade:
1) Se la stringa è prefissata dai caratteri :DtR: e termina con il carattere terminatore impostato (default "LF" (10 dec. - 0AH) o con quello impostato come attivo terminator) viene presa in carico dal gestore RTE e viene inviata la risposta prefissata :aSw: e terminata con il carattere terminatore impostato (default "LF" (10 dec. - 0AH) o con quello impostato come attivo terminator).
RTE è in grado di onorare tutti i comandi di tipo comandi dispositivo.
NOTA: È consigliabile l'utilizzo della comunicazione dle_ascii.
2) Se la stringa non è prefissata, allora da programma è possibile:
•Sapere se sul dispositivo indicato è presente una stringa terminata, tramite la funzione ser_ready()
•Scaricare la stringa terminata tramite la funzione ser_in()
•Inviare una stringa terminata tramite la funzione ser_out()
Modo 1 singolo carattere
In questa modalità da programma è possibile:
•Sapere il numero di caratteri presenti nel buffer di ricezione del dispositivo indicato tramite la funzione ser_bin_ready()
•Scaricare il numero di caratteri desiderato tramite la funzione ser_bin_in()
•Inviare il numero di caratteri desiderato tramite la funzione ser_bin_out()
Modo 2 singolo carattere con handshake disabilitato
In questa modalità da programma è possibile:
•Sapere il numero di caratteri presenti nel buffer di ricezione del dispositivo indicato tramite la funzione ser_bin_ready()
•Scaricare il numero di caratteri desiderato tramite la funzione ser_bin_in()
•Inviare il numero di caratteri desiderato tramite la funzione ser_bin_out()
•Leggere la parola di stato tramite la funzione ser_r_sts()
•Impostare i due segnali DTR e RTS tramite l'istruzione ser_w_sts()
Modo 12 RS 485
Utilizzando questo standard fisico di comunicazione è possibile effettuare dei collegamenti multipoint utilizzando solo 3 fili (Line+, Line- e comune). L'utilizzo di soli tre fili implica che la comunicazione sia di tipo Half Duplex, senza interblocco sul flusso dati.
Questo protocollo sui controlli Robox è utilizzabile sulle porte di tipo RS422/485. È necessario unire il pin di TX+ a quello di RX+ (ottenendo così Line+) ed il pin di TX- a quello di Rx- (ottenendo così Line-).
Lo standard RS485 richiede un protocollo di comunicazione che preveda un identificatore di stazione. Non esistendo uno standard unico sul protocollo, l'implementazione è demandata all'utente per soddisfare tutte le sue necessità.
Il gestore RTE è in grado di riconoscere se i messaggi trasmessi non hanno colliso con quelli trasmessi da altre stazioni, ma la gestione dell'errore e dell'eventuale ri-invio del messaggio è a cura dell'utente.
Operatività
Questo standard viene attivato utilizzando l'istruzione ser_mod. A partire da questo momento la linea viene mantenuta flottante. Quando l'utente scrive sul seriale (ser_bin_out()) avviene:
•Abilitazione della linea
•Trasmissione del messaggio
Essendo la linea di trasmissione connessa a quella di ricezione, viene verificato che si riceva correttamente ciò che si sta trasmettendo. Un esito negativo segnala una collisione e la trasmissione viene abortita. Terminata la trasmissione di tutti i caratteri si aspetta il transmitter empty per rilasciare la linea.
La presenza di una linea sconnessa (no richiusura TX su RX) viene diagnosticata mediante l'uso di un timeout sulla ricezione dei dati. In caso di intervento del timeout la trasmissione si considera non riuscita e si rilascia la linea.
Quando la linea è rilasciata, RTE si mette in attesa di caratteri in ricezione. La linea viene rilasciata dopo la trasmissione dell'ultimo carattere.
In questa modalità da programma è possibile:
•Sapere il numero di caratteri presenti nel buffer di ricezione del dispositivo indicato tramite la funzione ser_bin_ready()
•Scaricare il numero di caratteri desiderato tramite la funzione ser_bin_in()
•Inviare il numero di caratteri desiderato tramite la funzione ser_bin_out()
•Avere informazioni circa la trasmissione tramite la funzione ser_485_tx_sts()
•Utilizzare la funzione di supporto, valida in tutte le modalità, ser_buff_free() per sapere il numero di byte liberi sul buffer in TX
•Utilizzare la funzione di supporto, valida in tutte le modalità, ser_buff_queue() per sapere il numero di byte occupati sul buffer in TX
NOTA: È possibile avere informazioni sulla trasmissione agendo sulla variabile predefinita sys_flag bit 12.