Bonjour,

J'utilise un périphérique USB, que je "lis" en utilisant la fonction
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 ?