Để thực sự trả lời câu hỏi của bạn, tôi thường loại bỏ bất cứ thứ gì nhận được có lỗi. Điều đó có thể bao gồm khởi tạo lại phần cứng UART, tùy thuộc vào lỗi đó và chi tiết của phần cứng UART.
Ngoại lệ duy nhất là nếu bạn muốn cố tình nhận được nghỉ. Những người hiển thị như là lỗi khung. Trong trường hợp đó, bạn chuyển các lỗi định khung lên đến các mức cao hơn như các điều kiện đặc biệt. Tuy nhiên, điều đó đòi hỏi thông tin ngoài băng phải được chuyển đến các cấp cao hơn và do đó giao diện máy thu UART không thể được xem là một thứ khá đơn giản như nhận được một luồng byte. Tôi nghĩ rằng tôi đã thực hiện điều này chính xác một lần trong nhiều dự án vi điều khiển bởi vì nó phải tương thích với một hệ thống cũ, nơi các ngắt được sử dụng có chủ ý.
Steven đã cho bạn một số ý tưởng tốt để làm gì về điều này ở cấp độ cao hơn. Khi bạn nghĩ rằng có khả năng thực sự xảy ra lỗi và tính toàn vẹn dữ liệu là quan trọng, thì bạn thường đóng gói các khối dữ liệu vào các gói bằng tổng kiểm tra. Người nhận sẽ gửi một ACK cho mỗi tổng kiểm tra nhận được chính xác.
Tuy nhiên, phần lớn các lỗi UART rất khó xảy ra và không hoàn toàn nghiêm trọng đến mức bạn có thể bỏ qua chúng ở cấp độ cao. Các loại lỗi mà phần cứng UART có thể mắc phải thường là do sự ngu ngốc của người vận hành, không phải do nhiễu đường truyền. Giống như tiếng ồn sẽ gây ra dữ liệu xấu, mà UART sẽ không phát hiện ra. Vì vậy, trình điều khiển UART mức thấp sẽ loại bỏ bất cứ thứ gì ngay lập tức liên quan đến lỗi UART, nhưng nếu không thì tiếp tục truyền luồng byte nhận được lên cấp độ tiếp theo. Trong thực tế, nó thực hiện điều này ngay cả khi bạn đang sử dụng các gói và tổng kiểm tra vì việc đó được thực hiện ở mức cao hơn so với nơi nhận từng byte riêng lẻ.