Comment effectuer une lecture non bloquante en utilisant asio?

J'essaie d'utiliser boost::asio à lire et à écrire à partir d'un périphérique sur un port série. Boost::asio:read() et boost::asio::serial_port::read_some() bloc quand il n'y a rien à lire. Au lieu de cela, je voudrais détecter cette condition et d'écrire une commande pour le port de démarrer l'appareil.

Comment puis-je détecter qu'aucune donnée n'est disponible?

Si nécessaire, je peux tout faire de manière asynchrone, je voudrais juste éviter le supplément de complexité, si je peux.

source d'informationauteur Joe Ludwig