Untuk benar-benar menjawab pertanyaan Anda, saya biasanya membuang apa pun yang diterima dengan kesalahan. Itu mungkin termasuk menginisialisasi ulang perangkat keras UART, tergantung pada kesalahan apa itu dan rincian perangkat keras UART.
Satu-satunya pengecualian adalah jika Anda ingin menerima istirahat dengan sengaja. Itu muncul sebagai kesalahan pembingkaian. Jika demikian, Anda meneruskan kesalahan pembingkaian ke tingkat yang lebih tinggi sebagai kondisi khusus. Namun, itu membutuhkan informasi dari band untuk diteruskan ke tingkat yang lebih tinggi dan oleh karena itu antarmuka penerima UART tidak dapat dilihat sebagai sesuatu yang sangat sederhana seperti mendapatkan aliran byte. Saya pikir saya telah melakukan ini tepat sekali di banyak proyek mikrokontroler karena itu harus kompatibel dengan sistem lama di mana istirahat digunakan dengan sengaja.
Steven telah memberi Anda beberapa ide bagus apa yang harus dilakukan tentang ini di tingkat yang lebih tinggi. Ketika Anda berpikir ada peluang nyata kesalahan dan integritas data penting, maka Anda biasanya merangkum potongan data ke dalam paket dengan checksum. Penerima mengirim ACK untuk setiap checksum yang diterima dengan benar.
Namun, sebagian besar waktu kesalahan UART sangat tidak mungkin dan tidak sepenuhnya kritis sehingga Anda bisa mengabaikannya di tingkat tinggi. Jenis kesalahan yang dapat ditangkap oleh perangkat keras UART biasanya karena kebodohan operator, bukan derau saluran. Kebanyakan noise akan menyebabkan data buruk, yang tidak akan terdeteksi oleh UART. Jadi pengandar UART tingkat rendah membuang sesuatu yang langsung terkait dengan kesalahan UART, tetapi jika tidak terus meneruskan aliran byte yang diterima hingga ke tingkat berikutnya. Bahkan ia melakukan ini bahkan jika Anda menggunakan paket dan checksum karena itu dilakukan pada tingkat yang lebih tinggi daripada ketika masing-masing byte diterima.