UDP接收和发送Matlab

时间:2017-09-28 01:02:07

标签: matlab sockets udp

我目前正致力于从外部设备接收数据包,然后将数据发送到另一台设备。我有一个工作的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 :(得分: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

这将建立通过UDP的连续(和异步)侦听。有关详细信息,请阅读this