本页对应的英文页面已更新,但尚未翻译。 若要查看最新内容,请点击此处访问英文页面。

通过 TCP/IP 接口写入和读取数据

写入数据

write 函数以同步方式将数据写入与 tcpclient 对象连接的远程主机。首先指定数据,然后写入该数据。此函数一直等到指定数量的值写入远程主机。

在此示例中,tcpclient 对象 t 已存在。

% Create a variable called data
data = 1:10;

% Write the data to the object t
write(t, data)

注意

对于任何读写操作,该数据类型将转换为 uint8 以便传输数据。如果指定了其他数据类型,则可以将其重新转换为所设置的任何数据类型。

读取数据

read 函数以同步方式从连接到 tcpclient 对象的远程主机读取数据和返回数据。有三个读取选项:

  • 读取所有可用字节(无参数)

  • (可选)指定要读取的字节数

  • (可选)指定数据类型

如果未指定大小,则默认读取将使用 BytesAvailable 属性值,该值等于输入缓冲区中可用的字节数。

在这些示例中,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')

注意

对于任何读写操作,该数据类型将转换为 uint8 以便传输数据。如果指定了其他数据类型,则可以将其重新转换为所设置的任何数据类型。

从气象站服务器获取数据

TCP/IP 通信的主要用途之一是从服务器获取数据。此示例显示如何从远程气象站获取数据并对数据绘图。

注意

此示例中的 IP 地址不是工作 IP 地址。该示例显示如何连接到远程服务器。请使用您要与之通信的服务器的 IP 地址或主机名替换此处所示的地址。

  1. 使用此处显示的 AddressPort 1045 创建 tcpclient 对象。

    t = tcpclient('172.28.154.231', 1045)
    
    t = 
    
       tcpclient with properties:
    
              Address: '172.28.154.231'
                 Port: 1045
              Timeout: 10
       BytesAvailable: 0

    请参阅上述步骤 1 中关于使用有效地址的注释。

  2. 使用 read 函数获取数据。对于来自 3 个传感器(温度、压力和湿度)的 10 个样本,指定要读取的字节数为 30。将数据类型指定为 double

    data = read(t, 30, 'double');
  3. 将 1×30 数据重构为 10×3 数据,各用一列来显示温度、压力和湿度。

    data = reshape(data, [3, 10]);
  4. 绘制温度图。

    subplot(311);
    plot(data(:, 1));
  5. 绘制压力图。

    subplot(312);
    plot(data(:, 2));
  6. 绘制湿度图。

    subplot(313);
    plot(data(:, 3));
  7. 通过清除 TCP/IP 客户端对象关闭该对象与远程主机之间的连接。

    clear t

读取并写入 uint8 数据

此示例显示如何对回显服务器读取和写入 uint8 数据。

  1. 使用本地主机在 Port 7 上创建 tcpclient 对象。

    t = tcpclient('localhost', 7)
    
    t = 
    
       tcpclient with properties:
    
              Address: 'localhost'
                 Port: 7
              Timeout: 10
       BytesAvailable: 0
  2. 为变量 data 分配 10 个字节的 uint8 数据。

    data = uint8(1:10)
    
    data = 
    
      1    2    3    4    5    6    7    8    9    10
  3. 检查数据。

    whos data
    
    Name     Size     Bytes     Class     Attributes
    
    data     1x10        10     uint8
  4. 将数据写入回显服务器。

    write(t, data)
  5. 检查是否使用 BytesAvailable 属性写入了数据。

    t.BytesAvailable
    
    ans = 
    
        10
  6. 从服务器读取数据。

    read(t)
    
    ans = 
    
      1    2    3    4    5    6    7    8    9    10
  7. 通过清除对象来关闭连接。

    clear t