2017-09-28 1 views
0

Je travaille actuellement sur la réception de paquets de données d'un appareil externe, puis je vais envoyer des données à un autre appareil. J'ai un modèle Simulink qui fonctionne mais je ne sais pas comment le coder dans Matlab.UDP Recevoir et envoyer Matlab

Les paramètres du bloc récepteur UDP dans Matlab sont présentés dans cette image UDP Receive Parameters

Le code que j'ai à ce jour pour faire le même lien est

echoudp('on', 25000) 
u = udp('0.0.0.0', 25000) 
fopen(u) 
while True 
A = fread(u, 8156, 'unit16') 
end 

Je veux être en mesure de lire les données en continu et l'imprimer. Cependant le fread ne me donne aucune donnée mais le modèle simulink fonctionne bien. Une idée d'où je vais mal?

Répondre

0

Cela devrait fonctionner:

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 

Ceci met en place un processus continu (et asynchrone) écoute sur UDP. Pour plus d'informations, lisez this.