debit Serial.SendData

bonjour. allez, encore une question de newbie !

je communique avec une api ecrite en C et arduino, via le port série.
vitesse 9600 bauds. atmega328. cette api fait beaucoup de choses, alors j ai mis le dialogue vers arduino dans un timer

arduino est solicité par mon api tous les 20ème de secondes
cette fonction est une solicitation et une lecture de l information recue sur le port série.

à cette requete ( l'envoi de TRois bytes permettant le mot clé "SD/")
Arduino analyse l etat des IO et des analogues par rapport à l'envoi précédent
si changement, il envoie les etats des IO et analogues avec le print d un mot clé (DI/ ou AN/ pour identifier qui ont envoit) pusi le write du buffer correspondant, en bytes.

en faisant des essais comme si avec une méga ( 54 IO ), j ai un ralentissement du rafraichissement des IO, comme si le port était saturé, ou qu il y avait trop de datas envoyé ( 54 + 3 = 57 bytes)
je re-perds des infos ( bouton appuyé ou pas).

est ce normal ?
quel est l usage habituel, et ce que l on peut attendre d arduino ?

voilà pour la question du jour ! :wink:

débit = 9600 bauds
un caractère = 10 bits (un start, 8 bits, un stop)
9600 / 10 = 960 donc 960 caractères par seconde
57 caractères à envoyer
960 / 57 = 16,8

Donc dans le meilleur des cas, tu ne peux envoyer ta trame de valeurs que 16,8 fois par seconde.

Conclusion, tu augmentes le débit ou tu réduis la longueur de la trame émise.

o que c est clair! merci !
donc augmenter la vitesse de com ou créer un protocole moins gourmand... après tout du 0/1 sur les digitaux peut se faire en >>
sur les interfaces dmx enttec on est sur une com de 9600 bauds avec l interface ( chipset FTDI ) et sur 512 bits. ->[EDIT]: oups , 57600 .... :o