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.
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
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?
This should work:
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
This sets up a continuous (and asynchronous) listening over UDP. For more information read this.