Bonjour,
Je bute sur un problème de communication TCP.
J'ai un microcontroller qui m'envoie des trame TCP en continu dont les valeur peuvent se modifier au cours du temps.
Actuellement j'arrive à les recevoir mais je rençoie toujours la même trame. Il faut que je coupe la communication et que je la rétablisse pour observer des changement dans les valeur.
Je vous montre le code de ma fonction reception de donné connecté ainsi dans le constructeur
connect(socket, SIGNAL(readyRead()), this, SLOT(slot_DonneesRecues()));
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
|
void Communication::slot_DonneesRecues()
{
QDataStream in(socket);
in.setVersion(QDataStream::Qt_4_0);
if (taille == 0)
{
if (socket->bytesAvailable() < (int)sizeof(quint8))
return;
// in >> taille;
in >> taille;
}
if (socket->bytesAvailable() < taille)
return;
data = new quint8[taille-4];
quint8 IDplage;
in >> IDplage;
quint8 IDcommande;
in >> IDcommande;
quint8 numSerie1;
in >> numSerie1;
quint8 numSerie2;
in >> numSerie2;
QString message;
message =QString::number(taille) +
" " + QString::number(IDplage) +
" " + QString::number(IDcommande) +
" " + QString::number(numSerie1) +
" " + QString::number(numSerie2);
for(int i = 0; i<(taille-4); i++)
{
in >> data[i];
message = message + " " + QString::number(data[i]);
}
textE_reception->insertPlainText(message);
taille=0;
delete [] data;
/*
socket->abort(); // désactivation connexion précédente
socket->connectToHost(lineE_IPServeur->text(), spinB_PortServeur->value()); // On se connecte au serveur demandé
*/
} |
Le fait de rajouté les deux dernières lignes en commentaire permet de rafraichir entre guillement le socket et de voir les données se modifier.
Je n'arrive pas à voir comment je peux faire sans désactiver le socket et le réactiver
Merci beaucoup pour votre aide
VPM
Partager