Escribir y leer datos a través de la interfaz TCP/IP
Escribir datos
La función write
escribe datos de forma síncrona en el host remoto conectado al objeto tcpclient
. Primero especifique los datos y después escríbalos. La función espera hasta que el número de valores especificados se escriba en el host remoto.
En este ejemplo, ya existe un objeto tcpclient
t
.
% Create a variable called data data = 1:10; % Write the data to the object t write(t, data)
Nota
En cualquier operación de lectura o escritura, el tipo de datos se convierte a uint8
para la transferencia de datos. Luego se convierte de nuevo al tipo de datos que haya establecido si ha especificado otro tipo de datos.
Leer datos
La función read
lee datos de forma síncrona desde el host remoto conectado al objeto tcpclient
y devuelve los datos. Hay tres opciones de lectura:
Leer todos los bytes disponibles (sin argumentos).
Opcionalmente, especifique el número de bytes para leer.
Opcionalmente, especifique el tipo de datos.
Si no se especifica un tamaño, la lectura predeterminada utiliza el valor de la propiedad BytesAvailable
, que es igual al número de bytes disponibles en el buffer de entrada.
En estos ejemplos, ya existe un objeto 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
En cualquier operación de lectura o escritura, el tipo de datos se convierte a uint8
para la transferencia de datos. Luego se convierte de nuevo al tipo de datos que haya establecido si ha especificado otro tipo de datos.
Adquirir datos de un servidor de una estación meteorológica
Uno de los principales usos de la comunicación TCP/IP es adquirir datos de un servidor. Este ejemplo muestra cómo adquirir y representar datos de una estación meteorológica remota.
Nota
La dirección IP de este ejemplo no es una dirección IP activa. El ejemplo muestra cómo conectarse a un servidor remoto. Sustituya la dirección que se muestra aquí por la dirección IP o el nombre de host de un servidor con el que quiera comunicarse.
Cree el objeto
tcpclient
usando la dirección que se muestra aquí y el puerto1045
.t = tcpclient("172.28.154.231",1045)
t = tcpclient with properties: Address: '172.28.154.231' Port: 1045 NumBytesAvailable: 0 Show all properties, functions
Adquiera los datos usando la función
read
. Especifique el número de bytes que se leerán como30
, en 10 muestras de 3 sensores (temperatura, presión y humedad). Especifique el tipo de datos comodouble
.data = read(t,30,"double");
Transforme los datos de 1 por 30 en datos de 10 por 3 para mostrar una columna respectivamente para la temperatura, la presión y la humedad.
data = reshape(data,[3,10]);
Represente la temperatura.
subplot(311); plot(data(:,1));
Represente la presión.
subplot(312); plot(data(:,2));
Represente la humedad.
subplot(313); plot(data(:,3));
Cierre la conexión entre el objeto de cliente TCP/IP y el host remoto eliminando el objeto.
clear t
Leer página del sitio web
En este ejemplo, lee una página del sitio web del editor de RFC con un objeto TCP/IP.
Cree un objeto TCP/IP. El puerto
80
es el puerto estándar para los servidores web.t = tcpclient("www.rfc-editor.org",80);
Configure la propiedad
Terminator
del objeto TCP/IP.configureTerminator(t,"LF","CR/LF");
Ahora puede comunicarse con el servidor utilizando las funciones
writeline
yreadline
.Para pedir que un servidor web envíe una página web, utilice el comando
GET
. Puede pedir un archivo de texto al sitio web del editor de RFC que utiliza'GET
.(path/filename)
'writeline(t,"GET /rfc/rfc793.txt");
El servidor recibe el comando y devuelve la página web. Puede ver si se devolvieron datos mirando la propiedad
NumBytesAvailable
del objeto.t.NumBytesAvailable
Ahora puede empezar a leer los datos de la página web. De forma predeterminada,
readline
lee línea a línea. Puede leer líneas de datos hasta que el valorNumBytesAvailable
sea 0. Tenga en cuenta que no se ve una página web representada; los datos del archivo HTML se desplazan por la pantalla.while (t.NumBytesAvailable > 0) A = readline(t) end
Si desea realizar más comunicaciones, puede seguir leyendo y escribiendo datos. Se ha acabado con el objeto, elimínelo.
clear t