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的主要内容,如果未能解决你的问题,请参考以下文章
Java:通过 TCP 发送/接收数据并从 UDP 接收图像