2008-09-17 4 views
1

J'utilise la bibliothèque RxTx via USBBSERIAL sur une distribution Linux. La librairie RxTx semble se comporter de manière assez différente (de façon négative) de la manière dont elle fonctionne par rapport à la série.De quel thread dois-je traiter l'événement RxTx SerialEvent.DATA_AVAILABLE?

Mon application a plusieurs threads et l'un de mes plus gros problèmes est que, de nulle part, il me semble obtenir un à deux octets supplémentaires sur mon flux. Je n'arrive pas à comprendre d'où ils viennent ni pourquoi. Ce problème semble se produire beaucoup plus fréquemment lorsque j'écris dans le flux RxTx en utilisant un autre thread.

Alors je me demandais si je devrais traiter la lecture sur le thread RxTx actuel ou devrais-je traiter la lecture sur un autre thread lorsque j'obtiens l'événement DATA_AVAILABLE. J'espère que quelqu'un pourrait avoir de bonnes ou de mauvaises raisons de le faire dans un sens ou dans l'autre.

+0

Mise à jour: J'ai découvert la source des octets supplémentaires! Ils proviennent du périphérique USB et ne sont en aucun cas liés au RxTx! Mais ma question concernant le meilleur thread à lire (RxTx ou autre) reste toujours sans réponse! – Jeach

+0

vous devez créer une réponse à votre propre question et la terminer plutôt que d'ajouter un commentaire à la réponse. garde le site un peu plus propre. – Jrud

Répondre

1

Ceci est juste une supposition, mais il peut vous donner un indice.

Est-il possible que l'envoi et la réception partagent un tampon, ou que lorsque vous envoyez, les octets sont également reçus sur l'entrée en quelque sorte - je l'ai déjà vu sur certains systèmes embarqués.

Vous pouvez trouver la meilleure chose à faire est d'abord garder à la fois envoyer et recevoir sur le même fil. Une autre chose peut être de s'assurer que la sortie se vide avant d'essayer de lire.

Espérons que cela puisse vous donner quelques indices.

Questions connexes