Bonjour,
J'utilise un périphérique USB, que je "lis" en utilisant la fonction
ssize_t read(int fd , void * buf , size_t count );
Mon problème vient du fait que la "taille de l'information" renvoyée par le device est dynamique (lié a l'activité dans la scène). Lorsque qu'il y a beaucoup d'activité, l'information renvoyée est de taille importante, lorsqu'il y a peu d'activité la taille (le volume) de l'information est petit.
Le problème est que cela joue sur la vitesse de récupération de l'information, plus j'ai d'activité plus l'information arrive vite et inversement. Je pense que cela vient du fait que la fonction read appel la fonction read du device qui essaie que remplir le buffer avec la taille de buffer en paramètre. Du coup quand il n'y a pas assez d'information, ce "temps d'attente" ce ressent.
Afin d'obtenir le maximum d'information en cas d'activité haute, la taille du buffer doit être relativement importante, je ne peux pas jouer sur ce paramètre pour "résoudre" mon problème.
J'ai essayé de modifier "le temps d'attente de remplissage de buffer" en changeant le paramètre "adéquat" dans le driver
1 2 3 4 5
| retval = usb_bulk_msg(dev->udev,
usb_rcvbulkpipe(dev->udev, dev->bulk_in_endpointAddr),
dev->bulk_in_buffer,
bytes_to_read,
&bytes_read, 10/*000*/); |
Mais rien n'y fait, j'ai toujours un ralentissement de la réception de l'information en cas d'activité basse ...
Auriez vous une idée de où cela pourrait provenir ?
Partager