Hello tous,
PRINCIPE :
Je dispose d'un soft qui gère la communication zigbee (communication sans fils), les trame zigbee reçue sont parsée et les données utiles extraites. Ces données sont ensuite communiquée à un autre logiciel par l'intermédiaire d'un socket TCP/IP.
Le soft zigbee possède la fonction socket serveur dans son code et écrit sur le socket serveur les données dès réceptions d'un datagramme zigbee.
Le soft destination est lui connecté comme client et récupère donc les données sur le socket avant de les traiter.
PROBLEME :
De manière "aléatoire" (* voir plus bas) j'ai de temps en temps un délais qui apparait entre le data reçu par zigbee et celui lu sur le socket.
Je m'explique :
Imaginon que j'envoie la donée suivante par zigbee : A=20 pendant un temps long.
Je verrai sur le socket la bonne donnée et tout va bien dans les meilleures des mondes.
maintenant imaginons que A=23, côté reception et parsing je vois bien "23" et cette valeur est mise sur le socket. mais sur le socket côté client je lis toujours "20". et ce pendant un temps relativement long. Comme si le socket avait un buffer.
* : note sur "aléatoire" : je ne parviens pas à reproduire le problème à volonté. Il se peut que ça apparaisse après 4h de fonctionnement, comme après 2jours, 2 semaines, voir même 1 mois...
QUESTIONS :
L'idée serait qu'il y a au niveau de ma communication socket un buffer (??) qu'il faudrait que je vide à un certain moment. Est-ce un raisonnement logique?
Si oui comment faire ce flush?? fflush(fd) n'est pas la solution à mon avis, je dois faire un flush du handle et pas du file descriptor.
Quelqu'un a une idée ? une piste?
Merci pour votre aide
Partager