Bonjour,
Je développe une interface en C++ (sous Visual Studio) entre MATLAB et un simulateur de trafic routier. L'interface permettra l’échange de messages entre MATLAB et le simulateur. Je m'excuse par avance s'il s’avère que le problème rencontre est plutôt du cote de C++, auquel cas je demanderai a déplacer le sujet.
MATLAB a la Toolbox Instrument Control.
Actuellement, la partie C++ lit les messages envoyés par MATLAB , mais MATLAB ne reçoit pas les messages envoyés par la partie C++ (le champ ValuesReceived de ma variable tcp indique 0)
Le code MATLAB :
1 2 3
| tcpipServer = tcpip('0.0.0.0',25000,'NetworkRole','Server');
fopen(tcpipServer);
[answer, count, msg]=fread(tcpipServer,4,'double') |
La partie C++
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| /* ... */
try {
IPEndPoint^ ipRemoteEndPoint = gcnew IPEndPoint( IPAddress::Loopback, 25000 );
TcpClient^ tcpClient = gcnew TcpClient();
tcpClient->Connect( ipRemoteEndPoint ); // printf: connection OK
// Get a client stream for reading and writing.
NetworkStream^ stream = tcpClient->GetStream();
// Send the message to the connected TcpServer.
if ( stream->CanWrite ) {
stream->Write( sendBuffer, 0, sendBuffer->Length ); // printf: sendBuffer->Length != 0
}
stream->Close();
tcpClient->Close();
} catch ( Exception^ e ) {
processException(e);
}
/* ... */ |
MATLAB m'indique
The specified amount of data was not returned within the Timeout period.
Lorsque j’échange les rôles expéditeur-destinataire, en remplaçant fread par fwrite, stream->Write par stream->Read, tout semble se passer correctement.
Toute aide sera grandement appréciée
higlander
Partager