Je lis des données en temps réel via USB, mais les données sont mises en mémoire tampon. Comment arrêter le buffer?Comment arrêter la mise en mémoire tampon USB?
Répondre
Linux
udev pour changer le latency_timer.
Sur Ubuntu, créez une règle dans /etc/udev/rules.d
pour votre périphérique. Par exemple:
Créez une règle dans ce fichier pour qu'elle corresponde à votre périphérique et définissez le paramètre latency_timer. Par exemple, pour mon appareil c'est:
KERNEL=="ttyUSB[0-9]*", SUBSYSTEMS=="usb-serial", DRIVERS=="ftdi_sio", ATTR{device/latency_timer}="2"
Cela provoque le dispositif d'attendre un temps plus court avant de décider il n'y a pas de données plus entrants tampon. Dans ce cas mon appareil est passé de 16ms à attendre 2ms. Par exemple, pour connaître les paires de valeurs-clés à comparer dans votre règle. Il y a des choses difficiles à garder à l'esprit, mais trouver des ressources pour aider les tenants et les aboutissants était facile une fois que j'ai su utiliser les règles d'udev.
Voici une bonne page de référence sur writing udev rules. Il est ancien et la syntaxe des outils udev a changé, mais les concepts sont toujours valables.
de Windows
Sous Windows que vous utilisez Device Manager->Ports->COM Port->Port Settings->Advanced->Latency Timer
.
Désolé pour la réponse zombie, mais pourquoi la modification des paramètres du port COM a-t-elle un effet sur la mise en mémoire tampon des opérations de lecture USB? – Dennis