首页 文章

UDP接收和发送Matlab

提问于
浏览
0

我目前正致力于从外部设备接收数据包,然后将数据发送到另一台设备 . 我有一个工作的Simulink模型,但我不知道如何在Matlab中编码 .

Matlab中UDP接收块的参数如下图所示UDP Receive Parameters

到目前为止我用来制作相同链接的代码是

echoudp('on', 25000)
u = udp('0.0.0.0', 25000)
fopen(u)
while True
A = fread(u, 8156, 'unit16')
end

我希望能够连续读取数据并将其打印出来 . 然而,fread并没有给我任何数据,但是simulink模型工作得很好 . 知道我哪里错了吗?

1 回答

  • 0

    这应该工作:

    clc();
    
    echoudp('on',25000);
    
    u = udp('127.0.0.1',25000);
    u.InputBufferSize = 10000;
    u.OutputBufferSize = 10000;
    u.ReadAsyncMode = 'continuous';
    u.BytesAvailableFcn = @BytesAvailable_Callback;
    u.BytesAvailableFcnMode = 'terminator';
    
    fopen(u);
    
    if (~strcmp(u.Status,'open'))
        NetworkError(u,'Connection failed!');
    end
    
    try
        for i = 1:10
            fprintf(u,'Hey!');
        end
    catch e
        NetworkError(u,['Communication failed! (' e.message ')']);
    end
    
    pause(1);
    
    NetworkDispose(u);
    
    function BytesAvailable_Callback(u,evt) %#ok<INUSD>
        data = fscanf(u);
        disp('Data Received!');
        disp(data);
    end
    
    function NetworkDispose(u)  
        fclose(u);
        delete(u);
        clear u;
    
        echoudp('off');
    end
    
    function NetworkError(u,msg)
        NetworkDispose(u);
        error(msg);
    end
    

    这将 Build 一个连续(和异步)监听UDP . 有关更多信息,请阅读this .

相关问题