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