Communication TCP Matlab-C++ - C++ - Programmation
Marsh Posté le 07-09-2012 à 17:13:31
Je progresse (ou pas).
Wireshark m'indique
*) si je n'envoie qu'un seul message (sens C++ -> Matlab):
Code :
|
Le message semble correctement envoye, mais ma variable tcpip cote Matlab n'a pas change (BytesAvailable = 0).
*) si j'envoie 10 messages (C++ -> Matlab)
Code :
|
etc (7 sequences de ce type en plus), Seq progresse de 1352 a chaque fois.
Les logs montrent que les checksum des envois ne sont pas bons (ce qui expliquerait les TCP retransmission ?).
Mais Matlab recoit des donnees !
J'ai alors pense a un probleme de buffer qui devrait etre rempli pour que Matlba puisse acceder aux donnees ; j'envoie un unique message en le completant pour qu'il soit 10 fois plus gros que sa version originale. Matlab ne recoit rien...
Je continue mes recherches...
Marsh Posté le 10-09-2012 à 17:39:29
J'arrive a faire marcher le bousin en mettant une attente avant l'envoi cote C++ :
Code :
|
300 millisecondes semble stable. Je ne trouve pas ca tres propre, mais j'avoue ne plus avoir d'idees.
Marsh Posté le 12-09-2012 à 10:41:52
tu devrais pê tester la valeur de retour de fopen dans matlab ?
sinon ton matlab est configuré en serveur, il devrait pê être client aussi ? à voir dans la spec des libs de matlab
Marsh Posté le 17-09-2012 à 17:46:17
Merci, je vais creuser la valeur de retour de fopen, qui ne semble pas fonctionner exactement de la meme facon lorsqu'il s'agit d'un fichier ou d'une connexion.
Code :
|
Marsh Posté le 05-09-2012 à 15:04:13
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 :
La partie C++
Matlab m'indique
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