Come si connette un dispositivo seriale con Matlab
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.