指点成金-最美分享吧

登录

UDP接收和发送Matlab

佚名 举报

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

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

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

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

echoudp("on", 25000)u = udp("0.0.0.0", 25000)fopen(u)while TrueA = 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!");endtry    for i = 1:10        fprintf(u,"Hey!");    endcatch e    NetworkError(u,["Communication failed! (" e.message ")"]);endpause(1);NetworkDispose(u);function BytesAvailable_Callback(u,evt) %#ok    data = fscanf(u);    disp("Data Received!");    disp(data);endfunction NetworkDispose(u)      fclose(u);    delete(u);    clear u;    echoudp("off");endfunction NetworkError(u,msg)    NetworkDispose(u);    error(msg);end

这将建立一个连续(和异步)监听UDP。欲了解更多信息,请阅读this。

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