Scrittura e lettura di dati tramite interfaccia TCP/IP
R2026bScrittura di dati
La funzione write scrive i dati sull'host remoto collegato all'oggetto tcpclient in modo sincrono. Specificare prima i dati, quindi scriverli. La funzione attende che il numero specificato di valori venga scritto sull'host remoto.
In questo esempio, è già presente un oggetto tcpclient t.
% Create a variable called data data = 1:10; % Write the data to the object t write(t, data)
Nota
Per qualsiasi operazione di lettura o scrittura, il tipo di dato viene convertito in uint8 ai fini del trasferimento dei dati. Viene quindi riconvertito nel tipo di dato impostato, se è stato specificato un altro tipo di dato.
Lettura di dati
La funzione read legge i dati dall'host remoto collegato all'oggetto tcpclient in modo sincrono e restituisce i dati. Sono disponibili tre opzioni di lettura:
Leggere tutti i byte disponibili (nessun argomento).
Specificare opzionalmente il numero di byte da leggere.
Specificare opzionalmente il tipo di dato.
Se non si specifica una dimensione, la lettura predefinita utilizza il valore della proprietà BytesAvailable, che è pari al numero di byte disponibili nel buffer di input.
In questi esempi, è già presente un oggetto tcpclient t.
% Read all bytes available. read(t) % Specify the number of bytes to read, 5 in this case. read(t,5) % Specify the number of bytes to read, 10, and the data type, double. read(t,10,"double")
Nota
Per qualsiasi operazione di lettura o scrittura, il tipo di dato viene convertito in uint8 ai fini del trasferimento dei dati. Viene quindi riconvertito nel tipo di dato impostato, se è stato specificato un altro tipo di dato.
Acquisizione dei dati dal server della stazione meteorologica
Uno degli utilizzi principali della comunicazione TCP/IP è l'acquisizione di dati da un server. Questo esempio mostra come acquisire e tracciare i dati provenienti da una stazione meteorologica remota.
Nota
L'indirizzo IP riportato in questo esempio non è un indirizzo IP funzionante. L'esempio mostra come collegarsi a un server remoto. Sostituire l'indirizzo qui indicato con l'indirizzo IP o il nome host del server con cui si desidera comunicare.
Creare l'oggetto
tcpclientutilizzando l'indirizzo qui indicato e la porta1045.t = tcpclient("172.28.154.231",1045)t = tcpclient with properties: Address: '172.28.154.231' Port: 1045 NumBytesAvailable: 0 Show all properties, functionsAcquisire i dati utilizzando la funzione
read. Specificare il numero di byte da leggere come30, per 10 campioni provenienti da tre sensori (temperatura, pressione e umidità). Specificare il tipo di dato comedouble.data = read(t,30,"double");Rimodellare i dati 1×30 in dati 10×3 in modo da ottenere una colonna per ciascuna delle tre variabili: temperatura, pressione e umidità.
data = reshape(data,[3,10]);
Tracciare la temperatura.
subplot(311); plot(data(:,1));
Tracciare la pressione.
subplot(312); plot(data(:,2));
Tracciare l'umidità.
subplot(313); plot(data(:,3));
Chiudere la connessione tra l'oggetto client TCP/IP e l'host remoto eliminando l'oggetto.
clear t
Lettura di pagine dal sito web
In questo esempio, si legge una pagina dal sito web dell'Editor di RFC utilizzando un oggetto TCP/IP.
Creare un oggetto TCP/IP. La porta
80è la porta standard per i server web.t = tcpclient("www.rfc-editor.org",80);Impostare la proprietà
Terminatordell'oggetto TCP/IP.configureTerminator(t,"LF","CR/LF");
È ora possibile comunicare con il server utilizzando le funzioni
writelineereadline.Per richiedere a un server web di inviare una pagina web, utilizzare il comando
GET. È possibile richiedere un file di testo dal sito web dell'Editor di RFC utilizzando'GET.(path/filename)'writeline(t,"GET /rfc/rfc793.txt");Il server riceve il comando e restituisce la pagina web. È possibile verificare se sono stati restituiti dei dati controllando la proprietà
NumBytesAvailabledell'oggetto.t.NumBytesAvailable
È ora possibile iniziare a leggere i dati della pagina web. Per impostazione predefinita,
readlinelegge una riga alla volta. È possibile leggere le righe di dati finché il valoreNumBytesAvailablenon diventa 0. Si noti che non viene visualizzata una pagina web renderizzata, ma che i dati del file HTML scorrono sullo schermo.while (t.NumBytesAvailable > 0) A = readline(t) end
Se si desidera effettuare ulteriori comunicazioni, è possibile continuare a leggere e scrivere dati. Se non si utilizza più l'oggetto, eliminarlo.
clear t