Question

Je joue avec le protocole Firmata qui vous permet de contrôler Arduino via un protocole série. Je lis les valeurs des capteurs à l'aide SerialPortEventListener l'écoute des événements DATA_AVAILABLE. Mais je remarque beaucoup de temps d'attente, il prend une seconde pour les valeurs de capteur mises à jour être enregistré par mon application, le protocole fonctionne à une vitesse de transmission de 57600. Ma question est ne l'écouteur d'événement exécuté sur un thread séparé ou fait à la fois ma demande et run auditeur dans les mêmes choses lentes fil et mon application vers le bas.

EDIT: Pour faire mon auto clair, je vous demande simplement en théorie serait-il plus rapide à lire la transmission série dans un thread séparé ou en utilisant l'écouteur d'événement

?
Était-ce utile?

La solution

Désolé toutes ces réponses, je pense sérieusement à votre problème.

En dehors du problème de la mise à jour de votre interface graphique du fil mal, la question des fils est probablement assez hors de propos. Depuis l'obtention d'une mise à jour de votre port série ne probablement pas consommer beaucoup de puissance CPU (il ne devrait pas, de toute façon, à moins que cela se fait avec une boucle de vote serré) il n'y aura pas de discorde notable pour les ressources CPU entre vos fils, et donc il devrait y avoir aucune possibilité pour les fils d'être « ralentir les uns les autres. » Je serais à peu près cette possibilité de réduction. Mais vous pouvez regarder dans le gestionnaire de tâches (Windows) ou System Monitor (Linux) pour voir si vos processeurs sont gardés très occupés; qui pourrait changer les choses.

Autres conseils

Sans voir votre application que je dois deviner; mais est-il possible que vous essayez d'afficher ces événements dans une interface graphique, et mettre à jour l'interface utilisateur graphique à partir d'un autre thread que le thread de répartition de l'événement?

Comment est le temps d'attente lorsque vous ne System.out.println() simplement?

Une autre supposition: Quand vous obtenez votre événement DATA_AVAILABLE, vous obtenez également des informations sur la quantité de données disponibles

Vous pouvez essayer de lire plus de données que dans la mémoire tampon, et vous ne recevez pas de voir ce que vous avez jusqu'à ce que votre temps de fonctionnement de lecture sur. Cela indiquerait le délai d'attente est fixé à 1 seconde.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top