In questo esempio si inizializzano e si usano le seriali in ambiente linux in protocol mode 0 che si distingue dal mode 1 (detto anche protocol mode syel) per l'invio di singoli byte o pacchetti senza preambolo ne checksum e senza le funzioni di librieria syel.
Nello start.c vengono eseguiti due task
- rs485_task
- rs232_task Le due funzioni che si vanno ad eseguire lanciando questi task sono presenti nel file common.h del progetto. Le prime linee di codice sono per l'inizializzazione e apertura della porta alle quali segue un ciclo infinito nel quale si resta in ascolto di eventuali byte in arrivo
void rs232_task(void)
{
// inizializzazione porta 232
MY_COM232 = PortaCOM232;
com_close(MY_COM232);
wait(500);
com_open(MY_COM232, BaudRate232);
com_disable(MY_COM232);
protocol_mode(MY_COM232, 0); // protocollo 0 - invio singolo byte
com_enable(MY_COM232);
while(1) { //******* ricezione pacchetto **********
if (com_rx_empty(PortaCOM232)) {
_idle();
} else {
while (!com_rx_empty(PortaCOM232)) {
counter_232_packets_rx++;
retChar = com_rx(PortaCOM232);
}
}
}
}
Nella ricezione del pacchetto si nota come la funzione resti in idle finchè non arriva niente, mentre scarrella byte con la com_rx() finche qualcosa è presente sul buffer incrementando cosi un contatore. Per la 485 è tutto analogo eccetto per la com che è ovviamente diversa.
Per inviare il singolo byte si usa la funzione com_tx
void invia232(void)
{
counter_232_packets_tx++;
com_tx(PortaCOM232, sendChar);
}
Nota: com_tx e com_rx sono funzioni dell'ambiente di sviluppo proteus spiegate nel manuale a pagina 34 sezione Porte Seriali.
Per quanto riguarda l'interfaccia dell esempio è molto banale e permette di selezionare un carattere e inviarlo tramite 232 o 485 incrementando i relativi contatori così come anche anche in ricezione
L'esempio è stato testato su due dispositivi syel p10 collegati tra loro in RS232 e RS485 ed liberamente scaricabile dal seguente link: scarica
2025-02-07 Creatore dell'articolo Simone De Santis. Per ulteriori richieste simone.desantis@syel.it