2017-09-28 480 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