2010-08-06 11 views
1

J'utilise la bibliothèque java comm pour écouter les octets arrivant sur un port série. Je l'ai configuré pour async. notification, c'est-à-dire avoir une classe implémentant SerialPortEventListener. Est-il possible de définir le seuil à lequel l'événement SerialPortEvent.DATA_AVAILABLE est appelé. Dans mon cas, la bibliothèque attend environ 20 octets avant de déclencher cet événement, dans mon cas, j'aimerais être averti lorsque les 8 premiers octets ont été reçus.Comment changer javacomm async. comportement de notification?

Merci pour vos réponses.

Répondre

0

Je pense que votre problème peut être le tampon matériel que la plupart (tous?) UART du port série PC ont. IIRC, c'est un minimum de 16 octets. Avez-vous essayé d'appeler disableReceiveThreshold() sur l'objet Port? Cela peut réduire considérablement l'efficacité, en fonction de la façon dont le pilote est mis en œuvre.

+0

Oui j'ai essayé disableReceiveThreshold, je semble toujours obtenir seulement le premier événement de données quand il y a> = 14 octets à lire de l'inputtream, j'aimerais être averti quand j'ai environ 8 octets. – SeanLabs

+0

Que diriez-vous de 'setRcvFifoTrigger()'? Les docs de l'API disent que c'est obsolète parce que c'est "consultatif seulement". Si cela ne fonctionne pas, vous devrez peut-être trouver un moyen de programmer l'UART en utilisant du code natif. –

+0

Si vous ne l'avez pas encore vu: http://stackoverflow.com/questions/3367872/java-serial-comms-way-to-set-receieve-threshold-when-using-async-read-notifica - Cela peut ne pas fournir quelque chose d'utile, cependant. –

Questions connexes