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