2017-09-28 517 views
0

我目前正在接收来自外部设备的数据包,然后生病发送数据到另一个设备。我有一个有效的Simulink模型,但是我不知道如何在Matlab中进行编码。UDP接收和发送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

这应该工作:

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