UDP收发Matlab [英] UDP Receive and Send Matlab
问题描述
我目前正在努力从外部设备接收数据包,然后无法将数据发送到另一个设备.我有一个可用的Simulink模型,但是我不知道如何在Matlab中编写代码.
I am currently working on receiving packets of data from an external device and then ill be sending data to another device. I having a working Simulink model however i don't know how to code it in Matlab.
此图中显示了Matlab中UDP接收块的参数 UDP接收参数
The parameters for the UDP receive block in Matlab are shown in this image UDP Receive Parameters
到目前为止,我用于建立相同链接的代码是
The code I have so far for making the same link is
echoudp('on', 25000)
u = udp('0.0.0.0', 25000)
fopen(u)
while True
A = fread(u, 8156, 'unit16')
end
我希望能够连续读取数据并将其打印出来.但是,fread并没有给我任何数据,但是simulink模型可以正常工作.知道我要去哪里错了吗?
I want to be able to read the data continuously and print it out. However the fread is giving me no data what so ever but the simulink model works fine. Any idea where i am going wrong?
推荐答案
这应该有效:
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 sets up a continuous (and asynchronous) listening over UDP. For more information read this.
这篇关于UDP收发Matlab的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!