Pour réellement répondre à votre question, je rejette généralement tout ce qui a été reçu avec erreur. Cela peut inclure la réinitialisation du matériel UART, en fonction de l'erreur et des détails du matériel UART.
La seule exception est si vous souhaitez recevoir délibérément des pauses. Ceux-ci apparaissent comme des erreurs de cadrage. Dans ce cas, vous transmettez les erreurs de cadrage aux niveaux supérieurs comme conditions spéciales. Cependant, cela nécessite que les informations hors bande soient transmises aux niveaux supérieurs et, par conséquent, l'interface du récepteur UART ne peut pas être considérée comme quelque chose d'aussi simple que d'obtenir un flux d'octets. Je pense que je l'ai fait exactement une fois dans de nombreux projets de microcontrôleurs car il devait être compatible avec un ancien système où les pauses étaient utilisées délibérément.
Steven vous a donné de bonnes idées sur ce qu'il faut faire à ce niveau supérieur. Lorsque vous pensez qu'il existe un risque réel d'erreurs et que l'intégrité des données est importante, vous encapsulez généralement des morceaux de données dans des paquets avec des sommes de contrôle. Le récepteur envoie un ACK pour chaque somme de contrôle correctement reçue.
Cependant, la grande majorité des erreurs UART sont si peu probables et pas absolument critiques que vous pouvez simplement les ignorer au niveau élevé. Le type d'erreurs que le matériel UART peut détecter est généralement dû à la stupidité de l'opérateur, pas au bruit de ligne. La plupart comme le bruit entraînera de mauvaises données, que l'UART ne détectera pas. Ainsi, le pilote UART de bas niveau rejette tout ce qui est immédiatement associé à une erreur UART, mais continue sinon à transmettre le flux d'octets reçus au niveau suivant. En fait, il le fait même si vous utilisez des paquets et des sommes de contrôle, car cela se fait à un niveau supérieur à celui où les octets individuels sont reçus.