Per verificare quali sono i dispositivi collegati alla porta seriale è sufficiente utilizzare la funzione serialportlist():

>> serialportlist("available")'
ans = 3×1 string
"COM1"
"COM3"
"COM13"

 

La connessione di un dispositivo seriale a Matlab avviene attraverso la funzione serialport().

Un modo veloce di creare un oggetto SerialPort è:

>> s = serialport(port, baudrate);

dove "s" è l'oggetto SerialPort creato, "port" è la porta seriale su cui è collegato il dispositivo e "baudrate" è la velocità di trasmissione dati.

L'oggetto SerialPort una volta creato effettua anche la connessione con la porta seriale, per liberare la connessione è sufficiente eliminare l'oggetto Serialport con clear:

>> clear s;

In generale è possibile creare un oggetto SerialPort generico da configurare successivamente:

>> s = serialport();

Le proprietà configurabili principali sono:

  • Port: la porta seriale a cui il dispositivo è collegato.
  • BaudRate: la velocità di trasmissione dati, in bit al secondo.
  • DataBits: il numero di bit di dati per ogni byte trasmesso.
  • Parity: la parità utilizzata per la trasmissione dei dati, può essere "none", "even", "odd", "mark" o "space".
  • StopBits: il numero di bit di stop utilizzati per la trasmissione dei dati, può essere "1", "1.5" o "2".
  • FlowControl: il metodo di controllo del flusso utilizzato per la comunicazione seriale, può essere "none", "hardware" o "software".
  • Terminator: il carattere o la sequenza di caratteri che indica la fine della trasmissione di un messaggio, ad esempio "CR/LF" (carriage return/line feed).
  • Timeout: il tempo massimo di attesa per la ricezione dei dati dal dispositivo, in secondi.
  • InputBufferSize: la dimensione del buffer di input, ovvero il numero massimo di byte che possono essere ricevuti dal dispositivo.
  • OutputBufferSize: la dimensione del buffer di output, ovvero il numero massimo di byte che possono essere trasmessi al dispositivo.

La funzione da utilizzare è configureSerialPort(), ad esempio per configurare le velocità di trasmissione a 9600 bps dell'oggetto SerialPort "s" si può utilizzare:

>> configureSerialPort(s, 'BaudRate', 9600);

Per configurare il terminatore di riga inserito automaticamente alla fine di ogni trasmissione da Matlab al dispositivo collegato sulla porta seriale si può utilizzare

>> configureTerminator(s,"CR/LF");

Il modo con cui i dati vengono inviati dipende dallo standard di comunicazione adoperato. Uno standard molto utilizzato è tramite stringhe ASCII, quindi per esempio per mandare un comando al dispositivo seriale collegato si può usare

>> fprintf(s,'comando');

dove "comando" è il comando che si vuole inviare.

Per esempio se si vuole inviare il comando "r" per leggere i dati sul dispositivo si può scrivere:

>> fprintf(s,'r');

Per leggere dati dal dispositivo collegato si può usare readline()

>> data = readline(s);

Il comando legge una riga di dati dal dispositivo seriale e la restituisce come una stringa nel vettore "data". In questo caso è fondamentale che i due dispositivi collegati utilizzino lo stesso terminatore.

Ultime modifiche: mercoledì, 3 gennaio 2024, 20:57