UDP接收和发送Matlab

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UDP接收和发送Matlab相关的知识,希望对你有一定的参考价值。

我目前正致力于从外部设备接收数据包,然后将数据发送到另一台设备。我有一个工作的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模型工作得很好。知道我哪里错了吗?

答案

这应该工作:

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

以上是关于UDP接收和发送Matlab的主要内容,如果未能解决你的问题,请参考以下文章

UDP 发送和接收

未使用 PYQT5 多播 UDP 接收数据报

发送和接收UDP数据包

Java:通过 TCP 发送/接收数据并从 UDP 接收图像

在UDP Socket java android上发送和接收数据

我用udp发送一个16进制包,接收端怎么解析。