0
点赞
收藏
分享

微信扫一扫

matlab:作为TCP服务器,读取数据 V1版本

大柚子top 2022-03-11 阅读 76
matlab

 *************

*******************

环境:WIN10专业版,64位。 matlab 2019.

***

缺点:速度慢

×××

% 按照下面的IP地址建立一个服务端,0.0.0.0地址可以监听所有的请求的IP地址,所以就不用再写客户端的IP了
tcpip_server= tcpip('0.0.0.0',6000,'NetworkRole','server');

%%同理,接收端也要设置个缓冲区才能存下发过来的数据。
tcpip_server.InputBuffersize=10000;

%打开服务器,直到建立一个TCP连接才返回;
fopen(tcpip_server);

fwrite(tcpip_server,"com_start_ch1");
%fwrite(tcpip_server,"com_test_fs_read");%不需要回车换行

%如果收到了发过来的数据,这个就是可以读取出的数据数量,比如上面的9个数值数据,每个数据占用8个字节,则总共会有72个字节,
%那么此时这个数就是72。如果没有读到,返回0
%tcpip_server.BytesAvailable;

%读取数据。参数’tcpip_server.BytesAvailable/8‘代表着读取几个数据,
%由上文知道共有72字节的数据,那么就有72/8个数据了,全部都读取。
%data= fread(tcpip_server,tcpip_server.BytesAvailable/8,'double')
try_times=25009 ;%尝试读取缓冲区数据的次数,可随意设置;
xunhun_cishu=0;
for i=1:try_times
    %pause(0.01);%每次读取之前等待0.02s,随意设置
    try     %因为fread()在缓冲区没有数据的时候读取会报错,因此用try—catch语句忽略这种错误,直到读取到数据。
        %data_recv=fread(t_server,t_server.BytesAvailable);%从缓冲区读取数字数据
        data_recv=fscanf(tcpip_server,'%s'); %接收文本数据
        disp(data_recv);
        xunhun_cishu=xunhun_cishu+1;
        data_recv1=data_recv1+data_recv;
        if  data_recv=='TestFinish'
            break;
        else
            
        end
    catch
        %tcpip_server.ValuesReceived%查看读取出的数据数量,如果没有读到,返回0;
    end
end
disp(xunhun_cishu);
fclose(tcpip_server);
举报

相关推荐

0 条评论