Vitesse de communication port série baudrate / différences ?

Bonjour,

Je travaille actuellement sur un projet de robot piloté par un umpc Viliv S5 (application Java) via port serial.

Tout fonctionne très bien pour l'instant (communication grâce à l'API Java RX/TX). Dans mon code arduino, j'utilisais jusqu'à présent le baudrate 115200, idem dans mon code java pour RX/TX.

Depuis peu, j'ai décidé je m'affranchir du cable USB et de passer à une connection bluetooth. J'ai donc acheté un petit module qui est paramétré en 9600 par defaut. Pour je ne sais quelle raison, je n'ai jamais réussi à passer le baudrate à 115200 pour coller à mon code actuel. J'ai donc modifié le code de mon arduino / Java en passant de 115200 à 9600 baud. Ce qui marche parfaitement.

Cependant, je me pose une question depuis le début de mon projet. Je sais que le baudrate influe sur la vitesse d'échange des données. Cependant en passant de 115200 à 9600, je ne vois franchement pas la différence. J'avais d'ailleur à l'époque dû poser un timer dans le code arduino car il envoyé trop d'information à mon application java, qui n'arrivée plus à suivre.
Donc ma question pour résumer: Est-il forcement nécéssaire d'être en 115200 pour avoir un échange rapide ou est-ce que cela est imperceptible?

Merci pour vos réponses.
Le blog de mon projet si cela vous intérésse: http://darylrobotproject.wordpress.com/

Cordialement,

Donc ma question pour résumer: Est-il forcement nécessaire d'être en 115200 pour avoir un échange rapide ou est-ce que cela est imperceptible?

Si on fait abstraction d'une quelconque contrainte temps réel, la vitesse de transmission influe sur le temps que tu mets à transférer les données d'un équipement à l'autre. Donc cela génère du délai entre le moment ou tu envoies les données et le moment ou l'action est effectuée. A toi de voir si ce délai est acceeptable ou non.

Ensuite si tu as beaucoup de données à transmettre et que tu as une contrainte de temps (rafraichir des informations tant de foi par seconde par exemple) si le baudrate est trop bas tu n'aura pas le temps de mettre à jour les données dans le temps imparti. Il faudra donc augmenter le baudrate pour tenir la contrainte "temp réel"

D'accord, j'avais bien cette notion en tête, si débit pas assez important (et quantité de données importante) alors la mise à jour des données sera moins rapide (car trop de données à l'arrivée).
Je pense que dans mon cas je ne vois strictement pas la différence car je ne joue pas avec un grand nombre de données.
Dans ma boucle loop, à différents endroits dans mon code, j'envois au total 5 séquences de 7 caractères toutes les 40 ms (par boucle) si je me souvient bien. Ce qui semble être large vis à vis des 9600 baud par seconde (qui est, si j'ai bien compris, l'envoi de 9600 symbole ou 1 symbole peut être un bit...)

C'est bien ca?

1 start + 8 bits + 1 stop = 10bits ===> 9600 bauds donne 960 caractères par seconde ===> 38,4 caractères par 40ms.
Toi tu envoies 5 * 7 = 35 caractères par 40ms donc tu es près de saturer ta liaison.

fdufnews:
1 start + 8 bits + 1 stop = 10bits ===> 9600 bauds donne 960 caractères par seconde ===> 38,4 caractères par 40ms.
Toi tu envoies 5 * 7 = 35 caractères par 40ms donc tu es près de saturer ta liaison.

Dans la même idée, un caractère (ou octet) envoyé à 115200 mettra 87µs à transiter, en 9600, il mettra 1ms. Ton oeil n'est pas capable de voir la différence entre 1ms et 87µs, pour lui, c'est de l'instantané.

C'est au niveau du traitement qu'il faut voir ça : selon ta vitesse de transmission, tu auras plus ou moins de temps pour traiter un caractère avant l'arrivée du suivant...

Les modules BT type HC-0X doivent être préalablement configurés à la bonne vitesse. Si ça peut t'aider et que tu as ce type de module ...