higlander | Bonjour,
Je developpe une interface en C++ (sous Visual Studio) entre Matlab et un simulateur de trafic routier. L'interface permettra l'echange de messages entre Matlab et le simulateur. Je m'excuse par avance s'il s'avere que le probleme rencontre est plutot du cote de Matlab, auquel cas je demanderai a deplacer le sujet.
Matlab a la toolbox Instrument Control qui permet de gerer le protocole TCP.
Actuellement, la partie C++ lit les messages envoyes par Matlab, mais Matlab ne recoit pas les messages envoyes par la partie C++.
Le code Matlab :
Code :
- tcpipServer = tcpip('127.0.0.1',25000,'NetworkRole','Server');
- fopen(tcpipServer);
- [answer, count, msg]=fread(tcpipServer,4,'double')
|
La partie C++
Code :
- /* ... */
- 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
Code :
- >> [answer, count, msg]=fread(tcpipServer, 4, 'double')
- answer =
- Empty matrix: 1-by-0
- count =
- 0
- msg =
- The specified amount of data was not returned within the Timeout period.
|
Lorsque j'echange les roles expediteur-destinataire, en remplacant fread par fwrite, stream->Write() par stream->Read(), tout semble se passer correctement. Toute aide sera grandement appreciee
higlander |