Matlab - TCP/IP通讯

Matlab - 上位机TCP/IP通讯

Function Description
tcplicent 创建TCP/IP客户端对象,以用于TCP/IP进行通信
read 通过TCP/IP读取远程主机上的数据
write 通过TCP/IP向远程主机传输数据

创建TCP/IP连接

参考链接

使用主机名创建对象

t = tcpclient("www.maths.com",80);
/*当使用主机名(例如指定的 Web 地址或 'localhost')连接时,将根据网络接口的配置解析 IP 地址。其结果可能会将地址解析为 IPv4 地址或 IPv6 地址。如果 TCP/IP 服务器只接受传入连接为某种类型的地址,例如 IPv4 地址,则在创建客户端时可能需要使用显式 IP 地址,而不是主机名。*/

使用IP地址创建对象

t = tcpclient('172.28.154.231', 4012);
/*使用IP,port建立TCP/IP对象*/

Timeout

t = tcpclient('172.28.154.231', 4012, 'Timeout', 20);
/*指定读写操作的等待时间(以秒为单位)*/
/*Timeout 不设置时,默认为10*/
/*如果指定的地址或端口无效,或者无法建立与服务器的连接,则不会创建对象。*/

ConnectTimeout

t = tcpclient('172.28.154.231', 4012, 'ConnectTimeout', 10)
/*指定对远程主机的连接请求是成功还是失败的最长时间(以秒为单位)*/
/*此参数数值仅可以在创建期间修改,*/
/*如果指定的地址或端口无效,或者无法建立与服务器的连接,则不会创建对象。*/

创建后对 Client的修改

<object_name>.<property_name> = <property_value>;
t.Timeout = 30;

读取和写入数据

read

read(t)                 //读取所有发送的发送的数据。

read(t, 5)              //仅读取五个字节的数。

read(t, 10, 'double')   //读取十个字节的数据,并且转化为double类型。

write

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

data = 1:10;     //创建数组data
write(t, data);  //输出数据

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

read and write

>>t = tcplicent('172.28.154.231',1045)       //创建TCP/IP Client

>>data = uint8(1:10)                       //创建data数组

>>whos data                               //检查data数据
Name     Size     Bytes     Class     Attributes

data     1x10        10     uint8

>>write(t, data)                            //发送data数据

>>t.BytesAvailable                          //检查是否使用BytesAvailable属性写入了数据

ans = 

    10
    
>>read(t)                                   //从服务器读取数据

ans = 

  1    2    3    4    5    6    7    8    9    10
  
>>clear t                                   //清楚tcp/ip对象 t      
  


从服务器获取数据

t = tcpclient('172.28.154.231', 1045)       //创建TCP/IP Client


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

data = reshape(data, [3, 10]);
/*将 1×30 数据重构为 10×3 数据,各用一列来显示温度、压力和湿度。*/

subplot(311);                           //绘制温度图。
plot(data(:, 1));

subplot(312);                           //绘制压力图。
plot(data(:, 2));

subplot(313);                           //绘制湿度图。
plot(data(:, 3));

clear t                                 //清除对象断开连接

关闭TCP/IP连接

clear <Objectname>;

上一篇:我只需要关心它的流,就必须存储一个TcpClient吗?


下一篇:任务管理器中的内存使用率是否不断增加