Cet article fournit un exemple simple de communication réseau avec Matlab par l’intermédiaire de socket TCP/IP (réalisé avec Matlab R2012b). Dans cet exemple, l’émetteur est exécuté sur un ordinateur dont l’adresse IP est 192.168.0.10. Le récepteur est exécuté sur une autre machine ayant pour adresse IP 192.168.0.44. La communication est réalisée sur le port 4013. Changez ces paramètre pour adapter le script à votre configuration. Vérifier sur chaque ordinateur que le pare-feu ne bloque pas ce port. Le récepteur doit être lancé en premier.
Le script Matlab ci-dessous envoie 10 sockets espacées de 500ms :
%% Matlab script for testing TCP/IP communication with matlab
%% This script is the sender part
%% Written by Philippe Lucidarme
%% https://lucidar.me/en/networks/matlab-tcp-ip-sender-and-receiver/
%% TCP/IP Sender
% Clear console and workspace
clc;
clear all;
close all;Le récepteur doit être en train d’écouter le réseau lorsque l’émetteur est exécuté sinon la connexion ne pourra pas se faire. Notons que cet exemple peut fonctionner sur une seule machine avec deux instances de Matlab démarrées : modifier l’adresse IP pour la remplacer par 127.0.0.1 dans les deux scripts. Le récepteur devrait afficher les valeurs reçues suivantes:
% Configuration and connection
t = tcpip('192.168.0.44',4013);
% Open socket and wait before sending data
fopen(t);
pause(0.2);
% Send data every 500ms
for i=0:10
DataToSend=[i;i]
fwrite(t,DataToSend);
pause (0.5);
end
% Close and delete connection
fclose(t);
delete(t);
Le récepteur attends 10 sockets après configuration :
%% Matlab script for testing TCP/IP communication with matlab
%% This script is the receiver part
%% Written by Philippe Lucidarme
%% https://lucidar.me/en/networks/matlab-tcp-ip-sender-and-receiver/
%% TCP/IP Receiver
% Clear console and workspace
close all;
clear all;
clc;
% Configuration and connection
disp ('Receiver started');
t=tcpip('192.168.0.10', 4013,'NetworkRole','server');
% Wait for connection
disp('Waiting for connection');
fopen(t);
disp('Connection OK');
% Read data from the socket
for i=0:10
DataReceived=fread(t,2)
end
Le récepteur doit être en train d’écouter le réseau lorsque l’émetteur est exécuté sinon la connexion ne pourra pas se faire. Notons que cet exemple peut fonctionner sur une seule machine avec deux instances de Matlab démarrées : modifier l’adresse IP pour la remplacer par 127.0.0.1 dans les deux scripts. Le récepteur devrait afficher les valeurs reçues suivantes :
Les deux scripts (récepteur et émetteur) peuvent être téléchargés ci-dessous :